Apply ROUNDUP_LWORK (Reference-LAPACK PR 904)
This commit is contained in:
parent
f5664740cd
commit
2ce67e2ada
|
@ -119,7 +119,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unghr
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORGHR( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
|
||||
|
@ -150,7 +150,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC MAX, MIN
|
||||
|
@ -177,7 +178,7 @@
|
|||
IF( INFO.EQ.0 ) THEN
|
||||
NB = ILAENV( 1, 'SORGQR', ' ', NH, NH, NH, -1 )
|
||||
LWKOPT = MAX( 1, NH )*NB
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -229,7 +230,7 @@
|
|||
CALL SORGQR( NH, NH, NH, A( ILO+1, ILO+1 ), LDA, TAU( ILO ),
|
||||
$ WORK, LWORK, IINFO )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SORGHR
|
||||
|
|
|
@ -120,7 +120,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unglq
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
|
||||
|
@ -155,7 +155,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -164,7 +165,7 @@
|
|||
INFO = 0
|
||||
NB = ILAENV( 1, 'SORGLQ', ' ', M, N, K, -1 )
|
||||
LWKOPT = MAX( 1, M )*NB
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
LQUERY = ( LWORK.EQ.-1 )
|
||||
IF( M.LT.0 ) THEN
|
||||
INFO = -1
|
||||
|
@ -278,7 +279,7 @@
|
|||
50 CONTINUE
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = IWS
|
||||
WORK( 1 ) = SROUNDUP_LWORK(IWS)
|
||||
RETURN
|
||||
*
|
||||
* End of SORGLQ
|
||||
|
|
|
@ -121,7 +121,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup ungql
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
|
||||
|
@ -156,7 +156,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -181,7 +182,7 @@
|
|||
NB = ILAENV( 1, 'SORGQL', ' ', M, N, K, -1 )
|
||||
LWKOPT = N*NB
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -8
|
||||
|
@ -285,7 +286,7 @@
|
|||
50 CONTINUE
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = IWS
|
||||
WORK( 1 ) = SROUNDUP_LWORK(IWS)
|
||||
RETURN
|
||||
*
|
||||
* End of SORGQL
|
||||
|
|
|
@ -121,7 +121,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup ungqr
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
|
||||
|
@ -156,7 +156,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -165,7 +166,7 @@
|
|||
INFO = 0
|
||||
NB = ILAENV( 1, 'SORGQR', ' ', M, N, K, -1 )
|
||||
LWKOPT = MAX( 1, N )*NB
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
LQUERY = ( LWORK.EQ.-1 )
|
||||
IF( M.LT.0 ) THEN
|
||||
INFO = -1
|
||||
|
@ -279,7 +280,7 @@
|
|||
50 CONTINUE
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = IWS
|
||||
WORK( 1 ) = SROUNDUP_LWORK(IWS)
|
||||
RETURN
|
||||
*
|
||||
* End of SORGQR
|
||||
|
|
|
@ -121,7 +121,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup ungrq
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORGRQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
|
||||
|
@ -156,7 +156,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -181,7 +182,7 @@
|
|||
NB = ILAENV( 1, 'SORGRQ', ' ', M, N, K, -1 )
|
||||
LWKOPT = M*NB
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -8
|
||||
|
@ -285,7 +286,7 @@
|
|||
50 CONTINUE
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = IWS
|
||||
WORK( 1 ) = SROUNDUP_LWORK(IWS)
|
||||
RETURN
|
||||
*
|
||||
* End of SORGRQ
|
||||
|
|
|
@ -116,7 +116,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup ungtr
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO )
|
||||
|
@ -146,7 +146,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV, LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SORGQL, SORGQR, XERBLA
|
||||
|
@ -178,7 +179,7 @@
|
|||
NB = ILAENV( 1, 'SORGQR', ' ', N-1, N-1, N-1, -1 )
|
||||
END IF
|
||||
LWKOPT = MAX( 1, N-1 )*NB
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -244,7 +245,7 @@
|
|||
$ LWORK, IINFO )
|
||||
END IF
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SORGTR
|
||||
|
|
|
@ -157,7 +157,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup singleOTHERcomputational
|
||||
*> \ingroup ungtsqr
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -196,11 +196,15 @@
|
|||
LOGICAL LQUERY
|
||||
INTEGER IINFO, LDC, LWORKOPT, LC, LW, NBLOCAL, J
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SCOPY, SLAMTSQR, SLASET, XERBLA
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC REAL, MAX, MIN
|
||||
INTRINSIC MAX, MIN
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -257,14 +261,14 @@
|
|||
CALL XERBLA( 'SORGTSQR', -INFO )
|
||||
RETURN
|
||||
ELSE IF ( LQUERY ) THEN
|
||||
WORK( 1 ) = REAL( LWORKOPT )
|
||||
WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
* Quick return if possible
|
||||
*
|
||||
IF( MIN( M, N ).EQ.0 ) THEN
|
||||
WORK( 1 ) = REAL( LWORKOPT )
|
||||
WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
|
@ -297,7 +301,7 @@
|
|||
CALL SCOPY( M, WORK( (J-1)*LDC + 1 ), 1, A( 1, J ), 1 )
|
||||
END DO
|
||||
*
|
||||
WORK( 1 ) = REAL( LWORKOPT )
|
||||
WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
|
||||
RETURN
|
||||
*
|
||||
* End of SORGTSQR
|
||||
|
|
|
@ -169,7 +169,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup sigleOTHERcomputational
|
||||
*> \ingroup ungtsqr_row
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -213,11 +213,15 @@
|
|||
* .. Local Arrays ..
|
||||
REAL DUMMY( 1, 1 )
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLARFB_GETT, SLASET, XERBLA
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC REAL, MAX, MIN
|
||||
INTRINSIC MAX, MIN
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -255,14 +259,14 @@
|
|||
CALL XERBLA( 'SORGTSQR_ROW', -INFO )
|
||||
RETURN
|
||||
ELSE IF ( LQUERY ) THEN
|
||||
WORK( 1 ) = REAL( LWORKOPT )
|
||||
WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
* Quick return if possible
|
||||
*
|
||||
IF( MIN( M, N ).EQ.0 ) THEN
|
||||
WORK( 1 ) = REAL( LWORKOPT )
|
||||
WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
|
@ -371,7 +375,7 @@
|
|||
*
|
||||
END DO
|
||||
*
|
||||
WORK( 1 ) = REAL( LWORKOPT )
|
||||
WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
|
||||
RETURN
|
||||
*
|
||||
* End of SORGTSQR_ROW
|
||||
|
|
|
@ -155,7 +155,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*> \ingroup unm22
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORM22( SIDE, TRANS, M, N, N1, N2, Q, LDQ, C, LDC,
|
||||
|
@ -187,13 +187,14 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SGEMM, SLACPY, STRMM, XERBLA
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC REAL, MAX, MIN
|
||||
INTRINSIC MAX, MIN
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -237,7 +238,7 @@
|
|||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
LWKOPT = M*N
|
||||
WORK( 1 ) = REAL( LWKOPT )
|
||||
WORK( 1 ) = SROUNDUP_LWORK( LWKOPT )
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -430,7 +431,7 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = REAL( LWKOPT )
|
||||
WORK( 1 ) = SROUNDUP_LWORK( LWKOPT )
|
||||
RETURN
|
||||
*
|
||||
* End of SORM22
|
||||
|
|
|
@ -188,7 +188,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unmbr
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,
|
||||
|
@ -217,7 +217,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV, LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SORMLQ, SORMQR, XERBLA
|
||||
|
@ -285,7 +286,7 @@
|
|||
END IF
|
||||
END IF
|
||||
LWKOPT = NW*NB
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -363,7 +364,7 @@
|
|||
$ TAU, C( I1, I2 ), LDC, WORK, LWORK, IINFO )
|
||||
END IF
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SORMBR
|
||||
|
|
|
@ -171,7 +171,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unmhr
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C,
|
||||
|
@ -199,7 +199,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV, LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SORMQR, XERBLA
|
||||
|
@ -253,7 +254,7 @@
|
|||
NB = ILAENV( 1, 'SORMQR', SIDE // TRANS, M, NH, NH, -1 )
|
||||
END IF
|
||||
LWKOPT = NW*NB
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -285,7 +286,7 @@
|
|||
CALL SORMQR( SIDE, TRANS, MI, NI, NH, A( ILO+1, ILO ), LDA,
|
||||
$ TAU( ILO ), C( I1, I2 ), LDC, WORK, LWORK, IINFO )
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SORMHR
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unmlq
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
|
||||
|
@ -195,7 +195,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLARFB, SLARFT, SORML2, XERBLA
|
||||
|
@ -246,7 +247,7 @@
|
|||
NB = MIN( NBMAX, ILAENV( 1, 'SORMLQ', SIDE // TRANS, M, N, K,
|
||||
$ -1 ) )
|
||||
LWKOPT = NW*NB + TSIZE
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -338,7 +339,7 @@
|
|||
$ C( IC, JC ), LDC, WORK, LDWORK )
|
||||
10 CONTINUE
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SORMLQ
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unmql
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
|
||||
|
@ -194,7 +194,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLARFB, SLARFT, SORM2L, XERBLA
|
||||
|
@ -249,7 +250,7 @@
|
|||
$ K, -1 ) )
|
||||
LWKOPT = NW*NB + TSIZE
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -330,7 +331,7 @@
|
|||
$ WORK, LDWORK )
|
||||
10 CONTINUE
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SORMQL
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unmqr
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
|
||||
|
@ -194,7 +194,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLARFB, SLARFT, SORM2R, XERBLA
|
||||
|
@ -245,7 +246,7 @@
|
|||
NB = MIN( NBMAX, ILAENV( 1, 'SORMQR', SIDE // TRANS, M, N, K,
|
||||
$ -1 ) )
|
||||
LWKOPT = NW*NB + TSIZE
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -331,7 +332,7 @@
|
|||
$ C( IC, JC ), LDC, WORK, LDWORK )
|
||||
10 CONTINUE
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SORMQR
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unmrq
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
|
||||
|
@ -195,7 +195,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLARFB, SLARFT, SORMR2, XERBLA
|
||||
|
@ -250,7 +251,7 @@
|
|||
$ K, -1 ) )
|
||||
LWKOPT = NW*NB + TSIZE
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -337,7 +338,7 @@
|
|||
$ WORK, LDWORK )
|
||||
10 CONTINUE
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SORMRQ
|
||||
|
|
|
@ -168,7 +168,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unmrz
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -213,7 +213,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLARZB, SLARZT, SORMR3, XERBLA
|
||||
|
@ -271,7 +272,7 @@
|
|||
$ K, -1 ) )
|
||||
LWKOPT = NW*NB + TSIZE
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -367,7 +368,7 @@
|
|||
*
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -164,7 +164,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup unmtr
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC,
|
||||
|
@ -192,7 +192,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV, LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SORMQL, SORMQR, XERBLA
|
||||
|
@ -256,7 +257,7 @@
|
|||
END IF
|
||||
END IF
|
||||
LWKOPT = NW*NB
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -301,7 +302,7 @@
|
|||
CALL SORMQR( SIDE, TRANS, MI, NI, NQ-1, A( 2, 1 ), LDA, TAU,
|
||||
$ C( I1, I2 ), LDC, WORK, LWORK, IINFO )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SORMTR
|
||||
|
|
|
@ -131,7 +131,7 @@
|
|||
*> \verbatim
|
||||
*> LWORK is INTEGER
|
||||
*> The length of the array WORK. LWORK >= 1, when N <= 1;
|
||||
*> otherwise
|
||||
*> otherwise
|
||||
*> If JOBZ = 'N' and N > 1, LWORK must be queried.
|
||||
*> LWORK = MAX(1, dimension) where
|
||||
*> dimension = (2KD+1)*N + KD*NTHREADS + N
|
||||
|
@ -164,7 +164,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHEReigen
|
||||
*> \ingroup hbev_2stage
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -182,7 +182,7 @@
|
|||
*> http://doi.acm.org/10.1145/2063384.2063394
|
||||
*>
|
||||
*> A. Haidar, J. Kurzak, P. Luszczek, 2013.
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> for multicore hardware, In Proceedings of 2013 International Conference
|
||||
*> for High Performance Computing, Networking, Storage and Analysis (SC '13).
|
||||
*> Denver, Colorado, USA, 2013.
|
||||
|
@ -190,11 +190,11 @@
|
|||
*> http://doi.acm.org/10.1145/2503210.2503292
|
||||
*>
|
||||
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> calculations based on fine-grained memory aware tasks.
|
||||
*> International Journal of High Performance Computing Applications.
|
||||
*> Volume 28 Issue 2, Pages 196-209, May 2014.
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
|
@ -232,12 +232,13 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSB
|
||||
EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSB, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE,
|
||||
$ SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLASCL, SSCAL, SSTEQR, SSTERF, XERBLA,
|
||||
$ SSYTRD_SB2ST
|
||||
$ SSYTRD_SB2ST
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC SQRT
|
||||
|
@ -268,7 +269,7 @@
|
|||
IF( INFO.EQ.0 ) THEN
|
||||
IF( N.LE.1 ) THEN
|
||||
LWMIN = 1
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
ELSE
|
||||
IB = ILAENV2STAGE( 2, 'SSYTRD_SB2ST', JOBZ,
|
||||
$ N, KD, -1, -1 )
|
||||
|
@ -277,7 +278,7 @@
|
|||
LWTRD = ILAENV2STAGE( 4, 'SSYTRD_SB2ST', JOBZ,
|
||||
$ N, KD, IB, -1 )
|
||||
LWMIN = N + LHTRD + LWTRD
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
ENDIF
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY )
|
||||
|
@ -343,7 +344,7 @@
|
|||
LLWORK = LWORK - INDWRK + 1
|
||||
*
|
||||
CALL SSYTRD_SB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, W,
|
||||
$ WORK( INDE ), WORK( INDHOUS ), LHTRD,
|
||||
$ WORK( INDE ), WORK( INDHOUS ), LHTRD,
|
||||
$ WORK( INDWRK ), LLWORK, IINFO )
|
||||
*
|
||||
* For eigenvalues only, call SSTERF. For eigenvectors, call SSTEQR.
|
||||
|
@ -368,7 +369,7 @@
|
|||
*
|
||||
* Set WORK(1) to optimal workspace size.
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -179,7 +179,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHEReigen
|
||||
*> \ingroup hbevd
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSBEVD( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK,
|
||||
|
@ -213,8 +213,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
REAL SLAMCH, SLANSB
|
||||
EXTERNAL LSAME, SLAMCH, SLANSB
|
||||
REAL SLAMCH, SLANSB, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANSB, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SGEMM, SLACPY, SLASCL, SSBTRD, SSCAL, SSTEDC,
|
||||
|
@ -259,7 +259,7 @@
|
|||
END IF
|
||||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
|
@ -342,7 +342,7 @@
|
|||
IF( ISCALE.EQ.1 )
|
||||
$ CALL SSCAL( N, ONE / SIGMA, W, 1 )
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -134,7 +134,7 @@
|
|||
*> \verbatim
|
||||
*> LWORK is INTEGER
|
||||
*> The length of the array WORK. LWORK >= 1, when N <= 1;
|
||||
*> otherwise
|
||||
*> otherwise
|
||||
*> If JOBZ = 'N' and N > 1, LWORK must be queried.
|
||||
*> LWORK = MAX(1, dimension) where
|
||||
*> dimension = (2KD+1)*N + KD*NTHREADS + N
|
||||
|
@ -188,7 +188,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHEReigen
|
||||
*> \ingroup hbevd_2stage
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -206,7 +206,7 @@
|
|||
*> http://doi.acm.org/10.1145/2063384.2063394
|
||||
*>
|
||||
*> A. Haidar, J. Kurzak, P. Luszczek, 2013.
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> for multicore hardware, In Proceedings of 2013 International Conference
|
||||
*> for High Performance Computing, Networking, Storage and Analysis (SC '13).
|
||||
*> Denver, Colorado, USA, 2013.
|
||||
|
@ -214,11 +214,11 @@
|
|||
*> http://doi.acm.org/10.1145/2503210.2503292
|
||||
*>
|
||||
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> calculations based on fine-grained memory aware tasks.
|
||||
*> International Journal of High Performance Computing Applications.
|
||||
*> Volume 28 Issue 2, Pages 196-209, May 2014.
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
|
@ -258,8 +258,9 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSB
|
||||
EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSB, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE,
|
||||
$ SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SGEMM, SLACPY, SLASCL, SSCAL, SSTEDC,
|
||||
|
@ -307,7 +308,7 @@
|
|||
END IF
|
||||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
|
@ -374,7 +375,7 @@
|
|||
LLWRK2 = LWORK - INDWK2 + 1
|
||||
*
|
||||
CALL SSYTRD_SB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, W,
|
||||
$ WORK( INDE ), WORK( INDHOUS ), LHTRD,
|
||||
$ WORK( INDE ), WORK( INDHOUS ), LHTRD,
|
||||
$ WORK( INDWRK ), LLWORK, IINFO )
|
||||
*
|
||||
* For eigenvalues only, call SSTERF. For eigenvectors, call SSTEDC.
|
||||
|
@ -394,7 +395,7 @@
|
|||
IF( ISCALE.EQ.1 )
|
||||
$ CALL SSCAL( N, ONE / SIGMA, W, 1 )
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -235,7 +235,7 @@
|
|||
*> \verbatim
|
||||
*> LWORK is INTEGER
|
||||
*> The length of the array WORK. LWORK >= 1, when N <= 1;
|
||||
*> otherwise
|
||||
*> otherwise
|
||||
*> If JOBZ = 'N' and N > 1, LWORK must be queried.
|
||||
*> LWORK = MAX(1, 7*N, dimension) where
|
||||
*> dimension = (2KD+1)*N + KD*NTHREADS + 2*N
|
||||
|
@ -281,7 +281,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHEReigen
|
||||
*> \ingroup hbevx_2stage
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -299,7 +299,7 @@
|
|||
*> http://doi.acm.org/10.1145/2063384.2063394
|
||||
*>
|
||||
*> A. Haidar, J. Kurzak, P. Luszczek, 2013.
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> for multicore hardware, In Proceedings of 2013 International Conference
|
||||
*> for High Performance Computing, Networking, Storage and Analysis (SC '13).
|
||||
*> Denver, Colorado, USA, 2013.
|
||||
|
@ -307,11 +307,11 @@
|
|||
*> http://doi.acm.org/10.1145/2503210.2503292
|
||||
*>
|
||||
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> calculations based on fine-grained memory aware tasks.
|
||||
*> International Journal of High Performance Computing Applications.
|
||||
*> Volume 28 Issue 2, Pages 196-209, May 2014.
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
|
@ -357,8 +357,9 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSB
|
||||
EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSB, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE,
|
||||
$ SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SCOPY, SGEMV, SLACPY, SLASCL, SSCAL,
|
||||
|
@ -414,7 +415,7 @@
|
|||
IF( INFO.EQ.0 ) THEN
|
||||
IF( N.LE.1 ) THEN
|
||||
LWMIN = 1
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
ELSE
|
||||
IB = ILAENV2STAGE( 2, 'SSYTRD_SB2ST', JOBZ,
|
||||
$ N, KD, -1, -1 )
|
||||
|
@ -423,7 +424,7 @@
|
|||
LWTRD = ILAENV2STAGE( 4, 'SSYTRD_SB2ST', JOBZ,
|
||||
$ N, KD, IB, -1 )
|
||||
LWMIN = 2*N + LHTRD + LWTRD
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
ENDIF
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY )
|
||||
|
@ -513,7 +514,7 @@
|
|||
LLWORK = LWORK - INDWRK + 1
|
||||
*
|
||||
CALL SSYTRD_SB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, WORK( INDD ),
|
||||
$ WORK( INDE ), WORK( INDHOUS ), LHTRD,
|
||||
$ WORK( INDE ), WORK( INDHOUS ), LHTRD,
|
||||
$ WORK( INDWRK ), LLWORK, IINFO )
|
||||
*
|
||||
* If all eigenvalues are desired and ABSTOL is less than or equal
|
||||
|
@ -624,7 +625,7 @@
|
|||
*
|
||||
* Set WORK(1) to optimal workspace size.
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -208,7 +208,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHEReigen
|
||||
*> \ingroup hbgvd
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -247,7 +247,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SGEMM, SLACPY, SPBSTF, SSBGST, SSBTRD, SSTEDC,
|
||||
|
@ -292,7 +293,7 @@
|
|||
END IF
|
||||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
|
@ -353,7 +354,7 @@
|
|||
CALL SLACPY( 'A', N, N, WORK( INDWK2 ), N, Z, LDZ )
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -164,7 +164,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHEReigen
|
||||
*> \ingroup hpevd
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK,
|
||||
|
@ -198,8 +198,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
REAL SLAMCH, SLANSP
|
||||
EXTERNAL LSAME, SLAMCH, SLANSP
|
||||
REAL SLAMCH, SLANSP, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANSP, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SOPMTR, SSCAL, SSPTRD, SSTEDC, SSTERF, XERBLA
|
||||
|
@ -240,7 +240,7 @@
|
|||
END IF
|
||||
END IF
|
||||
IWORK( 1 ) = LIWMIN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -9
|
||||
|
@ -319,7 +319,7 @@
|
|||
IF( ISCALE.EQ.1 )
|
||||
$ CALL SSCAL( N, ONE / SIGMA, W, 1 )
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -191,7 +191,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHEReigen
|
||||
*> \ingroup hpgvd
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -225,7 +225,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SPPTRF, SSPEVD, SSPGST, STPMV, STPSV, XERBLA
|
||||
|
@ -267,7 +268,7 @@
|
|||
LWMIN = 2*N
|
||||
END IF
|
||||
END IF
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -11
|
||||
|
@ -345,7 +346,7 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -167,7 +167,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup auxOTHERcomputational
|
||||
*> \ingroup stedc
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -208,8 +208,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
REAL SLAMCH, SLANST
|
||||
EXTERNAL ILAENV, LSAME, SLAMCH, SLANST
|
||||
REAL SLAMCH, SLANST, SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SLAMCH, SLANST, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SGEMM, SLACPY, SLAED0, SLASCL, SLASET, SLASRT,
|
||||
|
@ -268,7 +268,7 @@
|
|||
LIWMIN = 3 + 5*N
|
||||
END IF
|
||||
END IF
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT. LQUERY ) THEN
|
||||
|
@ -463,7 +463,7 @@
|
|||
END IF
|
||||
*
|
||||
50 CONTINUE
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -359,8 +359,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
REAL SLAMCH, SLANST
|
||||
EXTERNAL LSAME, SLAMCH, SLANST
|
||||
REAL SLAMCH, SLANST, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANST, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SCOPY, SLAE2, SLAEV2, SLARRC, SLARRE, SLARRJ,
|
||||
|
@ -443,7 +443,7 @@
|
|||
RMAX = MIN( SQRT( BIGNUM ), ONE / SQRT( SQRT( SAFMIN ) ) )
|
||||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
IF( WANTZ .AND. ALLEIG ) THEN
|
||||
|
@ -782,7 +782,7 @@
|
|||
ENDIF
|
||||
*
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -149,7 +149,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHEReigen
|
||||
*> \ingroup stevd
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSTEVD( JOBZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK,
|
||||
|
@ -182,8 +182,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
REAL SLAMCH, SLANST
|
||||
EXTERNAL LSAME, SLAMCH, SLANST
|
||||
REAL SLAMCH, SLANST, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANST, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SSCAL, SSTEDC, SSTERF, XERBLA
|
||||
|
@ -215,7 +215,7 @@
|
|||
END IF
|
||||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
|
@ -283,7 +283,7 @@
|
|||
IF( ISCALE.EQ.1 )
|
||||
$ CALL SSCAL( N, ONE / SIGMA, D, 1 )
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -287,7 +287,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHEReigen
|
||||
*> \ingroup stevr
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -336,8 +336,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
REAL SLAMCH, SLANST
|
||||
EXTERNAL LSAME, ILAENV, SLAMCH, SLANST
|
||||
REAL SLAMCH, SLANST, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SLAMCH, SLANST, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTEMR, SSTEIN, SSTERF,
|
||||
|
@ -389,7 +389,7 @@
|
|||
END IF
|
||||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
|
@ -570,7 +570,7 @@
|
|||
* IF (wantz .and. INDEIG ) Z( 1,1) = Z(1,1) / 1.002 + .002
|
||||
*
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup heev
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO )
|
||||
|
@ -158,8 +158,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
REAL SLAMCH, SLANSY
|
||||
EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY
|
||||
REAL SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLASCL, SORGTR, SSCAL, SSTEQR, SSTERF, SSYTRD,
|
||||
|
@ -190,7 +190,7 @@
|
|||
IF( INFO.EQ.0 ) THEN
|
||||
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = MAX( 1, ( NB+2 )*N )
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
IF( LWORK.LT.MAX( 1, 3*N-1 ) .AND. .NOT.LQUERY )
|
||||
$ INFO = -8
|
||||
|
@ -274,7 +274,7 @@
|
|||
*
|
||||
* Set WORK(1) to optimal workspace size.
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
* Definition:
|
||||
* ===========
|
||||
*
|
||||
* SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK,
|
||||
* SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK,
|
||||
* INFO )
|
||||
*
|
||||
* IMPLICIT NONE
|
||||
|
@ -105,12 +105,12 @@
|
|||
*> \verbatim
|
||||
*> LWORK is INTEGER
|
||||
*> The length of the array WORK. LWORK >= 1, when N <= 1;
|
||||
*> otherwise
|
||||
*> otherwise
|
||||
*> If JOBZ = 'N' and N > 1, LWORK must be queried.
|
||||
*> LWORK = MAX(1, dimension) where
|
||||
*> dimension = max(stage1,stage2) + (KD+1)*N + 2*N
|
||||
*> = N*KD + N*max(KD+1,FACTOPTNB)
|
||||
*> + max(2*KD*KD, KD*NTHREADS)
|
||||
*> = N*KD + N*max(KD+1,FACTOPTNB)
|
||||
*> + max(2*KD*KD, KD*NTHREADS)
|
||||
*> + (KD+1)*N + 2*N
|
||||
*> where KD is the blocking size of the reduction,
|
||||
*> FACTOPTNB is the blocking used by the QR or LQ
|
||||
|
@ -143,7 +143,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup heev_2stage
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -161,7 +161,7 @@
|
|||
*> http://doi.acm.org/10.1145/2063384.2063394
|
||||
*>
|
||||
*> A. Haidar, J. Kurzak, P. Luszczek, 2013.
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> for multicore hardware, In Proceedings of 2013 International Conference
|
||||
*> for High Performance Computing, Networking, Storage and Analysis (SC '13).
|
||||
*> Denver, Colorado, USA, 2013.
|
||||
|
@ -169,16 +169,16 @@
|
|||
*> http://doi.acm.org/10.1145/2503210.2503292
|
||||
*>
|
||||
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> calculations based on fine-grained memory aware tasks.
|
||||
*> International Journal of High Performance Computing Applications.
|
||||
*> Volume 28 Issue 2, Pages 196-209, May 2014.
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK,
|
||||
SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK,
|
||||
$ INFO )
|
||||
*
|
||||
IMPLICIT NONE
|
||||
|
@ -211,8 +211,9 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSY
|
||||
EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE,
|
||||
$ SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLASCL, SORGTR, SSCAL, SSTEQR, SSTERF,
|
||||
|
@ -305,7 +306,7 @@
|
|||
LLWORK = LWORK - INDWRK + 1
|
||||
*
|
||||
CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK( INDE ),
|
||||
$ WORK( INDTAU ), WORK( INDHOUS ), LHTRD,
|
||||
$ WORK( INDTAU ), WORK( INDHOUS ), LHTRD,
|
||||
$ WORK( INDWRK ), LLWORK, IINFO )
|
||||
*
|
||||
* For eigenvalues only, call SSTERF. For eigenvectors, first call
|
||||
|
@ -336,7 +337,7 @@
|
|||
*
|
||||
* Set WORK(1) to optimal workspace size.
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup heevd
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -204,8 +204,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
REAL SLAMCH, SLANSY
|
||||
EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY
|
||||
REAL SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLACPY, SLASCL, SORMTR, SSCAL, SSTEDC, SSTERF,
|
||||
|
@ -251,7 +251,7 @@
|
|||
$ N*ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) )
|
||||
LIOPT = LIWMIN
|
||||
END IF
|
||||
WORK( 1 ) = LOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LOPT)
|
||||
IWORK( 1 ) = LIOPT
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
|
@ -335,7 +335,7 @@
|
|||
IF( ISCALE.EQ.1 )
|
||||
$ CALL SSCAL( N, ONE / SIGMA, W, 1 )
|
||||
*
|
||||
WORK( 1 ) = LOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LOPT)
|
||||
IWORK( 1 ) = LIOPT
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -317,7 +317,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup heevr
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -368,8 +368,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
REAL SLAMCH, SLANSY
|
||||
EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY
|
||||
REAL SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SCOPY, SORMTR, SSCAL, SSTEBZ, SSTEMR, SSTEIN,
|
||||
|
@ -428,7 +428,7 @@
|
|||
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
|
||||
NB = MAX( NB, ILAENV( 1, 'SORMTR', UPLO, N, -1, -1, -1 ) )
|
||||
LWKOPT = MAX( ( NB+1 )*N, LWMIN )
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
|
@ -677,7 +677,7 @@
|
|||
*
|
||||
* Set WORK(1) to optimal workspace size.
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -263,7 +263,7 @@
|
|||
*> indicating the nonzero elements in Z. The i-th eigenvector
|
||||
*> is nonzero only in elements ISUPPZ( 2*i-1 ) through
|
||||
*> ISUPPZ( 2*i ). This is an output of SSTEMR (tridiagonal
|
||||
*> matrix). The support of the eigenvectors of A is typically
|
||||
*> matrix). The support of the eigenvectors of A is typically
|
||||
*> 1:N because of the orthogonal transformations applied by SORMTR.
|
||||
*> Implemented only for RANGE = 'A' or 'I' and IU - IL = N - 1
|
||||
*> \endverbatim
|
||||
|
@ -277,12 +277,12 @@
|
|||
*> \param[in] LWORK
|
||||
*> \verbatim
|
||||
*> LWORK is INTEGER
|
||||
*> The dimension of the array WORK.
|
||||
*> The dimension of the array WORK.
|
||||
*> If JOBZ = 'N' and N > 1, LWORK must be queried.
|
||||
*> LWORK = MAX(1, 26*N, dimension) where
|
||||
*> dimension = max(stage1,stage2) + (KD+1)*N + 5*N
|
||||
*> = N*KD + N*max(KD+1,FACTOPTNB)
|
||||
*> + max(2*KD*KD, KD*NTHREADS)
|
||||
*> = N*KD + N*max(KD+1,FACTOPTNB)
|
||||
*> + max(2*KD*KD, KD*NTHREADS)
|
||||
*> + (KD+1)*N + 5*N
|
||||
*> where KD is the blocking size of the reduction,
|
||||
*> FACTOPTNB is the blocking used by the QR or LQ
|
||||
|
@ -330,7 +330,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup heevr_2stage
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -358,7 +358,7 @@
|
|||
*> http://doi.acm.org/10.1145/2063384.2063394
|
||||
*>
|
||||
*> A. Haidar, J. Kurzak, P. Luszczek, 2013.
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> for multicore hardware, In Proceedings of 2013 International Conference
|
||||
*> for High Performance Computing, Networking, Storage and Analysis (SC '13).
|
||||
*> Denver, Colorado, USA, 2013.
|
||||
|
@ -366,11 +366,11 @@
|
|||
*> http://doi.acm.org/10.1145/2503210.2503292
|
||||
*>
|
||||
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> calculations based on fine-grained memory aware tasks.
|
||||
*> International Journal of High Performance Computing Applications.
|
||||
*> Volume 28 Issue 2, Pages 196-209, May 2014.
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
|
@ -416,8 +416,9 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV, ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSY
|
||||
EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV, ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANSY, SROUNDUP_LWORK, ILAENV,
|
||||
$ ILAENV2STAGE
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SCOPY, SORMTR, SSCAL, SSTEBZ, SSTEMR, SSTEIN,
|
||||
|
@ -484,7 +485,7 @@
|
|||
* NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
|
||||
* NB = MAX( NB, ILAENV( 1, 'SORMTR', UPLO, N, -1, -1, -1 ) )
|
||||
* LWKOPT = MAX( ( NB+1 )*N, LWMIN )
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
END IF
|
||||
*
|
||||
|
@ -608,7 +609,7 @@
|
|||
* Call SSYTRD_2STAGE to reduce symmetric matrix to tridiagonal form.
|
||||
*
|
||||
*
|
||||
CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, WORK( INDD ),
|
||||
CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, WORK( INDD ),
|
||||
$ WORK( INDE ), WORK( INDTAU ), WORK( INDHOUS ),
|
||||
$ LHTRD, WORK( INDWK ), LLWORK, IINFO )
|
||||
*
|
||||
|
@ -732,7 +733,7 @@
|
|||
*
|
||||
* Set WORK(1) to optimal workspace size.
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -244,7 +244,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup heevx
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU,
|
||||
|
@ -285,8 +285,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
REAL SLAMCH, SLANSY
|
||||
EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY
|
||||
REAL SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SCOPY, SLACPY, SORGTR, SORMTR, SSCAL, SSTEBZ,
|
||||
|
@ -338,13 +338,13 @@
|
|||
IF( INFO.EQ.0 ) THEN
|
||||
IF( N.LE.1 ) THEN
|
||||
LWKMIN = 1
|
||||
WORK( 1 ) = LWKMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKMIN)
|
||||
ELSE
|
||||
LWKMIN = 8*N
|
||||
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
|
||||
NB = MAX( NB, ILAENV( 1, 'SORMTR', UPLO, N, -1, -1, -1 ) )
|
||||
LWKOPT = MAX( LWKMIN, ( NB + 3 )*N )
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY )
|
||||
|
@ -542,7 +542,7 @@
|
|||
*
|
||||
* Set WORK(1) to optimal workspace size.
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -208,12 +208,12 @@
|
|||
*> \verbatim
|
||||
*> LWORK is INTEGER
|
||||
*> The length of the array WORK. LWORK >= 1, when N <= 1;
|
||||
*> otherwise
|
||||
*> otherwise
|
||||
*> If JOBZ = 'N' and N > 1, LWORK must be queried.
|
||||
*> LWORK = MAX(1, 8*N, dimension) where
|
||||
*> dimension = max(stage1,stage2) + (KD+1)*N + 3*N
|
||||
*> = N*KD + N*max(KD+1,FACTOPTNB)
|
||||
*> + max(2*KD*KD, KD*NTHREADS)
|
||||
*> = N*KD + N*max(KD+1,FACTOPTNB)
|
||||
*> + max(2*KD*KD, KD*NTHREADS)
|
||||
*> + (KD+1)*N + 3*N
|
||||
*> where KD is the blocking size of the reduction,
|
||||
*> FACTOPTNB is the blocking used by the QR or LQ
|
||||
|
@ -259,7 +259,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup heevx_2stage
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -277,7 +277,7 @@
|
|||
*> http://doi.acm.org/10.1145/2063384.2063394
|
||||
*>
|
||||
*> A. Haidar, J. Kurzak, P. Luszczek, 2013.
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> for multicore hardware, In Proceedings of 2013 International Conference
|
||||
*> for High Performance Computing, Networking, Storage and Analysis (SC '13).
|
||||
*> Denver, Colorado, USA, 2013.
|
||||
|
@ -285,11 +285,11 @@
|
|||
*> http://doi.acm.org/10.1145/2503210.2503292
|
||||
*>
|
||||
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> calculations based on fine-grained memory aware tasks.
|
||||
*> International Journal of High Performance Computing Applications.
|
||||
*> Volume 28 Issue 2, Pages 196-209, May 2014.
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
|
@ -334,8 +334,9 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSY
|
||||
EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE
|
||||
REAL SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE,
|
||||
$ SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SCOPY, SLACPY, SORGTR, SORMTR, SSCAL, SSTEBZ,
|
||||
|
@ -388,7 +389,7 @@
|
|||
IF( INFO.EQ.0 ) THEN
|
||||
IF( N.LE.1 ) THEN
|
||||
LWMIN = 1
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
ELSE
|
||||
KD = ILAENV2STAGE( 1, 'SSYTRD_2STAGE', JOBZ,
|
||||
$ N, -1, -1, -1 )
|
||||
|
@ -487,7 +488,7 @@
|
|||
INDWRK = INDHOUS + LHTRD
|
||||
LLWORK = LWORK - INDWRK + 1
|
||||
*
|
||||
CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, WORK( INDD ),
|
||||
CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, WORK( INDD ),
|
||||
$ WORK( INDE ), WORK( INDTAU ), WORK( INDHOUS ),
|
||||
$ LHTRD, WORK( INDWRK ), LLWORK, IINFO )
|
||||
*
|
||||
|
@ -600,7 +601,7 @@
|
|||
*
|
||||
* Set WORK(1) to optimal workspace size.
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -167,7 +167,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup hegv
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK,
|
||||
|
@ -199,7 +199,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV, LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SPOTRF, SSYEV, SSYGST, STRMM, STRSM, XERBLA
|
||||
|
@ -234,7 +235,7 @@
|
|||
LWKMIN = MAX( 1, 3*N - 1 )
|
||||
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = MAX( LWKMIN, ( NB + 2 )*N )
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -11
|
||||
|
@ -303,7 +304,7 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SSYGV
|
||||
|
|
|
@ -143,12 +143,12 @@
|
|||
*> \verbatim
|
||||
*> LWORK is INTEGER
|
||||
*> The length of the array WORK. LWORK >= 1, when N <= 1;
|
||||
*> otherwise
|
||||
*> otherwise
|
||||
*> If JOBZ = 'N' and N > 1, LWORK must be queried.
|
||||
*> LWORK = MAX(1, dimension) where
|
||||
*> dimension = max(stage1,stage2) + (KD+1)*N + 2*N
|
||||
*> = N*KD + N*max(KD+1,FACTOPTNB)
|
||||
*> + max(2*KD*KD, KD*NTHREADS)
|
||||
*> = N*KD + N*max(KD+1,FACTOPTNB)
|
||||
*> + max(2*KD*KD, KD*NTHREADS)
|
||||
*> + (KD+1)*N + 2*N
|
||||
*> where KD is the blocking size of the reduction,
|
||||
*> FACTOPTNB is the blocking used by the QR or LQ
|
||||
|
@ -186,7 +186,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup hegv_2stage
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -204,7 +204,7 @@
|
|||
*> http://doi.acm.org/10.1145/2063384.2063394
|
||||
*>
|
||||
*> A. Haidar, J. Kurzak, P. Luszczek, 2013.
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> for multicore hardware, In Proceedings of 2013 International Conference
|
||||
*> for High Performance Computing, Networking, Storage and Analysis (SC '13).
|
||||
*> Denver, Colorado, USA, 2013.
|
||||
|
@ -212,11 +212,11 @@
|
|||
*> http://doi.acm.org/10.1145/2503210.2503292
|
||||
*>
|
||||
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> calculations based on fine-grained memory aware tasks.
|
||||
*> International Journal of High Performance Computing Applications.
|
||||
*> Volume 28 Issue 2, Pages 196-209, May 2014.
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
|
@ -252,7 +252,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV2STAGE
|
||||
EXTERNAL LSAME, ILAENV2STAGE
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV2STAGE, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SPOTRF, SSYGST, STRMM, STRSM, XERBLA,
|
||||
|
@ -359,7 +360,7 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
RETURN
|
||||
*
|
||||
* End of SSYGV_2STAGE
|
||||
|
|
|
@ -197,7 +197,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup hegvd
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -245,7 +245,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SPOTRF, SSYEVD, SSYGST, STRMM, STRSM, XERBLA
|
||||
|
@ -289,7 +290,7 @@
|
|||
END IF
|
||||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
WORK( 1 ) = LOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LOPT)
|
||||
IWORK( 1 ) = LIOPT
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
|
@ -361,7 +362,7 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LOPT)
|
||||
IWORK( 1 ) = LIOPT
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -283,7 +283,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYeigen
|
||||
*> \ingroup hegvx
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -324,7 +324,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV, LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SPOTRF, SSYEVX, SSYGST, STRMM, STRSM, XERBLA
|
||||
|
@ -380,7 +381,7 @@
|
|||
LWKMIN = MAX( 1, 8*N )
|
||||
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = MAX( LWKMIN, ( NB + 3 )*N )
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -20
|
||||
|
@ -453,7 +454,7 @@
|
|||
*
|
||||
* Set WORK(1) to optimal workspace size.
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -163,7 +163,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYsolve
|
||||
*> \ingroup hesv
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,
|
||||
|
@ -190,7 +190,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL XERBLA, SSYTRF, SSYTRS, SSYTRS2
|
||||
|
@ -225,7 +226,7 @@
|
|||
CALL SSYTRF( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
|
||||
LWKOPT = INT( WORK( 1 ) )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -258,7 +259,7 @@
|
|||
*
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -154,7 +154,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYsolve
|
||||
*> \ingroup hesv_aa
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYSV_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,
|
||||
|
@ -181,7 +181,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL XERBLA, SSYTRS_AA, SSYTRF_AA
|
||||
|
@ -216,7 +217,7 @@
|
|||
$ -1, INFO )
|
||||
LWKOPT_SYTRS = INT( WORK(1) )
|
||||
LWKOPT = MAX( LWKOPT_SYTRF, LWKOPT_SYTRS )
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -238,7 +239,7 @@
|
|||
*
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -178,7 +178,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYsolve
|
||||
*> \ingroup hesv_aa_2stage
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYSV_AA_2STAGE( UPLO, N, NRHS, A, LDA, TB, LTB,
|
||||
|
@ -208,7 +208,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SSYTRF_AA_2STAGE, SSYTRS_AA_2STAGE,
|
||||
|
@ -268,7 +269,7 @@
|
|||
*
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -205,7 +205,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup singleSYsolve
|
||||
*> \ingroup hesv_rk
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -247,7 +247,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL XERBLA, SSYTRF_RK, SSYTRS_3
|
||||
|
@ -282,7 +283,7 @@
|
|||
CALL SSYTRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, -1, INFO )
|
||||
LWKOPT = INT( WORK( 1 ) )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -305,7 +306,7 @@
|
|||
*
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -181,7 +181,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYsolve
|
||||
*> \ingroup hesv_rook
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -223,7 +223,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL XERBLA, SSYTRF_ROOK, SSYTRS_ROOK
|
||||
|
@ -258,7 +259,7 @@
|
|||
CALL SSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
|
||||
LWKOPT = INT( WORK( 1 ) )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -281,7 +282,7 @@
|
|||
*
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -275,7 +275,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYsolve
|
||||
*> \ingroup hesvx
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYSVX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B,
|
||||
|
@ -311,8 +311,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
REAL SLAMCH, SLANSY
|
||||
EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY
|
||||
REAL SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLACPY, SSYCON, SSYRFS, SSYTRF, SSYTRS, XERBLA
|
||||
|
@ -354,7 +354,7 @@
|
|||
NB = ILAENV( 1, 'SSYTRF', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = MAX( LWKOPT, N*NB )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -404,7 +404,7 @@
|
|||
IF( RCOND.LT.SLAMCH( 'Epsilon' ) )
|
||||
$ INFO = N + 1
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -139,7 +139,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYcomputational
|
||||
*> \ingroup hetrd
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -223,7 +223,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -248,7 +249,7 @@
|
|||
*
|
||||
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = N*NB
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -365,7 +366,7 @@
|
|||
$ TAU( I ), IINFO )
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SSYTRD
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
* Definition:
|
||||
* ===========
|
||||
*
|
||||
* SUBROUTINE SSYTRD_SB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB,
|
||||
* SUBROUTINE SSYTRD_SB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB,
|
||||
* D, E, HOUS, LHOUS, WORK, LWORK, INFO )
|
||||
*
|
||||
* #if defined(_OPENMP)
|
||||
|
@ -53,12 +53,12 @@
|
|||
*> \param[in] STAGE1
|
||||
*> \verbatim
|
||||
*> STAGE1 is CHARACTER*1
|
||||
*> = 'N': "No": to mention that the stage 1 of the reduction
|
||||
*> = 'N': "No": to mention that the stage 1 of the reduction
|
||||
*> from dense to band using the ssytrd_sy2sb routine
|
||||
*> was not called before this routine to reproduce AB.
|
||||
*> In other term this routine is called as standalone.
|
||||
*> = 'Y': "Yes": to mention that the stage 1 of the
|
||||
*> reduction from dense to band using the ssytrd_sy2sb
|
||||
*> was not called before this routine to reproduce AB.
|
||||
*> In other term this routine is called as standalone.
|
||||
*> = 'Y': "Yes": to mention that the stage 1 of the
|
||||
*> reduction from dense to band using the ssytrd_sy2sb
|
||||
*> routine has been called to produce AB (e.g., AB is
|
||||
*> the output of ssytrd_sy2sb.
|
||||
*> \endverbatim
|
||||
|
@ -66,10 +66,10 @@
|
|||
*> \param[in] VECT
|
||||
*> \verbatim
|
||||
*> VECT is CHARACTER*1
|
||||
*> = 'N': No need for the Housholder representation,
|
||||
*> = 'N': No need for the Housholder representation,
|
||||
*> and thus LHOUS is of size max(1, 4*N);
|
||||
*> = 'V': the Householder representation is needed to
|
||||
*> either generate or to apply Q later on,
|
||||
*> = 'V': the Householder representation is needed to
|
||||
*> either generate or to apply Q later on,
|
||||
*> then LHOUS is to be queried and computed.
|
||||
*> (NOT AVAILABLE IN THIS RELEASE).
|
||||
*> \endverbatim
|
||||
|
@ -147,7 +147,7 @@
|
|||
*> message related to LHOUS is issued by XERBLA.
|
||||
*> LHOUS = MAX(1, dimension) where
|
||||
*> dimension = 4*N if VECT='N'
|
||||
*> not available now if VECT='H'
|
||||
*> not available now if VECT='H'
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] WORK
|
||||
|
@ -188,7 +188,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup real16OTHERcomputational
|
||||
*> \ingroup hetrd_hb2st
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -208,7 +208,7 @@
|
|||
*> http://doi.acm.org/10.1145/2063384.2063394
|
||||
*>
|
||||
*> A. Haidar, J. Kurzak, P. Luszczek, 2013.
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> An improved parallel singular value algorithm and its implementation
|
||||
*> for multicore hardware, In Proceedings of 2013 International Conference
|
||||
*> for High Performance Computing, Networking, Storage and Analysis (SC '13).
|
||||
*> Denver, Colorado, USA, 2013.
|
||||
|
@ -216,16 +216,16 @@
|
|||
*> http://doi.acm.org/10.1145/2503210.2503292
|
||||
*>
|
||||
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
|
||||
*> calculations based on fine-grained memory aware tasks.
|
||||
*> International Journal of High Performance Computing Applications.
|
||||
*> Volume 28 Issue 2, Pages 196-209, May 2014.
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*> http://hpc.sagepub.com/content/28/2/196
|
||||
*>
|
||||
*> \endverbatim
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYTRD_SB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB,
|
||||
SUBROUTINE SSYTRD_SB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB,
|
||||
$ D, E, HOUS, LHOUS, WORK, LWORK, INFO )
|
||||
*
|
||||
#if defined(_OPENMP)
|
||||
|
@ -258,11 +258,11 @@
|
|||
* ..
|
||||
* .. Local Scalars ..
|
||||
LOGICAL LQUERY, WANTQ, UPPER, AFTERS1
|
||||
INTEGER I, M, K, IB, SWEEPID, MYID, SHIFT, STT, ST,
|
||||
INTEGER I, M, K, IB, SWEEPID, MYID, SHIFT, STT, ST,
|
||||
$ ED, STIND, EDIND, BLKLASTIND, COLPT, THED,
|
||||
$ STEPERCOL, GRSIZ, THGRSIZ, THGRNB, THGRID,
|
||||
$ NBTILES, TTYPE, TID, NTHREADS, DEBUG,
|
||||
$ ABDPOS, ABOFDPOS, DPOS, OFDPOS, AWPOS,
|
||||
$ ABDPOS, ABOFDPOS, DPOS, OFDPOS, AWPOS,
|
||||
$ INDA, INDW, APOS, SIZEA, LDA, INDV, INDTAU,
|
||||
$ SISEV, SIZETAU, LDV, LHMIN, LWMIN
|
||||
* ..
|
||||
|
@ -274,8 +274,9 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV2STAGE
|
||||
EXTERNAL LSAME, ILAENV2STAGE
|
||||
INTEGER ILAENV2STAGE
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV2STAGE, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -315,7 +316,7 @@
|
|||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
HOUS( 1 ) = LHMIN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -355,7 +356,7 @@
|
|||
ABDPOS = KD + 1
|
||||
ABOFDPOS = KD
|
||||
ELSE
|
||||
APOS = INDA
|
||||
APOS = INDA
|
||||
AWPOS = INDA + KD + 1
|
||||
DPOS = APOS
|
||||
OFDPOS = DPOS + 1
|
||||
|
@ -363,11 +364,11 @@
|
|||
ABOFDPOS = 2
|
||||
|
||||
ENDIF
|
||||
*
|
||||
* Case KD=0:
|
||||
* The matrix is diagonal. We just copy it (convert to "real" for
|
||||
* real because D is double and the imaginary part should be 0)
|
||||
* and store it in D. A sequential code here is better or
|
||||
*
|
||||
* Case KD=0:
|
||||
* The matrix is diagonal. We just copy it (convert to "real" for
|
||||
* real because D is double and the imaginary part should be 0)
|
||||
* and store it in D. A sequential code here is better or
|
||||
* in a parallel environment it might need two cores for D and E
|
||||
*
|
||||
IF( KD.EQ.0 ) THEN
|
||||
|
@ -382,17 +383,17 @@
|
|||
WORK( 1 ) = 1
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
* Case KD=1:
|
||||
* The matrix is already Tridiagonal. We have to make diagonal
|
||||
*
|
||||
* Case KD=1:
|
||||
* The matrix is already Tridiagonal. We have to make diagonal
|
||||
* and offdiagonal elements real, and store them in D and E.
|
||||
* For that, for real precision just copy the diag and offdiag
|
||||
* to D and E while for the COMPLEX case the bulge chasing is
|
||||
* performed to convert the hermetian tridiagonal to symmetric
|
||||
* tridiagonal. A simpler conversion formula might be used, but then
|
||||
* For that, for real precision just copy the diag and offdiag
|
||||
* to D and E while for the COMPLEX case the bulge chasing is
|
||||
* performed to convert the hermetian tridiagonal to symmetric
|
||||
* tridiagonal. A simpler conversion formula might be used, but then
|
||||
* updating the Q matrix will be required and based if Q is generated
|
||||
* or not this might complicate the story.
|
||||
*
|
||||
* or not this might complicate the story.
|
||||
*
|
||||
IF( KD.EQ.1 ) THEN
|
||||
DO 50 I = 1, N
|
||||
D( I ) = ( AB( ABDPOS, I ) )
|
||||
|
@ -413,7 +414,7 @@
|
|||
RETURN
|
||||
END IF
|
||||
*
|
||||
* Main code start here.
|
||||
* Main code start here.
|
||||
* Reduce the symmetric band of A to a tridiagonal matrix.
|
||||
*
|
||||
THGRSIZ = N
|
||||
|
@ -422,7 +423,7 @@
|
|||
NBTILES = CEILING( REAL(N)/REAL(KD) )
|
||||
STEPERCOL = CEILING( REAL(SHIFT)/REAL(GRSIZ) )
|
||||
THGRNB = CEILING( REAL(N-1)/REAL(THGRSIZ) )
|
||||
*
|
||||
*
|
||||
CALL SLACPY( "A", KD+1, N, AB, LDAB, WORK( APOS ), LDA )
|
||||
CALL SLASET( "A", KD, N, ZERO, ZERO, WORK( AWPOS ), LDA )
|
||||
*
|
||||
|
@ -431,7 +432,7 @@
|
|||
*
|
||||
#if defined(_OPENMP)
|
||||
!$OMP PARALLEL PRIVATE( TID, THGRID, BLKLASTIND )
|
||||
!$OMP$ PRIVATE( THED, I, M, K, ST, ED, STT, SWEEPID )
|
||||
!$OMP$ PRIVATE( THED, I, M, K, ST, ED, STT, SWEEPID )
|
||||
!$OMP$ PRIVATE( MYID, TTYPE, COLPT, STIND, EDIND )
|
||||
!$OMP$ SHARED ( UPLO, WANTQ, INDV, INDTAU, HOUS, WORK)
|
||||
!$OMP$ SHARED ( N, KD, IB, NBTILES, LDA, LDV, INDA )
|
||||
|
@ -440,7 +441,7 @@
|
|||
#endif
|
||||
*
|
||||
* main bulge chasing loop
|
||||
*
|
||||
*
|
||||
DO 100 THGRID = 1, THGRNB
|
||||
STT = (THGRID-1)*THGRSIZ+1
|
||||
THED = MIN( (STT + THGRSIZ -1), (N-1))
|
||||
|
@ -451,7 +452,7 @@
|
|||
ST = STT
|
||||
DO 130 SWEEPID = ST, ED
|
||||
DO 140 K = 1, GRSIZ
|
||||
MYID = (I-SWEEPID)*(STEPERCOL*GRSIZ)
|
||||
MYID = (I-SWEEPID)*(STEPERCOL*GRSIZ)
|
||||
$ + (M-1)*GRSIZ + K
|
||||
IF ( MYID.EQ.1 ) THEN
|
||||
TTYPE = 1
|
||||
|
@ -477,16 +478,16 @@
|
|||
ENDIF
|
||||
*
|
||||
* Call the kernel
|
||||
*
|
||||
*
|
||||
#if defined(_OPENMP) && _OPENMP >= 201307
|
||||
IF( TTYPE.NE.1 ) THEN
|
||||
IF( TTYPE.NE.1 ) THEN
|
||||
!$OMP TASK DEPEND(in:WORK(MYID+SHIFT-1))
|
||||
!$OMP$ DEPEND(in:WORK(MYID-1))
|
||||
!$OMP$ DEPEND(out:WORK(MYID))
|
||||
TID = OMP_GET_THREAD_NUM()
|
||||
CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE,
|
||||
CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE,
|
||||
$ STIND, EDIND, SWEEPID, N, KD, IB,
|
||||
$ WORK ( INDA ), LDA,
|
||||
$ WORK ( INDA ), LDA,
|
||||
$ HOUS( INDV ), HOUS( INDTAU ), LDV,
|
||||
$ WORK( INDW + TID*KD ) )
|
||||
!$OMP END TASK
|
||||
|
@ -494,20 +495,20 @@
|
|||
!$OMP TASK DEPEND(in:WORK(MYID+SHIFT-1))
|
||||
!$OMP$ DEPEND(out:WORK(MYID))
|
||||
TID = OMP_GET_THREAD_NUM()
|
||||
CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE,
|
||||
CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE,
|
||||
$ STIND, EDIND, SWEEPID, N, KD, IB,
|
||||
$ WORK ( INDA ), LDA,
|
||||
$ WORK ( INDA ), LDA,
|
||||
$ HOUS( INDV ), HOUS( INDTAU ), LDV,
|
||||
$ WORK( INDW + TID*KD ) )
|
||||
!$OMP END TASK
|
||||
ENDIF
|
||||
#else
|
||||
CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE,
|
||||
CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE,
|
||||
$ STIND, EDIND, SWEEPID, N, KD, IB,
|
||||
$ WORK ( INDA ), LDA,
|
||||
$ WORK ( INDA ), LDA,
|
||||
$ HOUS( INDV ), HOUS( INDTAU ), LDV,
|
||||
$ WORK( INDW ) )
|
||||
#endif
|
||||
#endif
|
||||
IF ( BLKLASTIND.GE.(N-1) ) THEN
|
||||
STT = STT + 1
|
||||
EXIT
|
||||
|
@ -522,14 +523,14 @@
|
|||
!$OMP END MASTER
|
||||
!$OMP END PARALLEL
|
||||
#endif
|
||||
*
|
||||
*
|
||||
* Copy the diagonal from A to D. Note that D is REAL thus only
|
||||
* the Real part is needed, the imaginary part should be zero.
|
||||
*
|
||||
DO 150 I = 1, N
|
||||
D( I ) = ( WORK( DPOS+(I-1)*LDA ) )
|
||||
150 CONTINUE
|
||||
*
|
||||
*
|
||||
* Copy the off diagonal from A to E. Note that E is REAL thus only
|
||||
* the Real part is needed, the imaginary part should be zero.
|
||||
*
|
||||
|
@ -544,10 +545,10 @@
|
|||
ENDIF
|
||||
*
|
||||
HOUS( 1 ) = LHMIN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
RETURN
|
||||
*
|
||||
* End of SSYTRD_SB2ST
|
||||
*
|
||||
END
|
||||
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYcomputational
|
||||
*> \ingroup hetrd_he2hb
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -283,7 +283,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV2STAGE
|
||||
EXTERNAL LSAME, ILAENV2STAGE
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV2STAGE, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -313,7 +314,7 @@
|
|||
CALL XERBLA( 'SSYTRD_SY2SB', -INFO )
|
||||
RETURN
|
||||
ELSE IF( LQUERY ) THEN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
|
@ -506,7 +507,7 @@
|
|||
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
RETURN
|
||||
*
|
||||
* End of SSYTRD_SY2SB
|
||||
|
|
|
@ -135,7 +135,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYcomputational
|
||||
*> \ingroup hetrf
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -202,7 +202,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLASYF, SSYTF2, XERBLA
|
||||
|
@ -233,7 +234,7 @@
|
|||
*
|
||||
NB = ILAENV( 1, 'SSYTRF', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = MAX( 1, N*NB )
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -352,7 +353,7 @@
|
|||
END IF
|
||||
*
|
||||
40 CONTINUE
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SSYTRF
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYcomputational
|
||||
*> \ingroup hetrf_aa
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYTRF_AA( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
|
||||
|
@ -159,7 +159,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLASYF_AA, SGEMV, SSCAL, SCOPY, SSWAP, SGEMM,
|
||||
|
@ -191,7 +192,7 @@
|
|||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
LWKOPT = (NB+1)*N
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -457,7 +458,7 @@
|
|||
END IF
|
||||
*
|
||||
20 CONTINUE
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SSYTRF_AA
|
||||
|
|
|
@ -152,7 +152,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYcomputational
|
||||
*> \ingroup hetrf_aa_2stage
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV,
|
||||
|
@ -187,7 +187,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL XERBLA, SCOPY, SLACPY,
|
||||
|
@ -230,7 +231,7 @@
|
|||
TB( 1 ) = (3*NB+1)*N
|
||||
END IF
|
||||
IF( WQUERY ) THEN
|
||||
WORK( 1 ) = N*NB
|
||||
WORK( 1 ) = SROUNDUP_LWORK(N*NB)
|
||||
END IF
|
||||
END IF
|
||||
IF( TQUERY .OR. WQUERY ) THEN
|
||||
|
|
|
@ -229,7 +229,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup singleSYcomputational
|
||||
*> \ingroup hetrf_rk
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -280,7 +280,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLASYF_RK, SSYTF2_RK, SSWAP, XERBLA
|
||||
|
@ -311,7 +312,7 @@
|
|||
*
|
||||
NB = ILAENV( 1, 'SSYTRF_RK', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = MAX( 1, N*NB )
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -487,7 +488,7 @@
|
|||
*
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SSYTRF_RK
|
||||
|
|
|
@ -146,7 +146,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYcomputational
|
||||
*> \ingroup hetrf_rook
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -228,7 +228,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLASYF_ROOK, SSYTF2_ROOK, XERBLA
|
||||
|
@ -259,7 +260,7 @@
|
|||
*
|
||||
NB = ILAENV( 1, 'SSYTRF_ROOK', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = MAX( 1, N*NB )
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
END IF
|
||||
*
|
||||
IF( INFO.NE.0 ) THEN
|
||||
|
@ -382,7 +383,7 @@
|
|||
END IF
|
||||
*
|
||||
40 CONTINUE
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
*
|
||||
* End of SSYTRF_ROOK
|
||||
|
|
|
@ -152,7 +152,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup singleSYcomputational
|
||||
*> \ingroup hetri_3
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -190,7 +190,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SSYTRI_3X, XERBLA
|
||||
|
@ -225,7 +226,7 @@
|
|||
CALL XERBLA( 'SSYTRI_3', -INFO )
|
||||
RETURN
|
||||
ELSE IF( LQUERY ) THEN
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
|
@ -236,7 +237,7 @@
|
|||
*
|
||||
CALL SSYTRI_3X( UPLO, N, A, LDA, E, IPIV, WORK, NB, INFO )
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -123,7 +123,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYcomputational
|
||||
*> \ingroup hetrs_aa
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE SSYTRS_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB,
|
||||
|
@ -155,7 +155,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
EXTERNAL LSAME
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SGTSV, SSWAP, SLACPY, STRSM, XERBLA
|
||||
|
@ -186,7 +187,7 @@
|
|||
RETURN
|
||||
ELSE IF( LQUERY ) THEN
|
||||
LWKOPT = (3*N-2)
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -195,7 +195,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realGEcomputational
|
||||
*> \ingroup tgexc
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -241,6 +241,10 @@
|
|||
LOGICAL LQUERY
|
||||
INTEGER HERE, LWMIN, NBF, NBL, NBNEXT
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL STGEX2, XERBLA
|
||||
* ..
|
||||
|
@ -533,7 +537,7 @@
|
|||
$ GO TO 20
|
||||
END IF
|
||||
ILST = HERE
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
RETURN
|
||||
*
|
||||
* End of STGEXC
|
||||
|
|
|
@ -304,7 +304,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup tgsen
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -490,8 +490,8 @@
|
|||
$ XERBLA
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
REAL SLAMCH
|
||||
EXTERNAL SLAMCH
|
||||
REAL SLAMCH, SROUNDUP_LWORK
|
||||
EXTERNAL SLAMCH, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC MAX, SIGN, SQRT
|
||||
|
@ -571,7 +571,7 @@
|
|||
LIWMIN = 1
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
|
@ -852,7 +852,7 @@
|
|||
END IF
|
||||
70 CONTINUE
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -230,7 +230,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup tgsna
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -416,8 +416,9 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
REAL SDOT, SLAMCH, SLAPY2, SNRM2
|
||||
EXTERNAL LSAME, SDOT, SLAMCH, SLAPY2, SNRM2
|
||||
REAL SDOT, SLAMCH, SLAPY2, SNRM2, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SDOT, SLAMCH, SLAPY2, SNRM2,
|
||||
$ SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SGEMV, SLACPY, SLAG2, STGEXC, STGSYL, XERBLA
|
||||
|
@ -490,7 +491,7 @@
|
|||
ELSE
|
||||
LWMIN = N
|
||||
END IF
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
*
|
||||
IF( MM.LT.M ) THEN
|
||||
INFO = -15
|
||||
|
@ -689,7 +690,7 @@
|
|||
$ KS = KS + 1
|
||||
*
|
||||
20 CONTINUE
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
RETURN
|
||||
*
|
||||
* End of STGSNA
|
||||
|
|
|
@ -261,7 +261,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realSYcomputational
|
||||
*> \ingroup tgsyl
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -331,7 +331,8 @@
|
|||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV
|
||||
EXTERNAL LSAME, ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SGEMM, SLACPY, SLASET, SSCAL, STGSY2, XERBLA
|
||||
|
@ -384,7 +385,7 @@
|
|||
ELSE
|
||||
LWMIN = 1
|
||||
END IF
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
*
|
||||
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -20
|
||||
|
@ -670,7 +671,7 @@
|
|||
*
|
||||
END IF
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -231,7 +231,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup trsen
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
|
@ -346,8 +346,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
REAL SLANGE
|
||||
EXTERNAL LSAME, SLANGE
|
||||
REAL SLANGE, SROUNDUP_LWORK
|
||||
EXTERNAL LSAME, SLANGE, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SLACN2, SLACPY, STREXC, STRSYL, XERBLA
|
||||
|
@ -427,7 +427,7 @@
|
|||
END IF
|
||||
*
|
||||
IF( INFO.EQ.0 ) THEN
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
END IF
|
||||
*
|
||||
|
@ -558,7 +558,7 @@
|
|||
END IF
|
||||
60 CONTINUE
|
||||
*
|
||||
WORK( 1 ) = LWMIN
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
|
||||
IWORK( 1 ) = LIWMIN
|
||||
*
|
||||
RETURN
|
||||
|
|
|
@ -116,7 +116,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup realOTHERcomputational
|
||||
*> \ingroup tzrzf
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
|
@ -179,7 +179,8 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
INTEGER ILAENV
|
||||
EXTERNAL ILAENV
|
||||
REAL SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -207,7 +208,7 @@
|
|||
LWKOPT = M*NB
|
||||
LWKMIN = MAX( 1, M )
|
||||
END IF
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -7
|
||||
|
@ -301,7 +302,7 @@
|
|||
IF( MU.GT.0 )
|
||||
$ CALL SLATRZ( MU, N, N-M, A, LDA, TAU, WORK )
|
||||
*
|
||||
WORK( 1 ) = LWKOPT
|
||||
WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue