>From eed7aaac597248505d0ad0609810f7af5caac720 Mon Sep 17 00:00:00 2001 From: Dave Love Date: Sat, 9 Sep 2017 11:10:29 +0100 Subject: [PATCH] gnu: Add imb-openmpi. * mpi.scm (gnu, imb): New function. (imb-openmpi): New package. --- gnu/packages/benchmark.scm | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm index 136f141d8..7ed4addcf 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,69 @@ 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 + `((,(package-name mpi) ,mpi))) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'check) + (replace 'build + (lambda* _ + (let ((mpi-home (dirname (dirname (which "mpicc"))))) + (zero? + ;; Not safe for parallel build + (system + (format #f "make -C imb/src -f make_mpich SHELL=sh MPI_HOME=~a" + 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"))) + (mkdir-p bin) + (mkdir-p doc) + (and + (zero? + (system + (string-append + "cd imb/src && install -m755 IMB-IO IMB-EXT IMB-MPI1 IMB-NBC IMB-RMA " + bin))) + (zero? + (system + (string-append + "cd imb && cp -r license " doc)))))))))) + (home-page "https://software.intel.com/en-us/articles/intel-mpi-benchmarks") + (synopsis (format #f "Intel MPI Benchmarks, ~a version" (package-name mpi))) + (description (format #f "\ +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: address@hidden address@hidden +Performance of a cluster system, including node performance, network latency, +and throughput; address@hidden +Efficiency of the MPI implementation. address@hidden itemize +This is the ~a version." (package-name mpi))) + (license license:cpl1.0))) + +(define-public imb-openmpi (imb openmpi)) -- 2.11.0