From 44b58081283c93e49d00900cc3e29dfd1af0e97a Mon Sep 17 00:00:00 2001 From: Dave Love Date: Tue, 3 Oct 2017 19:14:50 +0100 Subject: [PATCH] gnu: Add imb-openmpi. * gnu/packages/benchmark.scm(imb): New function. (imb-openmpi): New variable. --- gnu/packages/benchmark.scm | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm index 136f141d8..e3c2570ef 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,6 +25,7 @@ #: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)) @@ -103,3 +105,64 @@ 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 (let* ((parts (string-split version #\.) ) + (major (car parts)) + (minor (cadr parts))) + (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")) + (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 + "A set of 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)) -- 2.11.0