From 41313acebf39e04c9ddd0857b8cd8b69991c88c3 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 31 Jan 2019 23:03:35 -0600 Subject: [PATCH] gnu: openmpi: Upgrade to 4.0.0. * gnu/packages/linux.scm (psm)[arguments]: Add 'patch-sysmacros phase to fix "undefined reference to `minor'" errors while linking against libinfinipath.so. * gnu/packages/mpi.scm (openmpi): Upgrade to 4.0.0. [inputs]: Add libevent. [arguments]: Simplify configure-flags. Use system libevent. Adjust romio version strings. (%openmpi-setup): Use OMPI_MCA_rmaps_base_mapping_policy for oversubscription. --- gnu/packages/linux.scm | 7 +++++++ gnu/packages/mpi.scm | 29 +++++++++++++---------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b1dfb7f701..66a1ad4508 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -4717,6 +4717,13 @@ libraries, which are often integrated directly into libfabric.") (string-append %output "/include"))) (substitute* "Makefile" (("/lib64") "/lib")) + #t)) + (add-after 'unpack 'patch-sysmacros + (lambda _ + (substitute* "ipath/ipath_proto.c" + (("#include " m) + (string-append m "\n" + "#include "))) #t))))) (synopsis "Intel Performance Scaled Messaging (PSM) Libraries") (description diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm index 1f69a04bc9..0a43c55b7a 100644 --- a/gnu/packages/mpi.scm +++ b/gnu/packages/mpi.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2018 Eric Bavier +;;; Copyright © 2014, 2015, 2018, 2019 Eric Bavier ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2014 Ian Denhardt ;;; Copyright © 2016 Andreas Enge @@ -33,6 +33,7 @@ #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages gcc) + #:use-module (gnu packages libevent) #:use-module (gnu packages linux) #:use-module (gnu packages pciutils) #:use-module (gnu packages xorg) @@ -157,7 +158,7 @@ bind processes, and much more.") (define-public openmpi (package (name "openmpi") - (version "3.0.1") + (version "4.0.0") (source (origin (method url-fetch) @@ -166,12 +167,13 @@ bind processes, and much more.") "/downloads/openmpi-" version ".tar.bz2")) (sha256 (base32 - "0pbqrm5faf57nasy1s81wqivl7zvxmv8lzjh8hvb0f3qxv8m0d36")))) + "0srnjwzsmyhka9hhnmqm86qck4w3xwjm8g6sbns58wzbrwv8l2rg")))) (build-system gnu-build-system) (inputs `(("hwloc" ,hwloc "lib") ("gfortran" ,gfortran) ("libfabric" ,libfabric) + ("libevent" ,libevent) ,@(if (and (not (%current-target-system)) (member (%current-system) (package-supported-systems psm))) `(("psm" ,psm)) @@ -191,16 +193,11 @@ bind processes, and much more.") `(#:configure-flags `("--enable-mpi-ext=affinity" ;cr doesn't work "--enable-memchecker" "--with-sge" - - ;; VampirTrace is obsoleted by scorep and disabling - ;; it reduces the closure size considerably. - "--disable-vt" - - ,(string-append "--with-valgrind=" - (assoc-ref %build-inputs "valgrind")) - ,(string-append "--with-hwloc=" - (assoc-ref %build-inputs "hwloc")) - + "--with-psm" + "--with-psm2" + "--with-valgrind" + "--with-hwloc=external" + "--with-libevent" ;; Enable support for SLURM's Process Manager ;; Interface (PMI). ,(string-append "--with-pmi=" @@ -219,8 +216,8 @@ bind processes, and much more.") (("_ABSOLUTE") "")) ;; Avoid valgrind (which pulls in gdb etc.). (substitute* - '("./ompi/mca/io/romio314/src/io_romio314_component.c") - (("MCA_io_romio314_COMPLETE_CONFIGURE_FLAGS") + '("./ompi/mca/io/romio321/src/io_romio321_component.c") + (("MCA_io_romio321_COMPLETE_CONFIGURE_FLAGS") "\"[elided to reduce closure]\"")) #t)) (add-before 'build 'scrub-timestamps ;reproducibility @@ -270,7 +267,7 @@ only provides @code{MPI_THREAD_FUNNELED}."))) (setenv "OMPI_MCA_plm_rsh_agent" (which "false")) ;; Allow oversubscription in case there are less physical cores available ;; in the build environment than the package wants while testing. - (setenv "OMPI_MCA_rmaps_base_oversubscribe" "yes") + (setenv "OMPI_MCA_rmaps_base_mapping_policy" "core:OVERSUBSCRIBE") #t)) (define-public python-mpi4py