Merge pull request #3122 from martin-frbg/xeigtstz

Fix unusual stack size requirements of the LAPACK EIG tests (from Reference-LAPACK PR 335)
This commit is contained in:
Martin Kroeker 2021-02-28 22:13:09 +01:00 committed by GitHub
commit c7c82be1c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 199 additions and 45 deletions

View File

@ -25,7 +25,7 @@ set(AEIGTST
set(SCIGTST slafts.f slahd2.f slasum.f slatb9.f sstech.f sstect.f set(SCIGTST slafts.f slahd2.f slasum.f slatb9.f sstech.f sstect.f
ssvdch.f ssvdct.f ssxt1.f) ssvdch.f ssvdct.f ssxt1.f)
set(SEIGTST schkee.f set(SEIGTST schkee.F
sbdt01.f sbdt02.f sbdt03.f sbdt04.f sbdt05.f sbdt01.f sbdt02.f sbdt03.f sbdt04.f sbdt05.f
schkbb.f schkbd.f schkbk.f schkbl.f schkec.f schkbb.f schkbd.f schkbk.f schkbl.f schkec.f
schkgg.f schkgk.f schkgl.f schkhs.f schksb.f schkst.f schkst2stg.f schksb2stg.f schkgg.f schkgk.f schkgl.f schkhs.f schksb.f schkst.f schkst2stg.f schksb2stg.f
@ -42,7 +42,7 @@ set(SEIGTST schkee.f
sort03.f ssbt21.f ssgt01.f sslect.f sspt21.f sstt21.f sort03.f ssbt21.f ssgt01.f sslect.f sspt21.f sstt21.f
sstt22.f ssyt21.f ssyt22.f) sstt22.f ssyt21.f ssyt22.f)
set(CEIGTST cchkee.f set(CEIGTST cchkee.F
cbdt01.f cbdt02.f cbdt03.f cbdt05.f cbdt01.f cbdt02.f cbdt03.f cbdt05.f
cchkbb.f cchkbd.f cchkbk.f cchkbl.f cchkec.f cchkbb.f cchkbd.f cchkbk.f cchkbl.f cchkec.f
cchkgg.f cchkgk.f cchkgl.f cchkhb.f cchkhs.f cchkst.f cchkst2stg.f cchkhb2stg.f cchkgg.f cchkgk.f cchkgl.f cchkhb.f cchkhs.f cchkst.f cchkst2stg.f cchkhb2stg.f
@ -62,7 +62,7 @@ set(CEIGTST cchkee.f
set(DZIGTST dlafts.f dlahd2.f dlasum.f dlatb9.f dstech.f dstect.f set(DZIGTST dlafts.f dlahd2.f dlasum.f dlatb9.f dstech.f dstect.f
dsvdch.f dsvdct.f dsxt1.f) dsvdch.f dsvdct.f dsxt1.f)
set(DEIGTST dchkee.f set(DEIGTST dchkee.F
dbdt01.f dbdt02.f dbdt03.f dbdt04.f dbdt05.f dbdt01.f dbdt02.f dbdt03.f dbdt04.f dbdt05.f
dchkbb.f dchkbd.f dchkbk.f dchkbl.f dchkec.f dchkbb.f dchkbd.f dchkbk.f dchkbl.f dchkec.f
dchkgg.f dchkgk.f dchkgl.f dchkhs.f dchksb.f dchkst.f dchkst2stg.f dchksb2stg.f dchkgg.f dchkgk.f dchkgl.f dchkhs.f dchksb.f dchkst.f dchkst2stg.f dchksb2stg.f
@ -79,7 +79,7 @@ set(DEIGTST dchkee.f
dort03.f dsbt21.f dsgt01.f dslect.f dspt21.f dstt21.f dort03.f dsbt21.f dsgt01.f dslect.f dspt21.f dstt21.f
dstt22.f dsyt21.f dsyt22.f) dstt22.f dsyt21.f dsyt22.f)
set(ZEIGTST zchkee.f set(ZEIGTST zchkee.F
zbdt01.f zbdt02.f zbdt03.f zbdt05.f zbdt01.f zbdt02.f zbdt03.f zbdt05.f
zchkbb.f zchkbd.f zchkbk.f zchkbl.f zchkec.f zchkbb.f zchkbd.f zchkbk.f zchkbl.f zchkec.f
zchkgg.f zchkgk.f zchkgl.f zchkhb.f zchkhs.f zchkst.f zchkst2stg.f zchkhb2stg.f zchkgg.f zchkgk.f zchkgl.f zchkhb.f zchkhs.f zchkst.f zchkst2stg.f zchkhb2stg.f

View File

@ -157,11 +157,11 @@ cleanobj:
cleanexe: cleanexe:
rm -f xeigtst* rm -f xeigtst*
schkee.o: schkee.f schkee.o: schkee.F
$(FC) $(FFLAGS_DRV) -c -o $@ $< $(FC) $(FFLAGS_DRV) -c -o $@ $<
dchkee.o: dchkee.f dchkee.o: dchkee.F
$(FC) $(FFLAGS_DRV) -c -o $@ $< $(FC) $(FFLAGS_DRV) -c -o $@ $<
cchkee.o: cchkee.f cchkee.o: cchkee.F
$(FC) $(FFLAGS_DRV) -c -o $@ $< $(FC) $(FFLAGS_DRV) -c -o $@ $<
zchkee.o: zchkee.f zchkee.o: zchkee.F
$(FC) $(FFLAGS_DRV) -c -o $@ $< $(FC) $(FFLAGS_DRV) -c -o $@ $<

View File

@ -1034,6 +1034,10 @@
* ===================================================================== * =====================================================================
PROGRAM CCHKEE PROGRAM CCHKEE
* *
#if defined(_OPENMP)
use omp_lib
#endif
*
* -- LAPACK test routine (version 3.7.0) -- * -- LAPACK test routine (version 3.7.0) --
* -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
@ -1071,7 +1075,7 @@
CHARACTER*80 LINE CHARACTER*80 LINE
INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD, INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD,
$ NK, NN, NPARMS, NRHS, NTYPES, $ NK, NN, NPARMS, NRHS, NTYPES,
$ VERS_MAJOR, VERS_MINOR, VERS_PATCH $ VERS_MAJOR, VERS_MINOR, VERS_PATCH, N_THREADS
REAL EPS, S1, S2, THRESH, THRSHN REAL EPS, S1, S2, THRESH, THRSHN
* .. * ..
* .. Local Arrays .. * .. Local Arrays ..
@ -1084,12 +1088,16 @@
INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ), INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
$ ISHFTS( MAXIN ), IACC22( MAXIN ) $ ISHFTS( MAXIN ), IACC22( MAXIN )
REAL ALPHA( NMAX ), BETA( NMAX ), DR( NMAX, 12 ), REAL ALPHA( NMAX ), BETA( NMAX ), DR( NMAX, 12 ),
$ RESULT( 500 ), RWORK( LWORK ), S( NMAX*NMAX ) $ RESULT( 500 )
COMPLEX A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ), COMPLEX DC( NMAX, 6 ), TAUA( NMAX ), TAUB( NMAX ),
$ C( NCMAX*NCMAX, NCMAX*NCMAX ), DC( NMAX, 6 ),
$ TAUA( NMAX ), TAUB( NMAX ), WORK( LWORK ),
$ X( 5*NMAX ) $ X( 5*NMAX )
* .. * ..
* .. Allocatable Arrays ..
INTEGER AllocateStatus
REAL, DIMENSION(:), ALLOCATABLE :: RWORK, S
COMPLEX, DIMENSION(:), ALLOCATABLE :: WORK
COMPLEX, DIMENSION(:,:), ALLOCATABLE :: A, B, C
* ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAMEN LOGICAL LSAMEN
REAL SECOND, SLAMCH REAL SECOND, SLAMCH
@ -1130,6 +1138,21 @@
DATA INTSTR / '0123456789' / DATA INTSTR / '0123456789' /
DATA IOLDSD / 0, 0, 0, 1 / DATA IOLDSD / 0, 0, 0, 1 /
* .. * ..
* .. Allocate memory dynamically ..
*
ALLOCATE ( S(NMAX*NMAX), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( A(NMAX*NMAX,NEED), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( B(NMAX*NMAX,5), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( C(NCMAX*NCMAX,NCMAX*NCMAX), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( RWORK(LWORK), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( WORK(LWORK), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
* ..
* .. Executable Statements .. * .. Executable Statements ..
* *
A = 0.0 A = 0.0
@ -1846,8 +1869,16 @@
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
CALL XLAENV( 1, 1 ) CALL XLAENV( 1, 1 )
CALL XLAENV( 9, 25 ) CALL XLAENV( 9, 25 )
IF( TSTERR ) IF( TSTERR ) THEN
$ CALL CERRST( 'CST', NOUT ) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS()
CALL OMP_SET_NUM_THREADS(1)
#endif
CALL CERRST( 'CST', NOUT )
#if defined(_OPENMP)
CALL OMP_SET_NUM_THREADS(N_THREADS)
#endif
END IF
DO 290 I = 1, NPARMS DO 290 I = 1, NPARMS
CALL XLAENV( 1, NBVAL( I ) ) CALL XLAENV( 1, NBVAL( I ) )
CALL XLAENV( 2, NBMIN( I ) ) CALL XLAENV( 2, NBMIN( I ) )
@ -2305,8 +2336,16 @@
MAXTYP = 15 MAXTYP = 15
NTYPES = MIN( MAXTYP, NTYPES ) NTYPES = MIN( MAXTYP, NTYPES )
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
IF( TSTERR ) IF( TSTERR ) THEN
$ CALL CERRST( 'CHB', NOUT ) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS()
CALL OMP_SET_NUM_THREADS(1)
#endif
CALL CERRST( 'CHB', NOUT )
#if defined(_OPENMP)
CALL OMP_SET_NUM_THREADS(N_THREADS)
#endif
END IF
* CALL CCHKHB( NN, NVAL, NK, KVAL, MAXTYP, DOTYPE, ISEED, THRESH, * CALL CCHKHB( NN, NVAL, NK, KVAL, MAXTYP, DOTYPE, ISEED, THRESH,
* $ NOUT, A( 1, 1 ), NMAX, DR( 1, 1 ), DR( 1, 2 ), * $ NOUT, A( 1, 1 ), NMAX, DR( 1, 1 ), DR( 1, 2 ),
* $ A( 1, 2 ), NMAX, WORK, LWORK, RWORK, RESULT, * $ A( 1, 2 ), NMAX, WORK, LWORK, RWORK, RESULT,
@ -2436,7 +2475,14 @@
380 CONTINUE 380 CONTINUE
WRITE( NOUT, FMT = 9994 ) WRITE( NOUT, FMT = 9994 )
S2 = SECOND( ) S2 = SECOND( )
WRITE( NOUT, FMT = 9993 )S2 - S1 WRITE( NOUT, FMT = 9993 )S2 - S1
*
DEALLOCATE (S, STAT = AllocateStatus)
DEALLOCATE (A, STAT = AllocateStatus)
DEALLOCATE (B, STAT = AllocateStatus)
DEALLOCATE (C, STAT = AllocateStatus)
DEALLOCATE (RWORK, STAT = AllocateStatus)
DEALLOCATE (WORK, STAT = AllocateStatus)
* *
9999 FORMAT( / ' Execution not attempted due to input errors' ) 9999 FORMAT( / ' Execution not attempted due to input errors' )
9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 ) 9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 )

View File

@ -1038,7 +1038,11 @@
*> \ingroup double_eig *> \ingroup double_eig
* *
* ===================================================================== * =====================================================================
PROGRAM DCHKEE PROGRAM DCHKEE
*
#if defined(_OPENMP)
use omp_lib
#endif
* *
* -- LAPACK test routine (version 3.7.0) -- * -- LAPACK test routine (version 3.7.0) --
* -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
@ -1077,7 +1081,7 @@
CHARACTER*80 LINE CHARACTER*80 LINE
INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD, INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD,
$ NK, NN, NPARMS, NRHS, NTYPES, $ NK, NN, NPARMS, NRHS, NTYPES,
$ VERS_MAJOR, VERS_MINOR, VERS_PATCH $ VERS_MAJOR, VERS_MINOR, VERS_PATCH, N_THREADS
DOUBLE PRECISION EPS, S1, S2, THRESH, THRSHN DOUBLE PRECISION EPS, S1, S2, THRESH, THRSHN
* .. * ..
* .. Local Arrays .. * .. Local Arrays ..
@ -1089,10 +1093,13 @@
$ PVAL( MAXIN ) $ PVAL( MAXIN )
INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ), INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
$ ISHFTS( MAXIN ), IACC22( MAXIN ) $ ISHFTS( MAXIN ), IACC22( MAXIN )
DOUBLE PRECISION A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ), DOUBLE PRECISION D( NMAX, 12 ), RESULT( 500 ), TAUA( NMAX ),
$ C( NCMAX*NCMAX, NCMAX*NCMAX ), D( NMAX, 12 ), $ TAUB( NMAX ), X( 5*NMAX )
$ RESULT( 500 ), TAUA( NMAX ), TAUB( NMAX ), * ..
$ WORK( LWORK ), X( 5*NMAX ) * .. Allocatable Arrays ..
INTEGER AllocateStatus
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: WORK
DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: A, B, C
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAMEN LOGICAL LSAMEN
@ -1132,7 +1139,18 @@
* .. * ..
* .. Data statements .. * .. Data statements ..
DATA INTSTR / '0123456789' / DATA INTSTR / '0123456789' /
DATA IOLDSD / 0, 0, 0, 1 / DATA IOLDSD / 0, 0, 0, 1 /
* ..
* .. Allocate memory dynamically ..
*
ALLOCATE ( A(NMAX*NMAX,NEED), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( B(NMAX*NMAX,5), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( C(NCMAX*NCMAX,NCMAX*NCMAX), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( WORK(LWORK), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -1856,8 +1874,16 @@
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
CALL XLAENV( 1, 1 ) CALL XLAENV( 1, 1 )
CALL XLAENV( 9, 25 ) CALL XLAENV( 9, 25 )
IF( TSTERR ) IF( TSTERR ) THEN
$ CALL DERRST( 'DST', NOUT ) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS()
CALL OMP_SET_NUM_THREADS(1)
#endif
CALL DERRST( 'DST', NOUT )
#if defined(_OPENMP)
CALL OMP_SET_NUM_THREADS(N_THREADS)
#endif
END IF
DO 290 I = 1, NPARMS DO 290 I = 1, NPARMS
CALL XLAENV( 1, NBVAL( I ) ) CALL XLAENV( 1, NBVAL( I ) )
CALL XLAENV( 2, NBMIN( I ) ) CALL XLAENV( 2, NBMIN( I ) )
@ -2436,7 +2462,12 @@
380 CONTINUE 380 CONTINUE
WRITE( NOUT, FMT = 9994 ) WRITE( NOUT, FMT = 9994 )
S2 = DSECND( ) S2 = DSECND( )
WRITE( NOUT, FMT = 9993 )S2 - S1 WRITE( NOUT, FMT = 9993 )S2 - S1
*
DEALLOCATE (A, STAT = AllocateStatus)
DEALLOCATE (B, STAT = AllocateStatus)
DEALLOCATE (C, STAT = AllocateStatus)
DEALLOCATE (WORK, STAT = AllocateStatus)
* *
9999 FORMAT( / ' Execution not attempted due to input errors' ) 9999 FORMAT( / ' Execution not attempted due to input errors' )
9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 ) 9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 )

View File

@ -1040,6 +1040,10 @@
* ===================================================================== * =====================================================================
PROGRAM SCHKEE PROGRAM SCHKEE
* *
#if defined(_OPENMP)
use omp_lib
#endif
*
* -- LAPACK test routine (version 3.7.0) -- * -- LAPACK test routine (version 3.7.0) --
* -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
@ -1077,7 +1081,7 @@
CHARACTER*80 LINE CHARACTER*80 LINE
INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD, INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD,
$ NK, NN, NPARMS, NRHS, NTYPES, $ NK, NN, NPARMS, NRHS, NTYPES,
$ VERS_MAJOR, VERS_MINOR, VERS_PATCH $ VERS_MAJOR, VERS_MINOR, VERS_PATCH, N_THREADS
REAL EPS, S1, S2, THRESH, THRSHN REAL EPS, S1, S2, THRESH, THRSHN
* .. * ..
* .. Local Arrays .. * .. Local Arrays ..
@ -1089,10 +1093,13 @@
$ PVAL( MAXIN ) $ PVAL( MAXIN )
INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ), INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
$ ISHFTS( MAXIN ), IACC22( MAXIN ) $ ISHFTS( MAXIN ), IACC22( MAXIN )
REAL A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ), REAL D( NMAX, 12 ), RESULT( 500 ), TAUA( NMAX ),
$ C( NCMAX*NCMAX, NCMAX*NCMAX ), D( NMAX, 12 ), $ TAUB( NMAX ), X( 5*NMAX )
$ RESULT( 500 ), TAUA( NMAX ), TAUB( NMAX ), * ..
$ WORK( LWORK ), X( 5*NMAX ) * .. Allocatable Arrays ..
INTEGER AllocateStatus
REAL, DIMENSION(:), ALLOCATABLE :: WORK
REAL, DIMENSION(:,:), ALLOCATABLE :: A, B, C
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAMEN LOGICAL LSAMEN
@ -1132,7 +1139,18 @@
* .. * ..
* .. Data statements .. * .. Data statements ..
DATA INTSTR / '0123456789' / DATA INTSTR / '0123456789' /
DATA IOLDSD / 0, 0, 0, 1 / DATA IOLDSD / 0, 0, 0, 1 /
* ..
* .. Allocate memory dynamically ..
*
ALLOCATE ( A(NMAX*NMAX,NEED), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( B(NMAX*NMAX,5), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( C(NCMAX*NCMAX,NCMAX*NCMAX), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( WORK(LWORK), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -1857,8 +1875,16 @@
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
CALL XLAENV( 1, 1 ) CALL XLAENV( 1, 1 )
CALL XLAENV( 9, 25 ) CALL XLAENV( 9, 25 )
IF( TSTERR ) IF( TSTERR ) THEN
$ CALL SERRST( 'SST', NOUT ) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS()
CALL OMP_SET_NUM_THREADS(1)
#endif
CALL SERRST( 'SST', NOUT )
#if defined(_OPENMP)
CALL OMP_SET_NUM_THREADS(N_THREADS)
#endif
END IF
DO 290 I = 1, NPARMS DO 290 I = 1, NPARMS
CALL XLAENV( 1, NBVAL( I ) ) CALL XLAENV( 1, NBVAL( I ) )
CALL XLAENV( 2, NBMIN( I ) ) CALL XLAENV( 2, NBMIN( I ) )
@ -2440,6 +2466,11 @@
WRITE( NOUT, FMT = 9994 ) WRITE( NOUT, FMT = 9994 )
S2 = SECOND( ) S2 = SECOND( )
WRITE( NOUT, FMT = 9993 )S2 - S1 WRITE( NOUT, FMT = 9993 )S2 - S1
*
DEALLOCATE (A, STAT = AllocateStatus)
DEALLOCATE (B, STAT = AllocateStatus)
DEALLOCATE (C, STAT = AllocateStatus)
DEALLOCATE (WORK, STAT = AllocateStatus)
* *
9999 FORMAT( / ' Execution not attempted due to input errors' ) 9999 FORMAT( / ' Execution not attempted due to input errors' )
9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 ) 9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 )

View File

@ -1034,6 +1034,10 @@
* ===================================================================== * =====================================================================
PROGRAM ZCHKEE PROGRAM ZCHKEE
* *
#if defined(_OPENMP)
use omp_lib
#endif
*
* -- LAPACK test routine (version 3.7.0) -- * -- LAPACK test routine (version 3.7.0) --
* -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
@ -1071,7 +1075,7 @@
CHARACTER*80 LINE CHARACTER*80 LINE
INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD, INTEGER I, I1, IC, INFO, ITMP, K, LENP, MAXTYP, NEWSD,
$ NK, NN, NPARMS, NRHS, NTYPES, $ NK, NN, NPARMS, NRHS, NTYPES,
$ VERS_MAJOR, VERS_MINOR, VERS_PATCH $ VERS_MAJOR, VERS_MINOR, VERS_PATCH, N_THREADS
DOUBLE PRECISION EPS, S1, S2, THRESH, THRSHN DOUBLE PRECISION EPS, S1, S2, THRESH, THRSHN
* .. * ..
* .. Local Arrays .. * .. Local Arrays ..
@ -1084,12 +1088,16 @@
INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ), INTEGER INMIN( MAXIN ), INWIN( MAXIN ), INIBL( MAXIN ),
$ ISHFTS( MAXIN ), IACC22( MAXIN ) $ ISHFTS( MAXIN ), IACC22( MAXIN )
DOUBLE PRECISION ALPHA( NMAX ), BETA( NMAX ), DR( NMAX, 12 ), DOUBLE PRECISION ALPHA( NMAX ), BETA( NMAX ), DR( NMAX, 12 ),
$ RESULT( 500 ), RWORK( LWORK ), S( NMAX*NMAX ) $ RESULT( 500 )
COMPLEX*16 A( NMAX*NMAX, NEED ), B( NMAX*NMAX, 5 ), COMPLEX*16 DC( NMAX, 6 ), TAUA( NMAX ), TAUB( NMAX ),
$ C( NCMAX*NCMAX, NCMAX*NCMAX ), DC( NMAX, 6 ),
$ TAUA( NMAX ), TAUB( NMAX ), WORK( LWORK ),
$ X( 5*NMAX ) $ X( 5*NMAX )
* .. * ..
* .. Allocatable Arrays ..
INTEGER AllocateStatus
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: RWORK, S
COMPLEX*16, DIMENSION(:), ALLOCATABLE :: WORK
COMPLEX*16, DIMENSION(:,:), ALLOCATABLE :: A, B, C
* ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAMEN LOGICAL LSAMEN
DOUBLE PRECISION DLAMCH, DSECND DOUBLE PRECISION DLAMCH, DSECND
@ -1130,6 +1138,21 @@
DATA INTSTR / '0123456789' / DATA INTSTR / '0123456789' /
DATA IOLDSD / 0, 0, 0, 1 / DATA IOLDSD / 0, 0, 0, 1 /
* .. * ..
* .. Allocate memory dynamically ..
*
ALLOCATE ( S(NMAX*NMAX), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( A(NMAX*NMAX,NEED), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( B(NMAX*NMAX,5), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( C(NCMAX*NCMAX,NCMAX*NCMAX), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( RWORK(LWORK), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
ALLOCATE ( WORK(LWORK), STAT = AllocateStatus )
IF (AllocateStatus /= 0) STOP "*** Not enough memory ***"
* ..
* .. Executable Statements .. * .. Executable Statements ..
* *
A = 0.0 A = 0.0
@ -1846,8 +1869,16 @@
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
CALL XLAENV( 1, 1 ) CALL XLAENV( 1, 1 )
CALL XLAENV( 9, 25 ) CALL XLAENV( 9, 25 )
IF( TSTERR ) IF( TSTERR ) THEN
$ CALL ZERRST( 'ZST', NOUT ) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS()
CALL OMP_SET_NUM_THREADS(1)
#endif
CALL ZERRST( 'ZST', NOUT )
#if defined(_OPENMP)
CALL OMP_SET_NUM_THREADS(N_THREADS)
#endif
END IF
DO 290 I = 1, NPARMS DO 290 I = 1, NPARMS
CALL XLAENV( 1, NBVAL( I ) ) CALL XLAENV( 1, NBVAL( I ) )
CALL XLAENV( 2, NBMIN( I ) ) CALL XLAENV( 2, NBMIN( I ) )
@ -2303,8 +2334,16 @@
MAXTYP = 15 MAXTYP = 15
NTYPES = MIN( MAXTYP, NTYPES ) NTYPES = MIN( MAXTYP, NTYPES )
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT ) CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
IF( TSTERR ) IF( TSTERR ) THEN
$ CALL ZERRST( 'ZHB', NOUT ) #if defined(_OPENMP)
N_THREADS = OMP_GET_NUM_THREADS()
CALL OMP_SET_NUM_THREADS(1)
#endif
CALL ZERRST( 'ZHB', NOUT )
#if defined(_OPENMP)
CALL OMP_SET_NUM_THREADS(N_THREADS)
#endif
END IF
* CALL ZCHKHB( NN, NVAL, NK, KVAL, MAXTYP, DOTYPE, ISEED, THRESH, * CALL ZCHKHB( NN, NVAL, NK, KVAL, MAXTYP, DOTYPE, ISEED, THRESH,
* $ NOUT, A( 1, 1 ), NMAX, DR( 1, 1 ), DR( 1, 2 ), * $ NOUT, A( 1, 1 ), NMAX, DR( 1, 1 ), DR( 1, 2 ),
* $ A( 1, 2 ), NMAX, WORK, LWORK, RWORK, RESULT, * $ A( 1, 2 ), NMAX, WORK, LWORK, RWORK, RESULT,
@ -2435,6 +2474,13 @@
WRITE( NOUT, FMT = 9994 ) WRITE( NOUT, FMT = 9994 )
S2 = DSECND( ) S2 = DSECND( )
WRITE( NOUT, FMT = 9993 )S2 - S1 WRITE( NOUT, FMT = 9993 )S2 - S1
*
DEALLOCATE (S, STAT = AllocateStatus)
DEALLOCATE (A, STAT = AllocateStatus)
DEALLOCATE (B, STAT = AllocateStatus)
DEALLOCATE (C, STAT = AllocateStatus)
DEALLOCATE (RWORK, STAT = AllocateStatus)
DEALLOCATE (WORK, STAT = AllocateStatus)
* *
9999 FORMAT( / ' Execution not attempted due to input errors' ) 9999 FORMAT( / ' Execution not attempted due to input errors' )
9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 ) 9997 FORMAT( / / 1X, A3, ': NB =', I4, ', NBMIN =', I4, ', NX =', I4 )