;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Dave Love <fx@gnu.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix build-system gnu)
#: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 python-xyz)
#:use-module (gnu packages storage)
#:use-module (ice-9 match))
(define-public fio
(package
(name "fio")
- (version "3.2")
+ (version "3.13")
(source (origin
(method url-fetch)
- (uri (string-append
- "http://brick.kernel.dk/snaps/"
- "fio-" version ".tar.bz2"))
+ (uri (string-append "http://brick.kernel.dk/snaps/"
+ "fio-" version ".tar.bz2"))
(sha256
(base32
- "1f5vina9bxn99drda8dhbxng8ypj4ny72xh6mp8rq955d0f8sq0z"))))
+ "0ddj7zm04jqlna3w61qyp4qvwnv0r2lc1hzpwrgbvv4fq581w7d2"))))
(build-system gnu-build-system)
(arguments
'(#:test-target "test"
;; The configure script doesn't understand some of the
;; GNU options, so we can't use #:configure-flags.
(let ((out (assoc-ref outputs "out")))
- (zero? (system* "./configure"
- (string-append "--prefix=" out))))))
+ (invoke "./configure"
+ (string-append "--prefix=" out))
+ #t)))
;; The main `fio` executable is fairly small and self contained.
;; Moving the auxiliary python and gnuplot scripts to a separate
;; output saves almost 400 MiB on the closure.
(define (imb mpi)
(package
(name (string-append "imb-" (package-name mpi)))
- (version "2017.2")
+ (version "2019.1")
(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"))))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/intel/mpi-benchmarks.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256 (base32 "18hfdyvl5i172gadiq9si1qxif5rvic0lifxpbrr7s59ylg8f9c4"))))
(build-system gnu-build-system)
(inputs
`(("mpi" ,mpi)))
(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))))))
+ ;; Override default parallelism
+ (substitute* "Makefile"
+ (("make -j[[:digit:]]+")
+ (format #f "make -j~d" (parallel-job-count))))
+ (invoke "make" "SHELL=sh" "CC=mpicc" "CXX=mpic++"))))
(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)))
+ (for-each
+ (lambda (file)
+ (install-file file bin))
+ '("IMB-IO" "IMB-EXT" "IMB-MPI1" "IMB-NBC" "IMB-RMA" "IMB-MT")))
#t)))))
(home-page "https://software.intel.com/en-us/articles/intel-mpi-benchmarks")
(synopsis "Intel MPI Benchmarks")
(license license:cpl1.0)))
(define-public imb-openmpi (imb openmpi))
+
+(define-public multitime
+ (package
+ (name "multitime")
+ (version "1.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://tratt.net/laurie/src/"
+ "multitime/releases/"
+ "multitime-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0iyfsdrbyqa7a4ifrh19l9a48hgv7ld6m0d8yf9bkl12q0qw91fx"))))
+ (build-system gnu-build-system)
+ (arguments '(#:tests? #f)) ; there are no tests
+ (home-page "https://tratt.net/laurie/src/multitime/")
+ (synopsis "Time command execution over multiple executions")
+ (description
+ "The @code{time} utility is a simple and often effective way of measuring
+how long a command takes to run (wall time). Unfortunately, running a command
+once can give misleading timings. @code{multitime} is, in essence, a simple
+extension to @code{time} which runs a command multiple times and prints the
+timing means, standard deviations, mins, medians, and maxes having done so.
+This can give a much better understanding of the command's performance.")
+ (license license:expat)))