Skip to content

Commit ffa77bc

Browse files
committed
LAPACKE Aasen 2 stage...
1 parent cc6acdc commit ffa77bc

40 files changed

Lines changed: 3896 additions & 3 deletions

LAPACKE/include/lapacke.h

Lines changed: 308 additions & 0 deletions
Large diffs are not rendered by default.

LAPACKE/src/CMakeLists.txt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,9 @@ lapacke_cherfs_work.c
214214
lapacke_chesv.c
215215
lapacke_chesv_work.c
216216
lapacke_chesv_aa.c
217+
lapacke_chesv_aa_2stage.c
217218
lapacke_chesv_aa_work.c
219+
lapacke_chesv_aa_2stage_work.c
218220
lapacke_chesv_rk.c
219221
lapacke_chesv_rk_work.c
220222
lapacke_chesvx.c
@@ -228,7 +230,9 @@ lapacke_chetrf_rook.c
228230
lapacke_chetrf_work.c
229231
lapacke_chetrf_rook_work.c
230232
lapacke_chetrf_aa.c
233+
lapacke_chetrf_aa_2stage.c
231234
lapacke_chetrf_aa_work.c
235+
lapacke_chetrf_aa_2stage_work.c
232236
lapacke_chetrf_rk.c
233237
lapacke_chetrf_rk_work.c
234238
lapacke_chetri.c
@@ -246,7 +250,9 @@ lapacke_chetrs2_work.c
246250
lapacke_chetrs_work.c
247251
lapacke_chetrs_rook_work.c
248252
lapacke_chetrs_aa.c
253+
lapacke_chetrs_aa_2stage.c
249254
lapacke_chetrs_aa_work.c
255+
lapacke_chetrs_aa_2stage_work.c
250256
lapacke_chetrs_3.c
251257
lapacke_chetrs_3_work.c
252258
lapacke_chfrk.c
@@ -446,7 +452,9 @@ lapacke_csysv_rook.c
446452
lapacke_csysv_rook_work.c
447453
lapacke_csysv_work.c
448454
lapacke_csysv_aa.c
455+
lapacke_csysv_aa_2stage.c
449456
lapacke_csysv_aa_work.c
457+
lapacke_csysv_aa_2stage_work.c
450458
lapacke_csysv_rk.c
451459
lapacke_csysv_rk_work.c
452460
lapacke_csysvx.c
@@ -458,7 +466,9 @@ lapacke_csytrf_work.c
458466
lapacke_csytrf_rook.c
459467
lapacke_csytrf_rook_work.c
460468
lapacke_csytrf_aa.c
469+
lapacke_csytrf_aa_2stage.c
461470
lapacke_csytrf_aa_work.c
471+
lapacke_csytrf_aa_2stage_work.c
462472
lapacke_csytrf_rk.c
463473
lapacke_csytrf_rk_work.c
464474
lapacke_csytri.c
@@ -476,7 +486,9 @@ lapacke_csytrs2_work.c
476486
lapacke_csytrs_work.c
477487
lapacke_csytrs_rook_work.c
478488
lapacke_csytrs_aa.c
489+
lapacke_csytrs_aa_2stage.c
479490
lapacke_csytrs_aa_work.c
491+
lapacke_csytrs_aa_2stage_work.c
480492
lapacke_csytrs_3.c
481493
lapacke_csytrs_3_work.c
482494
lapacke_ctbcon.c
@@ -1040,7 +1052,9 @@ lapacke_dsysv_rook.c
10401052
lapacke_dsysv_rook_work.c
10411053
lapacke_dsysv_work.c
10421054
lapacke_dsysv_aa.c
1055+
lapacke_dsysv_aa_2stage.c
10431056
lapacke_dsysv_aa_work.c
1057+
lapacke_dsysv_aa_2stage_work.c
10441058
lapacke_dsysv_rk.c
10451059
lapacke_dsysv_rk_work.c
10461060
lapacke_dsysvx.c
@@ -1054,7 +1068,9 @@ lapacke_dsytrf_work.c
10541068
lapacke_dsytrf_rook.c
10551069
lapacke_dsytrf_rook_work.c
10561070
lapacke_dsytrf_aa.c
1071+
lapacke_dsytrf_aa_2stage.c
10571072
lapacke_dsytrf_aa_work.c
1073+
lapacke_dsytrf_aa_2stage_work.c
10581074
lapacke_dsytrf_rk.c
10591075
lapacke_dsytrf_rk_work.c
10601076
lapacke_dsytri.c
@@ -1070,7 +1086,9 @@ lapacke_dsytrs_rook.c
10701086
lapacke_dsytrs2.c
10711087
lapacke_dsytrs2_work.c
10721088
lapacke_dsytrs_aa.c
1089+
lapacke_dsytrs_aa_2stage.c
10731090
lapacke_dsytrs_aa_work.c
1091+
lapacke_dsytrs_aa_2stage_work.c
10741092
lapacke_dsytrs_3.c
10751093
lapacke_dsytrs_3_work.c
10761094
lapacke_dsytrs_work.c
@@ -1594,6 +1612,8 @@ lapacke_ssysv_rook_work.c
15941612
lapacke_ssysv_work.c
15951613
lapacke_ssysv_aa.c
15961614
lapacke_ssysv_aa_work.c
1615+
lapacke_ssysv_aa_2stage.c
1616+
lapacke_ssysv_aa_2stage_work.c
15971617
lapacke_ssysv_rk.c
15981618
lapacke_ssysv_rk_work.c
15991619
lapacke_ssysvx.c
@@ -1607,7 +1627,9 @@ lapacke_ssytrf_work.c
16071627
lapacke_ssytrf_rook.c
16081628
lapacke_ssytrf_rook_work.c
16091629
lapacke_ssytrf_aa.c
1630+
lapacke_ssytrf_aa_2stage.c
16101631
lapacke_ssytrf_aa_work.c
1632+
lapacke_ssytrf_aa_2stage_work.c
16111633
lapacke_ssytrf_rk.c
16121634
lapacke_ssytrf_rk_work.c
16131635
lapacke_ssytri.c
@@ -1623,7 +1645,9 @@ lapacke_ssytrs_rook.c
16231645
lapacke_ssytrs2.c
16241646
lapacke_ssytrs2_work.c
16251647
lapacke_ssytrs_aa.c
1648+
lapacke_ssytrs_aa_2stage.c
16261649
lapacke_ssytrs_aa_work.c
1650+
lapacke_ssytrs_aa_2stage_work.c
16271651
lapacke_ssytrs_3.c
16281652
lapacke_ssytrs_3_work.c
16291653
lapacke_ssytrs_work.c
@@ -1917,7 +1941,9 @@ lapacke_zherfs_work.c
19171941
lapacke_zhesv.c
19181942
lapacke_zhesv_work.c
19191943
lapacke_zhesv_aa.c
1944+
lapacke_zhesv_aa_2stage.c
19201945
lapacke_zhesv_aa_work.c
1946+
lapacke_zhesv_aa_2stage_work.c
19211947
lapacke_zhesv_rk.c
19221948
lapacke_zhesv_rk_work.c
19231949
lapacke_zhesvx.c
@@ -1931,7 +1957,9 @@ lapacke_zhetrf_rook.c
19311957
lapacke_zhetrf_work.c
19321958
lapacke_zhetrf_rook_work.c
19331959
lapacke_zhetrf_aa.c
1960+
lapacke_zhetrf_aa_2stage.c
19341961
lapacke_zhetrf_aa_work.c
1962+
lapacke_zhetrf_aa_2stage_work.c
19351963
lapacke_zhetrf_rk.c
19361964
lapacke_zhetrf_rk_work.c
19371965
lapacke_zhetri.c
@@ -1948,7 +1976,9 @@ lapacke_zhetrs2.c
19481976
lapacke_zhetrs2_work.c
19491977
lapacke_zhetrs_work.c
19501978
lapacke_zhetrs_aa.c
1979+
lapacke_zhetrs_aa_2stage.c
19511980
lapacke_zhetrs_aa_work.c
1981+
lapacke_zhetrs_aa_2stage_work.c
19521982
lapacke_zhetrs_3.c
19531983
lapacke_zhetrs_3_work.c
19541984
lapacke_zhetrs_rook_work.c
@@ -2149,7 +2179,9 @@ lapacke_zsysv_rook.c
21492179
lapacke_zsysv_rook_work.c
21502180
lapacke_zsysv_work.c
21512181
lapacke_zsysv_aa.c
2182+
lapacke_zsysv_aa_2stage.c
21522183
lapacke_zsysv_aa_work.c
2184+
lapacke_zsysv_aa_2stage_work.c
21532185
lapacke_zsysv_rk.c
21542186
lapacke_zsysv_rk_work.c
21552187
lapacke_zsysvx.c
@@ -2161,7 +2193,9 @@ lapacke_zsytrf_work.c
21612193
lapacke_zsytrf_rook.c
21622194
lapacke_zsytrf_rook_work.c
21632195
lapacke_zsytrf_aa.c
2196+
lapacke_zsytrf_aa_2stage.c
21642197
lapacke_zsytrf_aa_work.c
2198+
lapacke_zsytrf_aa_2stage_work.c
21652199
lapacke_zsytrf_rk.c
21662200
lapacke_zsytrf_rk_work.c
21672201
lapacke_zsytri.c
@@ -2179,7 +2213,9 @@ lapacke_zsytrs2_work.c
21792213
lapacke_zsytrs_work.c
21802214
lapacke_zsytrs_rook_work.c
21812215
lapacke_zsytrs_aa.c
2216+
lapacke_zsytrs_aa_2stage.c
21822217
lapacke_zsytrs_aa_work.c
2218+
lapacke_zsytrs_aa_2stage_work.c
21832219
lapacke_zsytrs_3.c
21842220
lapacke_zsytrs_3_work.c
21852221
lapacke_ztbcon.c

LAPACKE/src/Makefile

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,9 @@ lapacke_chetrf_rook.o \
267267
lapacke_chetrf_work.o \
268268
lapacke_chetrf_rook_work.o \
269269
lapacke_chetrf_aa.o \
270+
lapacke_chetrf_aa_2stage.o \
270271
lapacke_chetrf_aa_work.o \
272+
lapacke_chetrf_aa_2stage_work.o \
271273
lapacke_chetrf_rk.o \
272274
lapacke_chetrf_rk_work.o \
273275
lapacke_chetri.o \
@@ -285,7 +287,9 @@ lapacke_chetrs2_work.o \
285287
lapacke_chetrs_work.o \
286288
lapacke_chetrs_rook_work.o \
287289
lapacke_chetrs_aa.o \
290+
lapacke_chetrs_aa_2stage.o \
288291
lapacke_chetrs_aa_work.o \
292+
lapacke_chetrs_aa_2stage_work.o \
289293
lapacke_chetrs_3.o \
290294
lapacke_chetrs_3_work.o \
291295
lapacke_chfrk.o \
@@ -497,7 +501,9 @@ lapacke_csytrf_work.o \
497501
lapacke_csytrf_rook.o \
498502
lapacke_csytrf_rook_work.o \
499503
lapacke_csytrf_aa.o \
504+
lapacke_csytrf_aa_2stage.o \
500505
lapacke_csytrf_aa_work.o \
506+
lapacke_csytrf_aa_2stage_work.o \
501507
lapacke_csytrf_rk.o \
502508
lapacke_csytrf_rk_work.o \
503509
lapacke_csytri.o \
@@ -515,7 +521,9 @@ lapacke_csytrs2_work.o \
515521
lapacke_csytrs_work.o \
516522
lapacke_csytrs_rook_work.o \
517523
lapacke_csytrs_aa.o \
524+
lapacke_csytrs_aa_2stage.o \
518525
lapacke_csytrs_aa_work.o \
526+
lapacke_csytrs_aa_2stage_work.o \
519527
lapacke_csytrs_3.o \
520528
lapacke_csytrs_3_work.o \
521529
lapacke_ctbcon.o \
@@ -1093,7 +1101,8 @@ lapacke_dsytrf_work.o \
10931101
lapacke_dsytrf_rook.o \
10941102
lapacke_dsytrf_rook_work.o \
10951103
lapacke_dsytrf_aa.o \
1096-
lapacke_dsytrf_aa_work.o \
1104+
lapacke_dsytrf_aa_2stage.o \
1105+
lapacke_dsytrf_aa_2stage_work.o \
10971106
lapacke_dsytrf_rk.o \
10981107
lapacke_dsytrf_rk_work.o \
10991108
lapacke_dsytri.o \
@@ -1113,7 +1122,9 @@ lapacke_dsytrs2_work.o \
11131122
lapacke_dsytrs_work.o \
11141123
lapacke_dsytrs_rook_work.o \
11151124
lapacke_dsytrs_aa.o \
1125+
lapacke_dsytrs_aa_2stage.o \
11161126
lapacke_dsytrs_aa_work.o \
1127+
lapacke_dsytrs_aa_2stage_work.o \
11171128
lapacke_dsytrs_3.o \
11181129
lapacke_dsytrs_3_work.o \
11191130
lapacke_dtbcon.o \
@@ -1635,6 +1646,8 @@ lapacke_ssysv_rook_work.o \
16351646
lapacke_ssysv_work.o \
16361647
lapacke_ssysv_aa.o \
16371648
lapacke_ssysv_aa_work.o \
1649+
lapacke_ssysv_aa_2stage.o \
1650+
lapacke_ssysv_aa_2stage_work.o \
16381651
lapacke_ssysv_rk.o \
16391652
lapacke_ssysv_rk_work.o \
16401653
lapacke_ssysvx.o \
@@ -1648,7 +1661,8 @@ lapacke_ssytrf_work.o \
16481661
lapacke_ssytrf_rook.o \
16491662
lapacke_ssytrf_rook_work.o \
16501663
lapacke_ssytrf_aa.o \
1651-
lapacke_ssytrf_aa_work.o \
1664+
lapacke_ssytrf_aa_2stage.o \
1665+
lapacke_ssytrf_aa_2stage_work.o \
16521666
lapacke_ssytrf_rk.o \
16531667
lapacke_ssytrf_rk_work.o \
16541668
lapacke_ssytri.o \
@@ -1666,7 +1680,9 @@ lapacke_ssytrs2_work.o \
16661680
lapacke_ssytrs_work.o \
16671681
lapacke_ssytrs_rook_work.o \
16681682
lapacke_ssytrs_aa.o \
1683+
lapacke_ssytrs_aa_2stage.o \
16691684
lapacke_ssytrs_aa_work.o \
1685+
lapacke_ssytrs_aa_2stage_work.o \
16701686
lapacke_ssytrs_3.o \
16711687
lapacke_ssytrs_3_work.o \
16721688
lapacke_stbcon.o \
@@ -1972,7 +1988,9 @@ lapacke_zhetrf_rook.o \
19721988
lapacke_zhetrf_work.o \
19731989
lapacke_zhetrf_rook_work.o \
19741990
lapacke_zhetrf_aa.o \
1991+
lapacke_zhetrf_aa_2stage.o \
19751992
lapacke_zhetrf_aa_work.o \
1993+
lapacke_zhetrf_aa_2stage_work.o \
19761994
lapacke_zhetrf_rk.o \
19771995
lapacke_zhetrf_rk_work.o \
19781996
lapacke_zhetri.o \
@@ -1990,7 +2008,9 @@ lapacke_zhetrs2_work.o \
19902008
lapacke_zhetrs_work.o \
19912009
lapacke_zhetrs_rook_work.o \
19922010
lapacke_zhetrs_aa.o \
2011+
lapacke_zhetrs_aa_2stage.o \
19932012
lapacke_zhetrs_aa_work.o \
2013+
lapacke_zhetrs_aa_2stage_work.o \
19942014
lapacke_zhetrs_3.o \
19952015
lapacke_zhetrs_3_work.o \
19962016
lapacke_zhfrk.o \
@@ -2202,7 +2222,9 @@ lapacke_zsytrf_work.o \
22022222
lapacke_zsytrf_rook.o \
22032223
lapacke_zsytrf_rook_work.o \
22042224
lapacke_zsytrf_aa.o \
2225+
lapacke_zsytrf_aa_2stage.o \
22052226
lapacke_zsytrf_aa_work.o \
2227+
lapacke_zsytrf_aa_2stage_work.o \
22062228
lapacke_zsytrf_rk.o \
22072229
lapacke_zsytrf_rk_work.o \
22082230
lapacke_zsytri.o \
@@ -2220,7 +2242,9 @@ lapacke_zsytrs2_work.o \
22202242
lapacke_zsytrs_work.o \
22212243
lapacke_zsytrs_rook_work.o \
22222244
lapacke_zsytrs_aa.o \
2245+
lapacke_zsytrs_aa_2stage.o \
22232246
lapacke_zsytrs_aa_work.o \
2247+
lapacke_zsytrs_aa_2stage_work.o \
22242248
lapacke_zsytrs_3.o \
22252249
lapacke_zsytrs_3_work.o \
22262250
lapacke_ztbcon.o \
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*****************************************************************************
2+
Copyright (c) 2014, Intel Corp.
3+
All rights reserved.
4+
5+
Redistribution and use in source and binary forms, with or without
6+
modification, are permitted provided that the following conditions are met:
7+
8+
* Redistributions of source code must retain the above copyright notice,
9+
this list of conditions and the following disclaimer.
10+
* Redistributions in binary form must reproduce the above copyright
11+
notice, this list of conditions and the following disclaimer in the
12+
documentation and/or other materials provided with the distribution.
13+
* Neither the name of Intel Corporation nor the names of its contributors
14+
may be used to endorse or promote products derived from this software
15+
without specific prior written permission.
16+
17+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27+
THE POSSIBILITY OF SUCH DAMAGE.
28+
*****************************************************************************
29+
* Contents: Native high-level C interface to LAPACK function chesv_aa_2stage
30+
* Author: Intel Corporation
31+
* Generated December 2016
32+
*****************************************************************************/
33+
34+
#include "lapacke_utils.h"
35+
36+
lapack_int LAPACKE_chesv_aa_2stage( int matrix_layout, char uplo, lapack_int n,
37+
lapack_int nrhs, lapack_complex_float* a,
38+
lapack_int lda, lapack_complex_float* tb,
39+
lapack_int ltb, lapack_int* ipiv, lapack_int* ipiv2,
40+
lapack_complex_float* b, lapack_int ldb )
41+
{
42+
lapack_int info = 0;
43+
lapack_int lwork = -1;
44+
lapack_complex_float* work = NULL;
45+
lapack_complex_float work_query;
46+
if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
47+
LAPACKE_xerbla( "LAPACKE_chesv_aa_2stage", -1 );
48+
return -1;
49+
}
50+
#ifndef LAPACK_DISABLE_NAN_CHECK
51+
if( LAPACKE_get_nancheck() ) {
52+
/* Optionally check input matrices for NaNs */
53+
if( LAPACKE_che_nancheck( matrix_layout, uplo, n, a, lda ) ) {
54+
return -5;
55+
}
56+
if( LAPACKE_cge_nancheck( matrix_layout, 4*n, 1, tb, ltb ) ) {
57+
return -7;
58+
}
59+
if( LAPACKE_cge_nancheck( matrix_layout, n, nrhs, b, ldb ) ) {
60+
return -11;
61+
}
62+
}
63+
#endif
64+
/* Query optimal working array(s) size */
65+
info = LAPACKE_chesv_aa_2stage_work( matrix_layout, uplo, n, nrhs,
66+
a, lda, tb, ltb, ipiv, ipiv2, b,
67+
ldb, &work_query, lwork );
68+
if( info != 0 ) {
69+
goto exit_level_0;
70+
}
71+
lwork = LAPACK_C2INT( work_query );
72+
/* Allocate memory for work arrays */
73+
work = (lapack_complex_float*)
74+
LAPACKE_malloc( sizeof(lapack_complex_float) * lwork );
75+
if( work == NULL ) {
76+
info = LAPACK_WORK_MEMORY_ERROR;
77+
goto exit_level_0;
78+
}
79+
/* Call middle-level interface */
80+
info = LAPACKE_chesv_aa_2stage_work( matrix_layout, uplo, n, nrhs,
81+
a, lda, tb, ltb, ipiv, ipiv2, b,
82+
ldb, work, lwork );
83+
/* Release memory and exit */
84+
LAPACKE_free( work );
85+
exit_level_0:
86+
if( info == LAPACK_WORK_MEMORY_ERROR ) {
87+
LAPACKE_xerbla( "LAPACKE_chesv_aa_2stage", info );
88+
}
89+
return info;
90+
}

0 commit comments

Comments
 (0)