aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2019-02-17 09:58:42 +0100
committerRicardo Wurmus <rekado@elephly.net>2019-02-17 09:59:46 +0100
commite9823f9ca347b396b6eae0f61b1ab84cec800684 (patch)
treed4fb59710975a8527d01deba2a02377e7b5a85b9
parentf30d5f7f2dac5b02d5d71486a501bb0381ae034b (diff)
downloadgnu-guix-e9823f9ca347b396b6eae0f61b1ab84cec800684.tar
gnu-guix-e9823f9ca347b396b6eae0f61b1ab84cec800684.tar.gz
gnu: openmpi: Add InfiniBand support.
* gnu/packages/mpi.scm (openmpi)[inputs]: Add opensm. [arguments]: Add openib configure flags; add build phase "find-opensm-headers".
-rw-r--r--gnu/packages/mpi.scm23
1 files changed, 23 insertions, 0 deletions
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 0a43c55b7a..e4c17d41c2 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -32,6 +33,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (gnu packages)
+ #:use-module (gnu packages fabric-management)
#:use-module (gnu packages gcc)
#:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
@@ -174,6 +176,7 @@ bind processes, and much more.")
("gfortran" ,gfortran)
("libfabric" ,libfabric)
("libevent" ,libevent)
+ ("opensm" ,opensm)
,@(if (and (not (%current-target-system))
(member (%current-system) (package-supported-systems psm)))
`(("psm" ,psm))
@@ -198,11 +201,31 @@ bind processes, and much more.")
"--with-valgrind"
"--with-hwloc=external"
"--with-libevent"
+
+ ;; InfiniBand support
+ "--enable-openib-control-hdr-padding"
+ "--enable-openib-dynamic-sl"
+ "--enable-openib-udcm"
+ "--enable-openib-rdmacm"
+ "--enable-openib-rdmacm-ibaddr"
+
;; Enable support for SLURM's Process Manager
;; Interface (PMI).
,(string-append "--with-pmi="
(assoc-ref %build-inputs "slurm")))
#:phases (modify-phases %standard-phases
+ ;; opensm is needed for InfiniBand support.
+ (add-after 'unpack 'find-opensm-headers
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "C_INCLUDE_PATH"
+ (string-append (assoc-ref inputs "opensm")
+ "/include/infiniband/:"
+ (getenv "C_INCLUDE_PATH")))
+ (setenv "CPLUS_INCLUDE_PATH"
+ (string-append (assoc-ref inputs "opensm")
+ "/include/infiniband/:"
+ (getenv "CPLUS_INCLUDE_PATH")))
+ #t))
(add-before 'build 'remove-absolute
(lambda _
;; Remove compiler absolute file names (OPAL_FC_ABSOLUTE