~ruther/guix-local

04717e9406f3b5171ad28ed67d926ce0e25da94d — Dave Love 8 years ago 9d80d0e
gnu: Add imb-openmpi.

* gnu/packages/benchmark.scm (imb): New procedure.
(imb-openmpi): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 66 insertions(+), 1 deletions(-)

M gnu/packages/benchmark.scm
M gnu/packages/benchmark.scm => gnu/packages/benchmark.scm +66 -1
@@ 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))