summary refs log tree commit diff
path: root/gnu/packages/mpi.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludovic.courtes@inria.fr>2019-11-08 18:19:39 +0100
committerLudovic Courtès <ludo@gnu.org>2019-11-15 17:52:44 +0100
commitc1ea4c07933e0814e7f422ff0177b671865a5811 (patch)
tree182d90df1071d456bf688693ccd5e6ddec7bac4d /gnu/packages/mpi.scm
parente68f954eb3c39366cb72dde0348d0c5348316dd6 (diff)
downloadguix-c1ea4c07933e0814e7f422ff0177b671865a5811.tar.gz
gnu: Add Intel MPI Benchmarks.
* gnu/packages/mpi.scm (intel-mpi-benchmarks): New variable.
Diffstat (limited to 'gnu/packages/mpi.scm')
-rw-r--r--gnu/packages/mpi.scm52
1 files changed, 52 insertions, 0 deletions
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 172fe9e306..a87194408f 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -29,6 +29,7 @@
   #:use-module ((guix licenses)
                 #:hide (expat))
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
@@ -344,6 +345,57 @@ only provides @code{MPI_THREAD_FUNNELED}.")))
      (setenv "OMPI_MCA_rmaps_base_mapping_policy" "core:OVERSUBSCRIBE")
      #t))
 
+(define-public intel-mpi-benchmarks
+  (package
+    (name "intel-mpi-benchmarks")
+    (version "2019.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/intel/mpi-benchmarks.git")
+                    (commit (string-append "IMB-v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0si5xi6ilhd3w0gbsg124589pvp094hvf366rvjjb9pi7pdk5p4i"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  (delete 'check)
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (define (benchmark? file stat)
+                        (and (string-prefix? "IMB-" (basename file))
+                             (executable-file? file)))
+
+                      (let* ((out (assoc-ref outputs "out"))
+                             (bin (string-append out "/bin")))
+                        (for-each (lambda (file)
+                                    (install-file file bin))
+                                  (find-files "." benchmark?))
+                        #t))))
+
+       ;; The makefile doesn't express all the dependencies, it seems.
+       #:parallel-build? #t
+
+       #:make-flags (list (string-append "CC="
+                                         (assoc-ref %build-inputs "openmpi")
+                                         "/bin/mpicc")
+                          (string-append "CXX="
+                                         (assoc-ref %build-inputs "openmpi")
+                                         "/bin/mpicxx"))))
+    (inputs
+     `(("openmpi" ,openmpi)))
+    (home-page "https://github.com/intel/mpi-benchmarks")
+    (synopsis "Benchmarks for the Message Passing Interface (MPI)")
+    (description
+     "Intel MPI Benchmarks (IMB) provides a set of elementary benchmarks that
+conform with versions 1, 2, and 3 of the Message Passing Interface (MPI).")
+    (license
+     (fsf-free "https://directory.fsf.org/wiki/License:CPL-1.0"
+               "https://www.gnu.org/licenses/license-list.html#CommonPublicLicense10"))))
+
 (define-public python-mpi4py
   (package
     (name "python-mpi4py")