Skip to content
Snippets Groups Projects
Commit ae8a72c0 authored by Piotr Luszczek's avatar Piotr Luszczek Committed by Adam J. Stewart
Browse files

netlib-scalapack: Add int overflow patch (#14276)

parent e2ec1c76
No related branches found
No related tags found
No related merge requests found
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): ...@@ -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):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment