[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/03: mpi: Factorize openmpi setup build phase.
From: |
Eric Bavier |
Subject: |
02/03: mpi: Factorize openmpi setup build phase. |
Date: |
Tue, 11 Sep 2018 21:43:20 -0400 (EDT) |
bavier pushed a commit to branch master
in repository guix.
commit bbe46a4af5972b3b5b434fe5d99ec9a0078b0ab8
Author: Eric Bavier <address@hidden>
Date: Thu Aug 16 15:47:41 2018 -0500
mpi: Factorize openmpi setup build phase.
* 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, arpack-ng-openmpi)[arguments]: Use it in #:phases.
---
gnu/packages/maths.scm | 102 ++++++++++---------------------------------------
gnu/packages/mpi.scm | 14 ++++++-
2 files changed, 34 insertions(+), 82 deletions(-)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index d1db75e..af41093 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -511,14 +511,8 @@ large scale eigenvalue problems.")
''("--enable-mpi"))
((#: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)))))
(synopsis "Fortran subroutines for solving eigenvalue problems with MPI")))
(define-public lapack
@@ -579,14 +573,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
@@ -1717,14 +1705,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
@@ -1855,14 +1837,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)
@@ -2032,14 +2008,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)
@@ -2285,13 +2255,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")
@@ -2384,15 +2351,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")))
@@ -2575,14 +2535,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
@@ -3649,14 +3603,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
@@ -3939,6 +3887,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.
@@ -4123,16 +4073,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 f34b08e..7dfec16 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 <address@hidden>
+;;; Copyright © 2014, 2015, 2018 Eric Bavier <address@hidden>
;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <address@hidden>
;;; Copyright © 2014 Ian Denhardt <address@hidden>
;;; Copyright © 2016 Andreas Enge <address@hidden>
@@ -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))