(define-public superlu-dist
(package
(name "superlu-dist")
- (version "6.2.0")
+ (version "6.4.0")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://portal.nersc.gov/project/sparse/superlu/"
- "superlu_dist_" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/xiaoyeli/superlu_dist")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32 "1ynmwqajc9sc3my2hssa5k9s58ggvizqv9rdss0j7w99pbh5mnvw"))
+ (base32 "0fa29yr72p4yq5ln4rgfsawmi5935n4qcr5niz6864bjladz4lql"))
(modules '((guix build utils)))
(snippet
;; Replace the non-free implementation of MC64 with a stub
'(begin
+ (make-file-writable "SRC/mc64ad_dist.c")
(call-with-output-file "SRC/mc64ad_dist.c"
(lambda (port)
(display "
-Create the CombBLAS::SpParMat with the MPI_Comm from the input 'gridinfo_t'.
-This prevents a warning/error from CombBLAS about using MPI_COMM_WORLD.
-
---- a/SRC/AWPM_CombBLAS.hpp
-+++ b/SRC/AWPM_CombBLAS.hpp
-@@ -52,7 +52,7 @@
- {
- printf("AWPM only supports square process grid. Retuning without a permutation.\n");
- }
-- combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc;
-+ combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc(grid->comm);
- std::vector< std::vector < std::tuple<int_t,int_t,double> > > data(procs);
-
- /* ------------------------------------------------------------
-@@ -100,11 +100,10 @@
- combblas::AWPM(Adcsc, mateRow2Col, mateCol2Row,true);
-
- // now gather the matching vector
-- MPI_Comm World = mateRow2Col.getcommgrid()->GetWorld();
- int * rdispls = new int[procs];
- int sendcnt = mateRow2Col.LocArrSize();
- int * recvcnt = new int[procs];
-- MPI_Allgather(&sendcnt, 1, MPI_INT, recvcnt, 1, MPI_INT, World);
-+ MPI_Allgather(&sendcnt, 1, MPI_INT, recvcnt, 1, MPI_INT, grid->comm);
- rdispls[0] = 0;
- for(int i=0; i<procs-1; ++i)
- {
-@@ -112,7 +111,7 @@
- }
- int_t *senddata = (int_t *)mateRow2Col.GetLocArr();
-
-- MPI_Allgatherv(senddata, sendcnt, combblas::MPIType<int_t>(), ScalePermstruct->perm_r, recvcnt, rdispls, combblas::MPIType<int_t>(), World);
-+ MPI_Allgatherv(senddata, sendcnt, combblas::MPIType<int_t>(), ScalePermstruct->perm_r, recvcnt, rdispls, combblas::MPIType<int_t>(), grid->comm);
-
- delete[] rdispls;
- delete[] recvcnt;
+Create the CombBLAS::SpParMat with the MPI_Comm from the input 'gridinfo_t'.
+This prevents a warning/error from CombBLAS about using MPI_COMM_WORLD.
+
+--- a/SRC/dHWPM_CombBLAS.hpp
++++ b/SRC/dHWPM_CombBLAS.hpp
+@@ -52,7 +52,7 @@
+ {
+ printf("AWPM only supports square process grid. Retuning without a permutation.\n");
+ }
+- combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc;
++ combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc(grid->comm);
+ std::vector< std::vector < std::tuple<int_t,int_t,double> > > data(procs);
+
+ /* ------------------------------------------------------------
+--- a/SRC/zHWPM_CombBLAS.hpp
++++ b/SRC/zHWPM_CombBLAS.hpp
+@@ -52,7 +52,7 @@
+ {
+ printf("AWPM only supports square process grid. Retuning without a permutation.\n");
+ }
+- combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc;
++ combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc(grid->comm);
+ std::vector< std::vector < std::tuple<int_t,int_t,double> > > data(procs);
+
+ /* ------------------------------------------------------------