mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 22:08:16 -05:00
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.
This commit is contained in:
parent
5882078e8c
commit
bbe46a4af5
2 changed files with 34 additions and 82 deletions
|
@ -511,14 +511,8 @@ (define-public arpack-ng-openmpi
|
|||
''("--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 @@ (define-public scalapack
|
|||
(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 @@ (define-public petsc-openmpi
|
|||
,@(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 @@ (define-public slepc-openmpi
|
|||
(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 @@ (define-public mumps-openmpi
|
|||
(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 @@ (define-public superlu-dist
|
|||
"/" 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 @@ (define-public scotch
|
|||
;; "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 @@ (define-public p4est
|
|||
(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 @@ (define-public hypre-openmpi
|
|||
,@(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 @@ (define-public elemental
|
|||
"-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 @@ (define-public sundials-openmpi
|
|||
,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")))
|
||||
|
|
|
@ -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 @@ (define-public openmpi-thread-multiple
|
|||
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))
|
||||
|
|
Loading…
Reference in a new issue