From 04717e9406f3b5171ad28ed67d926ce0e25da94d Mon Sep 17 00:00:00 2001 From: Dave Love Date: Tue, 3 Oct 2017 19:14:50 +0100 Subject: gnu: Add imb-openmpi. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/benchmark.scm (imb): New procedure. (imb-openmpi): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/benchmark.scm | 67 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) (limited to 'gnu/packages/benchmark.scm') 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 +;;; Copyright © 2017 Dave Love ;;; ;;; 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)) -- cgit v1.2.3