diff options
author | Eric Bavier <bavier@cray.com> | 2018-08-16 15:47:41 -0500 |
---|---|---|
committer | Eric Bavier <bavier@member.fsf.org> | 2018-09-11 20:29:04 -0500 |
commit | bbe46a4af5972b3b5b434fe5d99ec9a0078b0ab8 (patch) | |
tree | 51557ea5758f4aa0573b4b98daa9d56fb3de3d14 | |
parent | 5882078e8c999c7de16e38bc7f7a293ff2ec01a8 (diff) | |
download | guix-bbe46a4af5972b3b5b434fe5d99ec9a0078b0ab8.tar.gz guix-bbe46a4af5972b3b5b434fe5d99ec9a0078b0ab8.zip |
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.
-rw-r--r-- | gnu/packages/maths.scm | 102 | ||||
-rw-r--r-- | 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 d1db75e658..af41093fbb 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 f34b08e4ca..7dfec16fc7 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)) |