aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Love <fx@gnu.org>2017-10-03 19:14:50 +0100
committerLudovic Courtès <ludo@gnu.org>2017-10-05 12:09:17 +0200
commit04717e9406f3b5171ad28ed67d926ce0e25da94d (patch)
treec519a1155941e07ffadc536c251d43b7a10c7010
parent9d80d0e95c9eab042ddd8250ad9a231ed0c458dc (diff)
downloadguix-04717e9406f3b5171ad28ed67d926ce0e25da94d.tar
guix-04717e9406f3b5171ad28ed67d926ce0e25da94d.tar.gz
gnu: Add imb-openmpi.
* gnu/packages/benchmark.scm (imb): New procedure. (imb-openmpi): New variable. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--gnu/packages/benchmark.scm67
1 files changed, 66 insertions, 1 deletions
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 136f141d8b..feed7b545b 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Dave Love <fx@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -24,8 +25,10 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages linux)
#:use-module (gnu packages maths)
+ #:use-module (gnu packages mpi)
#:use-module (gnu packages python)
- #:use-module (gnu packages storage))
+ #:use-module (gnu packages storage)
+ #:use-module (ice-9 match))
(define-public fio
(package
@@ -103,3 +106,65 @@ is to write a job file matching the I/O load one wants to simulate.")
;; are covered by other licenses.
(license (list license:gpl2 license:gpl2+ license:bsd-2
license:public-domain))))
+
+;; Parameterized in anticipation of m(va)pich support
+(define (imb mpi)
+ (package
+ (name (string-append "imb-" (package-name mpi)))
+ (version "2017.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (match (string-split version #\.)
+ ((major minor)
+ (string-append
+ "https://software.intel.com/sites/default/files/managed/76/6c/IMB_"
+ major "_Update" minor ".tgz"))))
+ (sha256 (base32 "11nczxm686rsppmw9gjc2p2sxc0jniv5kv18yxm1lzp5qfh5rqyb"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("mpi" ,mpi)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'check)
+ (replace 'build
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((mpi-home (assoc-ref inputs "mpi")))
+ (zero?
+ ;; Not safe for parallel build
+ (system* "make" "-C" "imb/src" "-f" "make_mpich" "SHELL=sh"
+ (string-append "MPI_HOME=" mpi-home))))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (doc (string-append out "/share/doc/" ,name))
+ (bin (string-append out "/bin")))
+ (with-directory-excursion "imb/src"
+ (for-each
+ (lambda (file)
+ (install-file file bin))
+ '("IMB-IO" "IMB-EXT" "IMB-MPI1" "IMB-NBC" "IMB-RMA")))
+ (mkdir-p doc)
+ (with-directory-excursion "imb"
+ (copy-recursively "license" doc)))
+ #t)))))
+ (home-page "https://software.intel.com/en-us/articles/intel-mpi-benchmarks")
+ (synopsis "Intel MPI Benchmarks")
+ (description
+ "This package provides benchmarks for implementations of the @dfn{Message
+Passing Interface} (MPI). It contains MPI performance measurements for
+point-to-point and global communication, and file, operations for a range of
+message sizes. The generated benchmark data fully characterize:
+
+@itemize
+@item
+Performance of a cluster system, including node performance, network latency,
+and throughput;
+@item
+Efficiency of the MPI implementation.
+@end itemize")
+ (license license:cpl1.0)))
+
+(define-public imb-openmpi (imb openmpi))