Archived
1
0
Fork 0

gnu: Add MPICH.

* gnu/packages/mpi.scm (mpich): New variable.

Co-authored-by: Ludovic Courtès <ludovic.courtes@inria.fr>
This commit is contained in:
Maurice Brémond 2020-02-17 18:19:55 +01:00 committed by Ludovic Courtès
parent 7046106ef9
commit c70261bfb9
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -27,13 +27,15 @@
(define-module (gnu packages mpi) (define-module (gnu packages mpi)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module ((guix licenses) #:use-module ((guix licenses)
#:hide (expat)) #:hide (expat zlib))
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix deprecation) #:use-module (guix deprecation)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages fabric-management) #:use-module (gnu packages fabric-management)
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
#:use-module (gnu packages java) #:use-module (gnu packages java)
@ -393,3 +395,80 @@ supports point-to-point and collective communications of any picklable Python
object as well as optimized communications of Python objects (such as NumPy object as well as optimized communications of Python objects (such as NumPy
arrays) that expose a buffer interface.") arrays) that expose a buffer interface.")
(license bsd-3))) (license bsd-3)))
(define-public mpich
(package
(name "mpich")
(version "3.3.2")
(source (origin
(method url-fetch)
(uri (string-append "http://www.mpich.org/static/downloads/"
version "/mpich-" version ".tar.gz"))
(sha256
(base32
"1farz5zfx4cd0c3a0wb9pgfypzw0xxql1j1294z1sxslga1ziyjb"))))
(build-system gnu-build-system)
(inputs
`(("zlib" ,zlib)
("hwloc" ,hwloc-2 "lib")
("slurm" ,slurm)
,@(if (and (not (%current-target-system))
(member (%current-system) (package-supported-systems ucx)))
`(("ucx" ,ucx))
'())))
(native-inputs
`(("perl" ,perl)
("which" ,which)
("gfortran" ,gfortran)))
(outputs '("out" "debug"))
(arguments
`(#:configure-flags
(list "--disable-silent-rules" ;let's see what's happening
"--enable-debuginfo"
;; "--with-device=ch4:ucx" ; --with-device=ch4:ofi segfaults in tests
(string-append "--with-hwloc-prefix="
(assoc-ref %build-inputs "hwloc"))
,@(if (assoc "ucx" (package-inputs this-package))
`((string-append "--with-ucx="
(assoc-ref %build-inputs "ucx")))
'()))
#:phases (modify-phases %standard-phases
(add-after 'unpack 'patch-sources
(lambda _
(substitute* "./maint/gen_subcfg_m4"
(("/usr/bin/env") (which "env")))
(substitute* "src/glue/romio/all_romio_symbols"
(("/usr/bin/env") (which "env")))
(substitute* (find-files "." "buildiface")
(("/usr/bin/env") (which "env")))
(substitute* "maint/extracterrmsgs"
(("/usr/bin/env") (which "env")))
(substitute* (find-files "." "f77tof90")
(("/usr/bin/env") (which "env")))
(substitute* (find-files "." "\\.sh$")
(("/bin/sh") (which "sh")))
#t))
(add-before 'configure 'fix-makefile
(lambda _
;; Remove "@hwloclib@" from 'pmpi_convenience_libs'.
;; This fixes "No rule to make target '-lhwloc', needed
;; by 'lib/libmpi.la'".
(substitute* "Makefile.in"
(("^pmpi_convenience_libs = (.*) @hwloclib@ (.*)$" _
before after)
(string-append "pmpi_convenience_libs = "
before " " after)))
#t)))))
(home-page "https://www.mpich.org/")
(synopsis "Implementation of the Message Passing Interface (MPI)")
(description
"MPICH is a high-performance and portable implementation of the Message
Passing Interface (MPI) standard (MPI-1, MPI-2 and MPI-3). MPICH provides an
MPI implementation that efficiently supports different computation and
communication platforms including commodity clusters, high-speed networks (10
Gigabit Ethernet, InfiniBand, Myrinet, Quadrics), and proprietary high-end
computing systems (Blue Gene, Cray). It enables research in MPI through a
modular framework for other derived implementations.")
(license bsd-2)))