netlib-scalapack: Add int overflow patch (#14276)
This commit is contained in:
parent
e2ec1c76ce
commit
ae8a72c0da
@ -0,0 +1,313 @@
|
|||||||
|
diff --git a/PBLAS/SRC/pdamax_.c b/PBLAS/SRC/pdamax_.c
|
||||||
|
index 3f4690a..89d8993 100644
|
||||||
|
--- a/PBLAS/SRC/pdamax_.c
|
||||||
|
+++ b/PBLAS/SRC/pdamax_.c
|
||||||
|
@@ -233,7 +233,7 @@ void pdamax_( N, AMAX, INDX, X, IX, JX, DESCX, INCX )
|
||||||
|
if( ( ( myrow == Xrow ) || ( Xrow < 0 ) ) &&
|
||||||
|
( ( mycol == Xcol ) || ( Xcol < 0 ) ) )
|
||||||
|
{
|
||||||
|
- *INDX = *JX; *AMAX = X[Xii+Xjj*Xd[LLD_]];
|
||||||
|
+ *INDX = *JX; *AMAX = *Mptr(X,Xii,Xjj,Xd[LLD_],1);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@@ -260,9 +260,9 @@ void pdamax_( N, AMAX, INDX, X, IX, JX, DESCX, INCX )
|
||||||
|
{
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
Xlindx = Xjj - 1 +
|
||||||
|
- idamax_( &Xnq, ((char*)(X+(Xii+Xjj*Xld))), &Xld );
|
||||||
|
+ idamax_( &Xnq, ((char*)Mptr(X,Xii,Xjj,Xld,1)), &Xld );
|
||||||
|
Mindxl2g( Xgindx, Xlindx, Xinb, Xnb, mycol, Xsrc, npcol );
|
||||||
|
- work[0] = X[Xii+Xlindx*Xld];
|
||||||
|
+ work[0] = *Mptr(X,Xii,Xlindx,Xld,1);
|
||||||
|
work[1] = ((double)( Xgindx+1 ));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
@@ -343,8 +343,8 @@ l_20:
|
||||||
|
*/
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
Xlindx = Xjj - 1 +
|
||||||
|
- idamax_( &Xnq, ((char*)(X+(Xii+Xjj*Xld))), &Xld );
|
||||||
|
- *AMAX = X[Xii+Xlindx*Xld];
|
||||||
|
+ idamax_( &Xnq, ((char*)Mptr(X,Xii,Xjj,Xld,1)), &Xld );
|
||||||
|
+ *AMAX = *Mptr(X,Xii,Xlindx,Xld,1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@@ -419,9 +419,9 @@ l_20:
|
||||||
|
{
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
Xlindx = Xii - 1 +
|
||||||
|
- idamax_( &Xnp, ((char*)(X+(Xii+Xjj*Xld))), INCX );
|
||||||
|
+ idamax_( &Xnp, ((char*)Mptr(X,Xii,Xjj,Xld,1)), INCX );
|
||||||
|
Mindxl2g( Xgindx, Xlindx, Ximb, Xmb, myrow, Xsrc, nprow );
|
||||||
|
- work[0] = X[Xlindx+Xjj*Xld];
|
||||||
|
+ work[0] = *Mptr(X,Xlindx,Xjj,Xld,1);
|
||||||
|
work[1] = ((double)( Xgindx+1 ));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
@@ -503,8 +503,8 @@ l_40:
|
||||||
|
*/
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
Xlindx = Xii - 1 +
|
||||||
|
- idamax_( &Xnp, ((char*)(X+(Xii+Xjj*Xld))), INCX );
|
||||||
|
- *AMAX = X[Xlindx+Xjj*Xld];
|
||||||
|
+ idamax_( &Xnp, ((char*)Mptr(X,Xii,Xjj,Xld,1)), INCX );
|
||||||
|
+ *AMAX = *Mptr(X,Xlindx,Xjj,Xld,1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
diff --git a/PBLAS/SRC/pdasum_.c b/PBLAS/SRC/pdasum_.c
|
||||||
|
index 5b9ce8b..3a56c23 100644
|
||||||
|
--- a/PBLAS/SRC/pdasum_.c
|
||||||
|
+++ b/PBLAS/SRC/pdasum_.c
|
||||||
|
@@ -225,7 +225,7 @@ void pdasum_( N, ASUM, X, IX, JX, DESCX, INCX )
|
||||||
|
if( ( ( myrow == Xrow ) || ( Xrow < 0 ) ) &&
|
||||||
|
( ( mycol == Xcol ) || ( Xcol < 0 ) ) )
|
||||||
|
{
|
||||||
|
- *ASUM = ABS( X[Xii+Xjj*Xd[LLD_]] );
|
||||||
|
+ *ASUM = ABS( *Mptr(X,Xii,Xjj,Xd[LLD_],1) );
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@@ -243,7 +243,7 @@ void pdasum_( N, ASUM, X, IX, JX, DESCX, INCX )
|
||||||
|
if( Xnq > 0 )
|
||||||
|
{
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
- dvasum_( &Xnq, ((char *) ASUM), ((char *)( X+(Xii+Xjj*Xld) )),
|
||||||
|
+ dvasum_( &Xnq, ((char *) ASUM), ((char *)Mptr( X,Xii,Xjj,Xld,1 )),
|
||||||
|
&Xld );
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
@@ -276,7 +276,7 @@ void pdasum_( N, ASUM, X, IX, JX, DESCX, INCX )
|
||||||
|
if( Xnp > 0 )
|
||||||
|
{
|
||||||
|
dvasum_( &Xnp, ((char *) ASUM),
|
||||||
|
- ((char *)( X+(Xii+Xjj*Xd[LLD_]) )), INCX );
|
||||||
|
+ ((char *)Mptr( X,Xii,Xjj,Xd[LLD_],1) ), INCX );
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* If Xnp <= 0, ASUM is zero (see initialization above)
|
||||||
|
diff --git a/PBLAS/SRC/pdger_.c b/PBLAS/SRC/pdger_.c
|
||||||
|
index e84aa62..517a33c 100644
|
||||||
|
--- a/PBLAS/SRC/pdger_.c
|
||||||
|
+++ b/PBLAS/SRC/pdger_.c
|
||||||
|
@@ -286,7 +286,7 @@ void pdger_( M, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY,
|
||||||
|
if( ( Amp > 0 ) && ( Anq > 0 ) )
|
||||||
|
{
|
||||||
|
dger_( &Amp, &Anq, ((char *) ALPHA), XA, &ione, YA, &YAd[LLD_],
|
||||||
|
- ((char *) (A+(Aii+Ajj*Ald))), &Ald );
|
||||||
|
+ ((char *)Mptr(A,Aii,Ajj,Ald,1)), &Ald );
|
||||||
|
}
|
||||||
|
if( XAfr ) free( XA );
|
||||||
|
if( YAfr ) free( YA );
|
||||||
|
diff --git a/PBLAS/SRC/pdnrm2_.c b/PBLAS/SRC/pdnrm2_.c
|
||||||
|
index f5bfb1a..8e3bab9 100644
|
||||||
|
--- a/PBLAS/SRC/pdnrm2_.c
|
||||||
|
+++ b/PBLAS/SRC/pdnrm2_.c
|
||||||
|
@@ -224,7 +224,7 @@ void pdnrm2_( N, NORM2, X, IX, JX, DESCX, INCX )
|
||||||
|
*/
|
||||||
|
if( ( ( myrow == Xrow ) || ( Xrow < 0 ) ) &&
|
||||||
|
( ( mycol == Xcol ) || ( Xcol < 0 ) ) )
|
||||||
|
- *NORM2 = ABS( X[Xii+Xjj*Xd[LLD_]] );
|
||||||
|
+ *NORM2 = ABS( *Mptr(X,Xii,Xjj,Xd[LLD_],1) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if( *INCX == Xd[M_] )
|
||||||
|
@@ -246,7 +246,7 @@ void pdnrm2_( N, NORM2, X, IX, JX, DESCX, INCX )
|
||||||
|
if( Xnq > 0 )
|
||||||
|
{
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
- Xptr = X+(Xii+Xjj*Xld);
|
||||||
|
+ Xptr = Mptr(X,Xii,Xjj,Xld,1);
|
||||||
|
|
||||||
|
for( k = 0; k < Xnq; k++ )
|
||||||
|
{
|
||||||
|
@@ -366,7 +366,7 @@ l_20:
|
||||||
|
Xnp = PB_Cnumroc( *N, Xi, Xd[IMB_], Xd[MB_], myrow, Xd[RSRC_], nprow );
|
||||||
|
if( Xnp > 0 )
|
||||||
|
{
|
||||||
|
- Xptr = X+(Xii+Xjj*Xd[LLD_]);
|
||||||
|
+ Xptr = Mptr(X,Xii,Xjj,Xd[LLD_],1);
|
||||||
|
|
||||||
|
for( k = 0; k < Xnp; k++ )
|
||||||
|
{
|
||||||
|
diff --git a/PBLAS/SRC/pdscal_.c b/PBLAS/SRC/pdscal_.c
|
||||||
|
index 28ddc66..b7c0964 100644
|
||||||
|
--- a/PBLAS/SRC/pdscal_.c
|
||||||
|
+++ b/PBLAS/SRC/pdscal_.c
|
||||||
|
@@ -210,12 +210,12 @@ void pdscal_( N, ALPHA, X, IX, JX, DESCX, INCX )
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
if( ALPHA[REAL_PART] == ZERO )
|
||||||
|
{
|
||||||
|
- dset_( &Xnq, ((char *) ALPHA), ((char *)(X+(Xii+Xjj*Xld))),
|
||||||
|
+ dset_( &Xnq, ((char *) ALPHA), ((char *)Mptr(X,Xii,Xjj,Xld,1)),
|
||||||
|
&Xld );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- dscal_( &Xnq, ((char *) ALPHA), ((char *)(X+(Xii+Xjj*Xld))),
|
||||||
|
+ dscal_( &Xnq, ((char *) ALPHA), ((char *)Mptr(X,Xii,Xjj,Xld,1)),
|
||||||
|
&Xld );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -239,12 +239,12 @@ void pdscal_( N, ALPHA, X, IX, JX, DESCX, INCX )
|
||||||
|
if( ALPHA[REAL_PART] == ZERO )
|
||||||
|
{
|
||||||
|
dset_( &Xnp, ((char *) ALPHA),
|
||||||
|
- ((char *)( X+(Xii+Xjj*Xd[LLD_]) )), INCX );
|
||||||
|
+ ((char *)Mptr( X,Xii,Xjj,Xd[LLD_],1) ), INCX );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dscal_( &Xnp, ((char *) ALPHA),
|
||||||
|
- ((char *)( X+(Xii+Xjj*Xd[LLD_]) )), INCX );
|
||||||
|
+ ((char *)Mptr( X,Xii,Xjj,Xd[LLD_],1) ), INCX );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/PBLAS/SRC/psamax_.c b/PBLAS/SRC/psamax_.c
|
||||||
|
index a23b28a..8cdbd8e 100644
|
||||||
|
--- a/PBLAS/SRC/psamax_.c
|
||||||
|
+++ b/PBLAS/SRC/psamax_.c
|
||||||
|
@@ -260,7 +260,7 @@ void psamax_( N, AMAX, INDX, X, IX, JX, DESCX, INCX )
|
||||||
|
{
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
Xlindx = Xjj - 1 +
|
||||||
|
- isamax_( &Xnq, ((char*)(X+(Xii+Xjj*Xld))), &Xld );
|
||||||
|
+ isamax_( &Xnq, ((char*)(Mptr(X,Xii,Xjj,Xld,1))), &Xld );
|
||||||
|
Mindxl2g( Xgindx, Xlindx, Xinb, Xnb, mycol, Xsrc, npcol );
|
||||||
|
work[0] = X[Xii+Xlindx*Xld];
|
||||||
|
work[1] = ((float )( Xgindx+1 ));
|
||||||
|
@@ -343,8 +343,8 @@ l_20:
|
||||||
|
*/
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
Xlindx = Xjj - 1 +
|
||||||
|
- isamax_( &Xnq, ((char*)(X+(Xii+Xjj*Xld))), &Xld );
|
||||||
|
- *AMAX = X[Xii+Xlindx*Xld];
|
||||||
|
+ isamax_( &Xnq, ((char*)(Mptr(X,Xii,Xjj,Xld, 1))), &Xld );
|
||||||
|
+ *AMAX = *Mptr(X,Xii,Xlindx,Xld,1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@@ -419,9 +419,9 @@ l_20:
|
||||||
|
{
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
Xlindx = Xii - 1 +
|
||||||
|
- isamax_( &Xnp, ((char*)(X+(Xii+Xjj*Xld))), INCX );
|
||||||
|
+ isamax_( &Xnp, ((char*)Mptr(X,Xii,Xjj,Xld,1)), INCX );
|
||||||
|
Mindxl2g( Xgindx, Xlindx, Ximb, Xmb, myrow, Xsrc, nprow );
|
||||||
|
- work[0] = X[Xlindx+Xjj*Xld];
|
||||||
|
+ work[0] = *Mptr(X,Xlindx,Xjj,Xld,1);
|
||||||
|
work[1] = ((float )( Xgindx+1 ));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
diff --git a/PBLAS/SRC/psasum_.c b/PBLAS/SRC/psasum_.c
|
||||||
|
index a9820b3..dd6dcf1 100644
|
||||||
|
--- a/PBLAS/SRC/psasum_.c
|
||||||
|
+++ b/PBLAS/SRC/psasum_.c
|
||||||
|
@@ -225,7 +225,7 @@ void psasum_( N, ASUM, X, IX, JX, DESCX, INCX )
|
||||||
|
if( ( ( myrow == Xrow ) || ( Xrow < 0 ) ) &&
|
||||||
|
( ( mycol == Xcol ) || ( Xcol < 0 ) ) )
|
||||||
|
{
|
||||||
|
- *ASUM = ABS( X[Xii+Xjj*Xd[LLD_]] );
|
||||||
|
+ *ASUM = ABS( *Mptr(X,Xii,Xjj,Xd[LLD_],1) );
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@@ -243,7 +243,7 @@ void psasum_( N, ASUM, X, IX, JX, DESCX, INCX )
|
||||||
|
if( Xnq > 0 )
|
||||||
|
{
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
- svasum_( &Xnq, ((char *) ASUM), ((char *)( X+(Xii+Xjj*Xld) )),
|
||||||
|
+ svasum_( &Xnq, ((char *) ASUM), ((char *)Mptr( X,Xii,Xjj,Xld,1) ),
|
||||||
|
&Xld );
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
@@ -276,7 +276,7 @@ void psasum_( N, ASUM, X, IX, JX, DESCX, INCX )
|
||||||
|
if( Xnp > 0 )
|
||||||
|
{
|
||||||
|
svasum_( &Xnp, ((char *) ASUM),
|
||||||
|
- ((char *)( X+(Xii+Xjj*Xd[LLD_]) )), INCX );
|
||||||
|
+ ((char *)Mptr( X,Xii,Xjj,Xd[LLD_],1) ), INCX );
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* If Xnp <= 0, ASUM is zero (see initialization above)
|
||||||
|
diff --git a/PBLAS/SRC/psger_.c b/PBLAS/SRC/psger_.c
|
||||||
|
index f7774a4..47af5e5 100644
|
||||||
|
--- a/PBLAS/SRC/psger_.c
|
||||||
|
+++ b/PBLAS/SRC/psger_.c
|
||||||
|
@@ -286,7 +286,7 @@ void psger_( M, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY,
|
||||||
|
if( ( Amp > 0 ) && ( Anq > 0 ) )
|
||||||
|
{
|
||||||
|
sger_( &Amp, &Anq, ((char *) ALPHA), XA, &ione, YA, &YAd[LLD_],
|
||||||
|
- ((char *) (A+(Aii+Ajj*Ald))), &Ald );
|
||||||
|
+ ((char *)Mptr(A,Aii,Ajj,Ald,1)), &Ald );
|
||||||
|
}
|
||||||
|
if( XAfr ) free( XA );
|
||||||
|
if( YAfr ) free( YA );
|
||||||
|
diff --git a/PBLAS/SRC/psnrm2_.c b/PBLAS/SRC/psnrm2_.c
|
||||||
|
index ff047c2..05eb00b 100644
|
||||||
|
--- a/PBLAS/SRC/psnrm2_.c
|
||||||
|
+++ b/PBLAS/SRC/psnrm2_.c
|
||||||
|
@@ -224,7 +224,7 @@ void psnrm2_( N, NORM2, X, IX, JX, DESCX, INCX )
|
||||||
|
*/
|
||||||
|
if( ( ( myrow == Xrow ) || ( Xrow < 0 ) ) &&
|
||||||
|
( ( mycol == Xcol ) || ( Xcol < 0 ) ) )
|
||||||
|
- *NORM2 = ABS( X[Xii+Xjj*Xd[LLD_]] );
|
||||||
|
+ *NORM2 = ABS( *Mptr(X,Xii,Xjj,Xd[LLD_],1) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if( *INCX == Xd[M_] )
|
||||||
|
@@ -246,7 +246,7 @@ void psnrm2_( N, NORM2, X, IX, JX, DESCX, INCX )
|
||||||
|
if( Xnq > 0 )
|
||||||
|
{
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
- Xptr = X+(Xii+Xjj*Xld);
|
||||||
|
+ Xptr = Mptr(X,Xii,Xjj,Xld,1);
|
||||||
|
|
||||||
|
for( k = 0; k < Xnq; k++ )
|
||||||
|
{
|
||||||
|
@@ -366,7 +366,7 @@ l_20:
|
||||||
|
Xnp = PB_Cnumroc( *N, Xi, Xd[IMB_], Xd[MB_], myrow, Xd[RSRC_], nprow );
|
||||||
|
if( Xnp > 0 )
|
||||||
|
{
|
||||||
|
- Xptr = X+(Xii+Xjj*Xd[LLD_]);
|
||||||
|
+ Xptr = Mptr(X,Xii,Xjj,Xd[LLD_],1);
|
||||||
|
|
||||||
|
for( k = 0; k < Xnp; k++ )
|
||||||
|
{
|
||||||
|
diff --git a/PBLAS/SRC/psscal_.c b/PBLAS/SRC/psscal_.c
|
||||||
|
index d3652e2..6eb6ee7 100644
|
||||||
|
--- a/PBLAS/SRC/psscal_.c
|
||||||
|
+++ b/PBLAS/SRC/psscal_.c
|
||||||
|
@@ -210,12 +210,12 @@ void psscal_( N, ALPHA, X, IX, JX, DESCX, INCX )
|
||||||
|
Xld = Xd[LLD_];
|
||||||
|
if( ALPHA[REAL_PART] == ZERO )
|
||||||
|
{
|
||||||
|
- sset_( &Xnq, ((char *) ALPHA), ((char *)(X+(Xii+Xjj*Xld))),
|
||||||
|
+ sset_( &Xnq, ((char *) ALPHA), ((char *)Mptr(X,Xii,Xjj,Xld,1)),
|
||||||
|
&Xld );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- sscal_( &Xnq, ((char *) ALPHA), ((char *)(X+(Xii+Xjj*Xld))),
|
||||||
|
+ sscal_( &Xnq, ((char *) ALPHA), ((char *)Mptr(X,Xii,Xjj,Xld,1)),
|
||||||
|
&Xld );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -239,12 +239,12 @@ void psscal_( N, ALPHA, X, IX, JX, DESCX, INCX )
|
||||||
|
if( ALPHA[REAL_PART] == ZERO )
|
||||||
|
{
|
||||||
|
sset_( &Xnp, ((char *) ALPHA),
|
||||||
|
- ((char *)( X+(Xii+Xjj*Xd[LLD_]) )), INCX );
|
||||||
|
+ ((char *)Mptr( X,Xii,Xjj,Xd[LLD_],1) ), INCX );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sscal_( &Xnp, ((char *) ALPHA),
|
||||||
|
- ((char *)( X+(Xii+Xjj*Xd[LLD_]) )), INCX );
|
||||||
|
+ ((char *)Mptr( X,Xii,Xjj,Xd[LLD_],1 )), INCX );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -44,6 +44,8 @@ class NetlibScalapack(CMakePackage):
|
|||||||
patch("cmake_fortran_mangle.patch", when='@2.0.2:@2.0.99')
|
patch("cmake_fortran_mangle.patch", when='@2.0.2:@2.0.99')
|
||||||
# See: https://github.com/Reference-ScaLAPACK/scalapack/pull/10
|
# See: https://github.com/Reference-ScaLAPACK/scalapack/pull/10
|
||||||
patch("mpi2-compatibility.patch", when='@2.0.2:@2.0.99')
|
patch("mpi2-compatibility.patch", when='@2.0.2:@2.0.99')
|
||||||
|
# See: https://github.com/Reference-ScaLAPACK/scalapack/pull/16
|
||||||
|
patch("int_overflow.patch", when='@2.0.0:@2.1.0')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def libs(self):
|
def libs(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user