diff options
Diffstat (limited to 'gnu/packages/patches/arpack-ng-propagate-rng-state.patch')
-rw-r--r-- | gnu/packages/patches/arpack-ng-propagate-rng-state.patch | 523 |
1 files changed, 0 insertions, 523 deletions
diff --git a/gnu/packages/patches/arpack-ng-propagate-rng-state.patch b/gnu/packages/patches/arpack-ng-propagate-rng-state.patch deleted file mode 100644 index 4466bb8e50..0000000000 --- a/gnu/packages/patches/arpack-ng-propagate-rng-state.patch +++ /dev/null @@ -1,523 +0,0 @@ -Fix a bug that manifests while running the test suite of 'python-igraph': - - https://github.com/opencollab/arpack-ng/issues/401 - https://github.com/opencollab/arpack-ng/pull/414 - -From d885b7be4ecdc9c1496f2d6f256f6c0d34962459 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Szabolcs=20Horva=CC=81t?= <szhorvat@gmail.com> -Date: Sun, 9 Apr 2023 16:36:35 +0200 -Subject: [PATCH] fix: ensure that LAPACK RNG state is propagated - - - fixes #401, #410, #411 - - restores 'inits' variable removed in ce2e69a849da1d10dad5d6d3ec4db6120b3ecf50, ensuring that the RNG state is propagated - - reverts e0d67054f573da351f12a226f7c7cc65a690ef3d to ensure that seed is different on each parallel thread - - updates seed initialization of parallel pdgetv0/psgetv0 so that they match that of pzgetv0/pcgetv0 ---- - PARPACK/SRC/MPI/pcgetv0.f | 48 +++++++++++++++++++++++---------------- - PARPACK/SRC/MPI/pdgetv0.f | 40 ++++++++++++++++++++++++++------ - PARPACK/SRC/MPI/psgetv0.f | 43 ++++++++++++++++++++++++++--------- - PARPACK/SRC/MPI/pzgetv0.f | 48 +++++++++++++++++++++++---------------- - SRC/cgetv0.f | 21 ++++++++++++----- - SRC/dgetv0.f | 21 ++++++++++++----- - SRC/sgetv0.f | 21 ++++++++++++----- - SRC/zgetv0.f | 21 ++++++++++++----- - 8 files changed, 183 insertions(+), 80 deletions(-) - -diff --git a/PARPACK/SRC/MPI/pcgetv0.f b/PARPACK/SRC/MPI/pcgetv0.f -index 59e3d1658..24fe8a0f1 100644 ---- a/PARPACK/SRC/MPI/pcgetv0.f -+++ b/PARPACK/SRC/MPI/pcgetv0.f -@@ -176,13 +176,13 @@ subroutine pcgetv0 - c | Local Scalars & Arrays | - c %------------------------% - c -- logical first, orth -+ logical first, inits, orth - integer idist, iseed(4), iter, msglvl, jj, myid, igen - Real - & rnorm0 - Complex - & cnorm, cnorm2 -- save first, iseed, iter, msglvl, orth, rnorm0 -+ save first, iseed, inits, iter, msglvl, orth, rnorm0 - c - Complex - & cnorm_buf, buf2(1) -@@ -203,6 +203,12 @@ subroutine pcgetv0 - & ccdotc - external ccdotc, pscnorm2, slapy2 - c -+c %-----------------% -+c | Data Statements | -+c %-----------------% -+c -+ data inits /.true./ -+c - c %-----------------------% - c | Executable Statements | - c %-----------------------% -@@ -213,26 +219,30 @@ subroutine pcgetv0 - c | random number generator | - c %-----------------------------------% - c -+ if (inits) then - c --c %-----------------------------------% --c | Generate a seed on each processor | --c | using process id (myid). | --c | Note: the seed must be between 1 | --c | and 4095. iseed(4) must be odd. | --c %-----------------------------------% -+c %-----------------------------------% -+c | Generate a seed on each processor | -+c | using process id (myid). | -+c | Note: the seed must be between 1 | -+c | and 4095. iseed(4) must be odd. | -+c %-----------------------------------% - c -- call MPI_COMM_RANK(comm, myid, ierr) -- igen = 1000 + 2*myid + 1 -- if (igen .gt. 4095) then -- write(0,*) 'Error in p_getv0: seed exceeds 4095!' -- end if -+ call MPI_COMM_RANK(comm, myid, ierr) -+ igen = 1000 + 2*myid + 1 -+ if (igen .gt. 4095) then -+ write(0,*) 'Error in p_getv0: seed exceeds 4095!' -+ end if -+c -+ iseed(1) = igen/1000 -+ igen = mod(igen,1000) -+ iseed(2) = igen/100 -+ igen = mod(igen,100) -+ iseed(3) = igen/10 -+ iseed(4) = mod(igen,10) - c -- iseed(1) = igen/1000 -- igen = mod(igen,1000) -- iseed(2) = igen/100 -- igen = mod(igen,100) -- iseed(3) = igen/10 -- iseed(4) = 7 -+ inits = .false. -+ end if - c - if (ido .eq. 0) then - c -diff --git a/PARPACK/SRC/MPI/pdgetv0.f b/PARPACK/SRC/MPI/pdgetv0.f -index 0f348b820..5a1956997 100644 ---- a/PARPACK/SRC/MPI/pdgetv0.f -+++ b/PARPACK/SRC/MPI/pdgetv0.f -@@ -177,11 +177,11 @@ subroutine pdgetv0 - c | Local Scalars & Arrays | - c %------------------------% - c -- logical first, orth -- integer idist, iseed(4), iter, msglvl, jj -+ logical first, inits, orth -+ integer idist, iseed(4), iter, msglvl, jj, myid, igen - Double precision - & rnorm0, buf2(1) -- save first, iseed, iter, msglvl, orth, rnorm0 -+ save first, iseed, inits, iter, msglvl, orth, rnorm0 - c - Double precision - & rnorm_buf -@@ -206,6 +206,12 @@ subroutine pdgetv0 - c - intrinsic abs, sqrt - c -+c %-----------------% -+c | Data Statements | -+c %-----------------% -+c -+ data inits /.true./ -+c - c %-----------------------% - c | Executable Statements | - c %-----------------------% -@@ -216,10 +222,30 @@ subroutine pdgetv0 - c | random number generator | - c %-----------------------------------% - c -- iseed(1) = 1 -- iseed(2) = 3 -- iseed(3) = 5 -- iseed(4) = 7 -+ if (inits) then -+c -+c %-----------------------------------% -+c | Generate a seed on each processor | -+c | using process id (myid). | -+c | Note: the seed must be between 1 | -+c | and 4095. iseed(4) must be odd. | -+c %-----------------------------------% -+c -+ call MPI_COMM_RANK(comm, myid, ierr) -+ igen = 1000 + 2*myid + 1 -+ if (igen .gt. 4095) then -+ write(0,*) 'Error in p_getv0: seed exceeds 4095!' -+ end if -+c -+ iseed(1) = igen/1000 -+ igen = mod(igen,1000) -+ iseed(2) = igen/100 -+ igen = mod(igen,100) -+ iseed(3) = igen/10 -+ iseed(4) = mod(igen,10) -+c -+ inits = .false. -+ end if - c - if (ido .eq. 0) then - c -diff --git a/PARPACK/SRC/MPI/psgetv0.f b/PARPACK/SRC/MPI/psgetv0.f -index d79a513b2..078e4fa8c 100644 ---- a/PARPACK/SRC/MPI/psgetv0.f -+++ b/PARPACK/SRC/MPI/psgetv0.f -@@ -177,11 +177,11 @@ subroutine psgetv0 - c | Local Scalars & Arrays | - c %------------------------% - c -- logical first, orth -- integer idist, iseed(4), iter, msglvl, jj -+ logical first, inits, orth -+ integer idist, iseed(4), iter, msglvl, jj, myid, igen - Real - & rnorm0 -- save first, iseed, iter, msglvl, orth, rnorm0 -+ save first, iseed, inits, iter, msglvl, orth, rnorm0 - c - Real - & rnorm_buf -@@ -206,20 +206,41 @@ subroutine psgetv0 - c - intrinsic abs, sqrt - c -+c %-----------------% -+c | Data Statements | -+c %-----------------% -+c -+ data inits /.true./ -+c - c %-----------------------% - c | Executable Statements | - c %-----------------------% - c - c --c %-----------------------------------% --c | Initialize the seed of the LAPACK | --c | random number generator | --c %-----------------------------------% -+ if (inits) then - c -- iseed(1) = 1 -- iseed(2) = 3 -- iseed(3) = 5 -- iseed(4) = 7 -+c %-----------------------------------% -+c | Generate a seed on each processor | -+c | using process id (myid). | -+c | Note: the seed must be between 1 | -+c | and 4095. iseed(4) must be odd. | -+c %-----------------------------------% -+c -+ call MPI_COMM_RANK(comm, myid, ierr) -+ igen = 1000 + 2*myid + 1 -+ if (igen .gt. 4095) then -+ write(0,*) 'Error in p_getv0: seed exceeds 4095!' -+ end if -+c -+ iseed(1) = igen/1000 -+ igen = mod(igen,1000) -+ iseed(2) = igen/100 -+ igen = mod(igen,100) -+ iseed(3) = igen/10 -+ iseed(4) = mod(igen,10) -+c -+ inits = .false. -+ end if - c - if (ido .eq. 0) then - c -diff --git a/PARPACK/SRC/MPI/pzgetv0.f b/PARPACK/SRC/MPI/pzgetv0.f -index 731fb319f..94fb705f3 100644 ---- a/PARPACK/SRC/MPI/pzgetv0.f -+++ b/PARPACK/SRC/MPI/pzgetv0.f -@@ -176,13 +176,13 @@ subroutine pzgetv0 - c | Local Scalars & Arrays | - c %------------------------% - c -- logical first, orth -+ logical first, inits, orth - integer idist, iseed(4), iter, msglvl, jj, myid, igen - Double precision - & rnorm0 - Complex*16 - & cnorm, cnorm2 -- save first, iseed, iter, msglvl, orth, rnorm0 -+ save first, iseed, inits, iter, msglvl, orth, rnorm0 - c - Complex*16 - & cnorm_buf, buf2(1) -@@ -203,6 +203,12 @@ subroutine pzgetv0 - & zzdotc - external zzdotc , pdznorm2 , dlapy2 - c -+c %-----------------% -+c | Data Statements | -+c %-----------------% -+c -+ data inits /.true./ -+c - c %-----------------------% - c | Executable Statements | - c %-----------------------% -@@ -213,26 +219,30 @@ subroutine pzgetv0 - c | random number generator | - c %-----------------------------------% - c -+ if (inits) then - c --c %-----------------------------------% --c | Generate a seed on each processor | --c | using process id (myid). | --c | Note: the seed must be between 1 | --c | and 4095. iseed(4) must be odd. | --c %-----------------------------------% -+c %-----------------------------------% -+c | Generate a seed on each processor | -+c | using process id (myid). | -+c | Note: the seed must be between 1 | -+c | and 4095. iseed(4) must be odd. | -+c %-----------------------------------% - c -- call MPI_COMM_RANK(comm, myid, ierr) -- igen = 1000 + 2*myid + 1 -- if (igen .gt. 4095) then -- write(0,*) 'Error in p_getv0: seed exceeds 4095!' -- end if -+ call MPI_COMM_RANK(comm, myid, ierr) -+ igen = 1000 + 2*myid + 1 -+ if (igen .gt. 4095) then -+ write(0,*) 'Error in p_getv0: seed exceeds 4095!' -+ end if -+c -+ iseed(1) = igen/1000 -+ igen = mod(igen,1000) -+ iseed(2) = igen/100 -+ igen = mod(igen,100) -+ iseed(3) = igen/10 -+ iseed(4) = mod(igen,10) - c -- iseed(1) = igen/1000 -- igen = mod(igen,1000) -- iseed(2) = igen/100 -- igen = mod(igen,100) -- iseed(3) = igen/10 -- iseed(4) = 7 -+ inits = .false. -+ end if - c - if (ido .eq. 0) then - c -diff --git a/SRC/cgetv0.f b/SRC/cgetv0.f -index b49e66708..c231eadcb 100644 ---- a/SRC/cgetv0.f -+++ b/SRC/cgetv0.f -@@ -156,13 +156,13 @@ subroutine cgetv0 - c | Local Scalars & Arrays | - c %------------------------% - c -- logical first, orth -+ logical first, inits, orth - integer idist, iseed(4), iter, msglvl, jj - Real - & rnorm0 - Complex - & cnorm -- save first, iseed, iter, msglvl, orth, rnorm0 -+ save first, iseed, inits, iter, msglvl, orth, rnorm0 - c - c %----------------------% - c | External Subroutines | -@@ -180,6 +180,12 @@ subroutine cgetv0 - & ccdotc - external ccdotc, scnrm2, slapy2 - c -+c %-----------------% -+c | Data Statements | -+c %-----------------% -+c -+ data inits /.true./ -+c - c %-----------------------% - c | Executable Statements | - c %-----------------------% -@@ -190,10 +196,13 @@ subroutine cgetv0 - c | random number generator | - c %-----------------------------------% - c -- iseed(1) = 1 -- iseed(2) = 3 -- iseed(3) = 5 -- iseed(4) = 7 -+ if (inits) then -+ iseed(1) = 1 -+ iseed(2) = 3 -+ iseed(3) = 5 -+ iseed(4) = 7 -+ inits = .false. -+ end if - c - if (ido .eq. 0) then - c -diff --git a/SRC/dgetv0.f b/SRC/dgetv0.f -index 8be4fa26d..1d6dc01bd 100644 ---- a/SRC/dgetv0.f -+++ b/SRC/dgetv0.f -@@ -157,11 +157,11 @@ subroutine dgetv0 - c | Local Scalars & Arrays | - c %------------------------% - c -- logical first, orth -+ logical first, inits, orth - integer idist, iseed(4), iter, msglvl, jj - Double precision - & rnorm0 -- save first, iseed, iter, msglvl, orth, rnorm0 -+ save first, iseed, inits, iter, msglvl, orth, rnorm0 - c - c %----------------------% - c | External Subroutines | -@@ -183,6 +183,12 @@ subroutine dgetv0 - c - intrinsic abs, sqrt - c -+c %-----------------% -+c | Data Statements | -+c %-----------------% -+c -+ data inits /.true./ -+c - c %-----------------------% - c | Executable Statements | - c %-----------------------% -@@ -193,10 +199,13 @@ subroutine dgetv0 - c | random number generator | - c %-----------------------------------% - c -- iseed(1) = 1 -- iseed(2) = 3 -- iseed(3) = 5 -- iseed(4) = 7 -+ if (inits) then -+ iseed(1) = 1 -+ iseed(2) = 3 -+ iseed(3) = 5 -+ iseed(4) = 7 -+ inits = .false. -+ end if - c - if (ido .eq. 0) then - c -diff --git a/SRC/sgetv0.f b/SRC/sgetv0.f -index 26130a014..d861b2d6d 100644 ---- a/SRC/sgetv0.f -+++ b/SRC/sgetv0.f -@@ -157,11 +157,11 @@ subroutine sgetv0 - c | Local Scalars & Arrays | - c %------------------------% - c -- logical first, orth -+ logical first, inits, orth - integer idist, iseed(4), iter, msglvl, jj - Real - & rnorm0 -- save first, iseed, iter, msglvl, orth, rnorm0 -+ save first, iseed, inits, iter, msglvl, orth, rnorm0 - c - c %----------------------% - c | External Subroutines | -@@ -183,6 +183,12 @@ subroutine sgetv0 - c - intrinsic abs, sqrt - c -+c %-----------------% -+c | Data Statements | -+c %-----------------% -+c -+ data inits /.true./ -+c - c %-----------------------% - c | Executable Statements | - c %-----------------------% -@@ -193,10 +199,13 @@ subroutine sgetv0 - c | random number generator | - c %-----------------------------------% - c -- iseed(1) = 1 -- iseed(2) = 3 -- iseed(3) = 5 -- iseed(4) = 7 -+ if (inits) then -+ iseed(1) = 1 -+ iseed(2) = 3 -+ iseed(3) = 5 -+ iseed(4) = 7 -+ inits = .false. -+ end if - c - if (ido .eq. 0) then - c -diff --git a/SRC/zgetv0.f b/SRC/zgetv0.f -index cc13c3cfb..1fbd50851 100644 ---- a/SRC/zgetv0.f -+++ b/SRC/zgetv0.f -@@ -156,13 +156,13 @@ subroutine zgetv0 - c | Local Scalars & Arrays | - c %------------------------% - c -- logical first, orth -+ logical first, inits, orth - integer idist, iseed(4), iter, msglvl, jj - Double precision - & rnorm0 - Complex*16 - & cnorm -- save first, iseed, iter, msglvl, orth, rnorm0 -+ save first, iseed, inits, iter, msglvl, orth, rnorm0 - c - c %----------------------% - c | External Subroutines | -@@ -180,6 +180,12 @@ subroutine zgetv0 - & zzdotc - external zzdotc, dznrm2, dlapy2 - c -+c %-----------------% -+c | Data Statements | -+c %-----------------% -+c -+ data inits /.true./ -+c - c %-----------------------% - c | Executable Statements | - c %-----------------------% -@@ -190,10 +196,13 @@ subroutine zgetv0 - c | random number generator | - c %-----------------------------------% - c -- iseed(1) = 1 -- iseed(2) = 3 -- iseed(3) = 5 -- iseed(4) = 7 -+ if (inits) then -+ iseed(1) = 1 -+ iseed(2) = 3 -+ iseed(3) = 5 -+ iseed(4) = 7 -+ inits = .false. -+ end if - c - if (ido .eq. 0) then - c |