aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorEric Bavier <bavier@cray.com>2018-10-23 16:50:50 -0500
committerEric Bavier <bavier@member.fsf.org>2019-01-25 13:09:47 -0600
commita6b9ebc2fc92a72ca8a1e61e2d321804eec9d738 (patch)
treedfdec51557ac0a4577d3f3e713856688b92873c4 /gnu/packages
parent519be98c3536b5113cde368f9dc6db2e1ebe073e (diff)
downloadguix-a6b9ebc2fc92a72ca8a1e61e2d321804eec9d738.tar
guix-a6b9ebc2fc92a72ca8a1e61e2d321804eec9d738.tar.gz
gnu: Add Combinatorial BLAS.
* gnu/packages/maths.scm (combinatorial-blas): New variable. * gnu/packages/patches/combinatorial-blas-awpm.patch, gnu/packages/patches/combinatorial-blas-io-fix.patch: New files * gnu/local.mk(dist_patch_DATA): Add them.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/maths.scm51
-rw-r--r--gnu/packages/patches/combinatorial-blas-awpm.patch67
-rw-r--r--gnu/packages/patches/combinatorial-blas-io-fix.patch14
3 files changed, 132 insertions, 0 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 2f52b4a0ff..b53fa7fad1 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -48,6 +48,7 @@
(define-module (gnu packages maths)
#:use-module (ice-9 regex)
+ #:use-module (ice-9 match)
#:use-module (gnu packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
@@ -4215,3 +4216,53 @@ easily be incorporated into existing simulation codes.")
(add-before 'check 'mpi-setup
,%openmpi-setup)))))
(synopsis "SUNDIALS with OpenMPI support")))
+
+(define-public combinatorial-blas
+ (package
+ (name "combinatorial-blas")
+ (version "1.6.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://eecs.berkeley.edu/~aydin/CombBLAS_FILES/"
+ "CombBLAS_beta_"
+ (match (string-split version #\.)
+ ((major minor patch)
+ (string-append major minor "_" patch))) ;e.g. "16_2"
+ ".tgz"))
+ (sha256
+ (base32
+ "1a9wbgdqyy1whhfc0yl0yqkax3amnqa6iihhq48d063gc0jwfd9a"))
+ (patches (search-patches "combinatorial-blas-awpm.patch"
+ "combinatorial-blas-io-fix.patch"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("mpi" ,openmpi)
+ ("test-data" ,(origin
+ (method url-fetch)
+ (uri (string-append "https://people.eecs.berkeley.edu/~aydin/"
+ "CombBLAS_FILES/testdata_combblas1.6.1.tgz"))
+ (sha256
+ (base32
+ "01y2781cy3fww7znmidrp85mf8zx0c905w5vzvk1mgrmhhynim87"))))))
+ (arguments
+ `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES"
+ "-DCMAKE_CXX_FLAGS=-DUSE_FUNNEL")
+ #:parallel-tests? #f ;tests use 'mpiexec -n4'
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup)
+ (add-before 'check 'test-setup
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "OMP_NUM_THREADS" "2")
+ (invoke "tar" "xf" (assoc-ref inputs "test-data")))))))
+ (home-page "https://people.eecs.berkeley.edu/~aydin/CombBLAS/html/")
+ (synopsis "Linear algebra primitives for graph analytics")
+ (description "The Combinatorial BLAS (CombBLAS) is an extensible
+distributed-memory parallel graph library offering a small but powerful set of
+linear algebra primitives specifically targeting graph analytics.")
+ (license (list
+ license:gpl2+ ;include/psort/(funnel|sort)*.h
+ license:x11 ;usort and psort
+ license:bsd-3)))) ;CombBLAS and MersenneTwister.h
diff --git a/gnu/packages/patches/combinatorial-blas-awpm.patch b/gnu/packages/patches/combinatorial-blas-awpm.patch
new file mode 100644
index 0000000000..86d4ab2dcf
--- /dev/null
+++ b/gnu/packages/patches/combinatorial-blas-awpm.patch
@@ -0,0 +1,67 @@
+Install BipartiteMatchings headers for SuperLU_DIST.
+
+--- a/BipartiteMatchings/ApproxWeightPerfectMatching.h
++++ b/BipartiteMatchings/ApproxWeightPerfectMatching.h
+@@ -9,7 +9,7 @@
+ #ifndef ApproxWeightPerfectMatching_h
+ #define ApproxWeightPerfectMatching_h
+
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+ #include "BPMaximalMatching.h"
+ #include "BPMaximumMatching.h"
+ #include <parallel/algorithm>
+--- a/BipartiteMatchings/BPMaximalMatching.h
++++ b/BipartiteMatchings/BPMaximalMatching.h
+@@ -1,7 +1,7 @@
+ #ifndef BP_MAXIMAL_MATCHING_H
+ #define BP_MAXIMAL_MATCHING_H
+
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+ #include <iostream>
+ #include <functional>
+ #include <algorithm>
+--- a/BipartiteMatchings/BPMaximumMatching.h
++++ b/BipartiteMatchings/BPMaximumMatching.h
+@@ -1,7 +1,7 @@
+ #ifndef BP_MAXIMUM_MATCHING_H
+ #define BP_MAXIMUM_MATCHING_H
+
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+ #include <mpi.h>
+ #include <sys/time.h>
+ #include <iostream>
+--- a/BipartiteMatchings/MatchingDefs.h
++++ b/BipartiteMatchings/MatchingDefs.h
+@@ -9,7 +9,7 @@
+ #ifndef MatchingDefs_h
+ #define MatchingDefs_h
+
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+ #include <iostream>
+
+ namespace combblas {
+--- a/BipartiteMatchings/Utility.h
++++ b/BipartiteMatchings/Utility.h
+@@ -1,7 +1,7 @@
+ #ifndef BP_UTILITY_H
+ #define BP_UTILITY_H
+
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+
+ namespace combblas {
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -68,6 +68,7 @@ set_property(TARGET CombBLAS PROPERTY VERSION ${CombBLAS_VERSION})
+ # installation
+ install(DIRECTORY include/ DESTINATION include)
+ install(DIRECTORY psort-1.0/include/ DESTINATION include)
++install(DIRECTORY BipartiteMatchings DESTINATION include FILES_MATCHING PATTERN "*.h")
+ install(TARGETS CombBLAS EXPORT CombBLASTargets
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
diff --git a/gnu/packages/patches/combinatorial-blas-io-fix.patch b/gnu/packages/patches/combinatorial-blas-io-fix.patch
new file mode 100644
index 0000000000..0ad28e5e0b
--- /dev/null
+++ b/gnu/packages/patches/combinatorial-blas-io-fix.patch
@@ -0,0 +1,14 @@
+IO not appropriate in the context of a sorting routine, and in any case the
+proper headers are not included, so gcc emits an undefined symbol error.
+Remove the "printf" statement.
+
+--- CombBLAS_beta_16_2/usort/include/usort/seqUtils.tcc
++++ CombBLAS_beta_16_2/usort/include/usort/seqUtils.tcc
+@@ -142,7 +142,6 @@
+ }
+ if ( (a[nmax]==a[nmin]) && (ctr==0) )
+ {
+- printf("All the numbers are identical, the list is sorted\n");
+ return;
+ }
+