[PATCH] mpi: Factorize openmpi setup build phase.

  • Done
  • quality assurance status badge
Details
2 participants
  • ericbavier
  • Ludovic Courtès
Owner
unassigned
Submitted by
ericbavier
Severity
normal

Debbugs page

ericbavier wrote 7 years ago
(address . guix-patches@gnu.org)(name . Eric Bavier)(address . bavier@cray.com)
20180905134301.14194-1-ericbavier@centurylink.net
From: Eric Bavier <bavier@cray.com>

* gnu/packages/mpi.scm (%openmpi-setup): New variable.
* gnu/packages/maths.scm (scalapack, slepc-openmpi, mumps-openmpi)
(superlu-dist, p4est, petsc-openmpi, hypre-openmpi, elemental)
(sundials-openmpi)[arguments]: Use it in #:phases.
---
gnu/packages/maths.scm | 92 +++++++++---------------------------------
gnu/packages/mpi.scm | 14 ++++++-
2 files changed, 32 insertions(+), 74 deletions(-)

Toggle diff (196 lines)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index d2b9df01a..9ec418e82 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -569,14 +569,8 @@ problems in numerical linear algebra.")
(arguments
`(#:configure-flags `("-DBUILD_SHARED_LIBS:BOOL=YES")
#:phases (modify-phases %standard-phases
- (add-before 'check 'set-test-environment
- (lambda _
- ;; By default, running the test suite would fail because
- ;; 'ssh' could not be found in $PATH. Define this
- ;; variable to placate Open MPI without adding a
- ;; dependency on OpenSSH (the agent isn't used anyway.)
- (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
- #t)))))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup))))
(home-page "http://www.netlib.org/scalapack/")
(synopsis "Library for scalable numerical linear algebra")
(description
@@ -1707,14 +1701,8 @@ scientific applications modeled by partial differential equations.")
,@(delete "--with-mpi=0" ,cf)))
((#:phases phases)
`(modify-phases ,phases
- (add-before 'check 'set-test-environment
- (lambda _
- ;; By default, running the test suite would fail because 'ssh'
- ;; could not be found in $PATH. Define this variable to
- ;; placate Open MPI without adding a dependency on OpenSSH (the
- ;; agent isn't used anyway.)
- (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
- #t))))))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup)))))
(synopsis "Library to solve PDEs (with MPI support)")))
(define-public petsc-complex-openmpi
@@ -1845,14 +1833,8 @@ arising after the discretization of partial differential equations.")
(substitute-keyword-arguments (package-arguments slepc)
((#:phases phases '%standard-phases)
`(modify-phases ,phases
- (add-before 'check 'set-test-environment
- (lambda _
- ;; By default, running the test suite would fail because 'ssh'
- ;; could not be found in $PATH. Define this variable to
- ;; placate Open MPI without adding a dependency on OpenSSH (the
- ;; agent isn't used anyway.)
- (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
- #t))))))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup)))))
(inputs
`(("mpi" ,openmpi)
("arpack" ,arpack-ng-openmpi)
@@ -2022,14 +2004,8 @@ sparse system of linear equations A x = b using Guassian elimination.")
(substitute-keyword-arguments (package-arguments mumps)
((#:phases phases)
`(modify-phases ,phases
- (add-before 'check 'set-test-environment
- (lambda _
- ;; By default, running the test suite would fail because 'ssh'
- ;; could not be found in $PATH. Define this variable to
- ;; placate Open MPI without adding a dependency on OpenSSH (the
- ;; agent isn't used anyway.)
- (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
- #t))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup)
(replace 'check
(lambda _
((assoc-ref ,phases 'check)
@@ -2275,13 +2251,10 @@ CDEFS = -DAdd_"
"/" dir)))
'("lib" "include"))
#t))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup)
(replace 'check
(lambda _
- ;; By default, running the test suite would fail because 'ssh'
- ;; could not be found in $PATH. Define this variable to placate
- ;; Open MPI without adding a dependency on OpenSSH (the agent
- ;; isn't used anyway.)
- (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
(with-directory-excursion "EXAMPLE"
(invoke "mpirun" "-n" "2"
"./pddrive" "-r" "1" "-c" "2" "g20.rua")
@@ -2374,15 +2347,8 @@ YACC = bison -pscotchyy -y -b y
;; "SCOTCH_PTHREAD_NUMBER=2"
"restrict=__restrict"))))
#t))
- (add-after
- 'build 'build-esmumps
+ (add-after 'build 'build-esmumps
(lambda _
- ;; By default, running the test suite would fail because 'ssh'
- ;; could not be found in $PATH. Define this variable to placate
- ;; Open MPI without adding a dependency on OpenSSH (the agent
- ;; isn't used anyway.)
- (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
-
(invoke "make"
(format #f "-j~a" (parallel-job-count))
"esmumps")))
@@ -2565,14 +2531,8 @@ schemes.")
(assoc-ref %build-inputs "lapack")
" -llapack"))
#:phases (modify-phases %standard-phases
- (add-before 'check 'set-test-environment
- (lambda _
- ;; By default, running the test suite would fail because
- ;; 'ssh' could not be found in $PATH. Define this
- ;; variable to placate Open MPI without adding a
- ;; dependency on OpenSSH (the agent isn't used anyway.)
- (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
- #t)))))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup))))
(home-page "http://www.p4est.org")
(synopsis "Adaptive mesh refinement on forests of octrees")
(description
@@ -3639,14 +3599,8 @@ problems.")
,@(delete "--without-MPI" ,flags)))
((#:phases phases)
`(modify-phases ,phases
- (add-before 'check 'set-test-environment
- (lambda _
- ;; By default, running the test suite would fail because 'ssh'
- ;; could not be found in $PATH. Define this variable to
- ;; placate Open MPI without adding a dependency on OpenSSH (the
- ;; agent isn't used anyway.)
- (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
- #t))))))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup)))))
(synopsis "Parallel solvers and preconditioners for linear equations")
(description
"HYPRE is a software library of high performance preconditioners and
@@ -3929,6 +3883,8 @@ exclusion algorithms are typical examples of such systems.")
"-DCMAKE_INSTALL_LIBDIR=lib"
"-DGFORTRAN_LIB=gfortran")
#:phases (modify-phases %standard-phases
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup)
(add-before 'check 'setup-tests
(lambda _
;; Parallelism is done at the MPI layer.
@@ -4113,16 +4069,6 @@ easily be incorporated into existing simulation codes.")
,flags))
((#:phases phases '%standard-phases)
`(modify-phases ,phases
- (add-before 'check 'set-test-environment
- (lambda _
- ;; By default, running the test suite would fail because 'ssh'
- ;; could not be found in $PATH. Define this variable to
- ;; placate Open MPI without adding a dependency on OpenSSH (the
- ;; agent isn't used anyway.)
- (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
- ;; Allow oversubscription in case there are less
- ;; physical cores available in the build environment
- ;; than SUNDIALS wants while testing.
- (setenv "OMPI_MCA_rmaps_base_oversubscribe" "yes")
- #t))))))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup)))))
(synopsis "SUNDIALS with OpenMPI support")))
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index f34b08e4c..7dfec16fc 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 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
@@ -250,3 +250,15 @@ software vendors, application developers and computer science researchers.")
work correctly with all transports (such as @code{openib}), and the
performance is generally worse than the vanilla @code{openmpi} package, which
only provides @code{MPI_THREAD_FUNNELED}.")))
+
+;;; Build phase to be used for packages that execute MPI code.
+(define-public %openmpi-setup
+ '(lambda _
+ ;; By default, running the test suite would fail because 'ssh' could not
+ ;; be found in $PATH. Define this variable to placate Open MPI without
+ ;; adding a dependency on OpenSSH (the agent isn't used anyway.)
+ (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")
+ #t))
--
2.17.1
Ludovic Courtès wrote 7 years ago
(address . ericbavier@centurylink.net)
87h8j1k92d.fsf@gnu.org
Hi Eric,

ericbavier@centurylink.net skribis:

Toggle quote (7 lines)
> From: Eric Bavier <bavier@cray.com>
>
> * gnu/packages/mpi.scm (%openmpi-setup): New variable.
> * gnu/packages/maths.scm (scalapack, slepc-openmpi, mumps-openmpi)
> (superlu-dist, p4est, petsc-openmpi, hypre-openmpi, elemental)
> (sundials-openmpi)[arguments]: Use it in #:phases.

Good idea, go for it!

Thanks,
Ludo’.
Ludovic Courtès wrote 6 years ago
(address . ericbavier@centurylink.net)
87efdxnwv6.fsf@gnu.org
This was pushed as bbe46a4af5972b3b5b434fe5d99ec9a0078b0ab8, closing.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 32641@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 32641
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help