10341034* =====================================================================
10351035 PROGRAM CCHKEE
10361036*
1037+ #if defined(_OPENMP)
1038+ use omp_lib
1039+ #endif
1040+ *
10371041* -- LAPACK test routine (version 3.7.0) --
10381042* -- LAPACK is a software package provided by Univ. of Tennessee, --
10391043* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
@@ -1071,7 +1075,7 @@ PROGRAM CCHKEE
10711075 CHARACTER * 80 LINE
10721076 INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD,
10731077 $ NK, NN, NPARMS, NRHS, NTYPES,
1074- $ VERS_MAJOR, VERS_MINOR, VERS_PATCH
1078+ $ VERS_MAJOR, VERS_MINOR, VERS_PATCH, N_THREADS
10751079 REAL EPS, S1, S2, THRESH, THRSHN
10761080* ..
10771081* .. Local Arrays ..
@@ -1084,12 +1088,16 @@ PROGRAM CCHKEE
10841088 INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
10851089 $ ISHFTS( MAXIN ), IACC22( MAXIN )
10861090 REAL ALPHA( NMAX ), BETA( NMAX ), DR( NMAX, 12 ),
1087- $ RESULT( 500 ), RWORK( LWORK ), S( NMAX* NMAX )
1088- COMPLEX A( NMAX* NMAX, NEED ), B( NMAX* NMAX, 5 ),
1089- $ C( NCMAX* NCMAX, NCMAX* NCMAX ), DC( NMAX, 6 ),
1090- $ TAUA( NMAX ), TAUB( NMAX ), WORK( LWORK ),
1091+ $ RESULT( 500 )
1092+ COMPLEX DC( NMAX, 6 ), TAUA( NMAX ), TAUB( NMAX ),
10911093 $ X( 5 * NMAX )
10921094* ..
1095+ * .. Allocatable Arrays ..
1096+ INTEGER AllocateStatus
1097+ REAL , DIMENSION (:), ALLOCATABLE :: RWORK, S
1098+ COMPLEX , DIMENSION (:), ALLOCATABLE :: WORK
1099+ COMPLEX , DIMENSION (:,:), ALLOCATABLE :: A, B, C
1100+ * ..
10931101* .. External Functions ..
10941102 LOGICAL LSAMEN
10951103 REAL SECOND, SLAMCH
@@ -1130,6 +1138,21 @@ PROGRAM CCHKEE
11301138 DATA INTSTR / ' 0123456789' /
11311139 DATA IOLDSD / 0 , 0 , 0 , 1 /
11321140* ..
1141+ * .. Allocate memory dynamically ..
1142+ *
1143+ ALLOCATE ( S(NMAX* NMAX), STAT = AllocateStatus )
1144+ IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
1145+ ALLOCATE ( A(NMAX* NMAX,NEED), STAT = AllocateStatus )
1146+ IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
1147+ ALLOCATE ( B(NMAX* NMAX,5 ), STAT = AllocateStatus )
1148+ IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
1149+ ALLOCATE ( C(NCMAX* NCMAX,NCMAX* NCMAX), STAT = AllocateStatus )
1150+ IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
1151+ ALLOCATE ( RWORK(LWORK), STAT = AllocateStatus )
1152+ IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
1153+ ALLOCATE ( WORK(LWORK), STAT = AllocateStatus )
1154+ IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
1155+ * ..
11331156* .. Executable Statements ..
11341157*
11351158 A = 0.0
@@ -1846,8 +1869,16 @@ PROGRAM CCHKEE
18461869 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
18471870 CALL XLAENV( 1 , 1 )
18481871 CALL XLAENV( 9 , 25 )
1849- IF ( TSTERR )
1850- $ CALL CERRST( ' CST' , NOUT )
1872+ IF ( TSTERR ) THEN
1873+ #if defined(_OPENMP)
1874+ N_THREADS = OMP_GET_NUM_THREADS()
1875+ CALL OMP_SET_NUM_THREADS(1 )
1876+ #endif
1877+ CALL CERRST( ' CST' , NOUT )
1878+ #if defined(_OPENMP)
1879+ CALL OMP_SET_NUM_THREADS(N_THREADS)
1880+ #endif
1881+ END IF
18511882 DO 290 I = 1 , NPARMS
18521883 CALL XLAENV( 1 , NBVAL( I ) )
18531884 CALL XLAENV( 2 , NBMIN( I ) )
@@ -2305,8 +2336,16 @@ PROGRAM CCHKEE
23052336 MAXTYP = 15
23062337 NTYPES = MIN ( MAXTYP, NTYPES )
23072338 CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
2308- IF ( TSTERR )
2309- $ CALL CERRST( ' CHB' , NOUT )
2339+ IF ( TSTERR ) THEN
2340+ #if defined(_OPENMP)
2341+ N_THREADS = OMP_GET_NUM_THREADS()
2342+ CALL OMP_SET_NUM_THREADS(1 )
2343+ #endif
2344+ CALL CERRST( ' CHB' , NOUT )
2345+ #if defined(_OPENMP)
2346+ CALL OMP_SET_NUM_THREADS(N_THREADS)
2347+ #endif
2348+ END IF
23102349* CALL CCHKHB( NN, NVAL, NK, KVAL, MAXTYP, DOTYPE, ISEED, THRESH,
23112350* $ NOUT, A( 1, 1 ), NMAX, DR( 1, 1 ), DR( 1, 2 ),
23122351* $ A( 1, 2 ), NMAX, WORK, LWORK, RWORK, RESULT,
@@ -2436,7 +2475,14 @@ PROGRAM CCHKEE
24362475 380 CONTINUE
24372476 WRITE ( NOUT, FMT = 9994 )
24382477 S2 = SECOND( )
2439- WRITE ( NOUT, FMT = 9993 )S2 - S1
2478+ WRITE ( NOUT, FMT = 9993 )S2 - S1
2479+ *
2480+ DEALLOCATE (S, STAT = AllocateStatus)
2481+ DEALLOCATE (A, STAT = AllocateStatus)
2482+ DEALLOCATE (B, STAT = AllocateStatus)
2483+ DEALLOCATE (C, STAT = AllocateStatus)
2484+ DEALLOCATE (RWORK, STAT = AllocateStatus)
2485+ DEALLOCATE (WORK, STAT = AllocateStatus)
24402486*
24412487 9999 FORMAT ( / ' Execution not attempted due to input errors' )
24422488 9997 FORMAT ( / / 1X , A3, ' : NB =' , I4, ' , NBMIN =' , I4, ' , NX =' , I4 )
0 commit comments