Commit e6971948 authored by FELŠÖCI Marek's avatar FELŠÖCI Marek
Browse files

[inria/mpi] add 'openmpi-curta'

The Curta cluster uses an outdated version of Open MPI and based on
their official documentation and our own experience, it is better to
use the same version of Open MPI for building our Singularity images
to be run on Curta.

Current version on Curta: Open MPI 3.1.3
parent 39df4b76
......@@ -6,9 +6,111 @@
(define-module (inria mpi)
#:use-module (guix)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix licenses)
#:use-module (gnu packages)
#:use-module (gnu packages gcc)
#:use-module (gnu packages linux)
#:use-module (gnu packages valgrind)
#:use-module (gnu packages mpi)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages perl)
#:use-module (srfi srfi-1))
(define-public openmpi-curta
;; Open MPI package matching the version of Open MPI on the Curta
;; super-computer.
;;
;; When creating Singularity images to run on Curta, one should use the same
;; version of Open MPI as the one available on Curta to avoid problems during
;; execution.
;;
;; See more: https://redmine.mcia.fr/projects/cluster-curta/wiki/Singularity
(package
(name "openmpi-curta")
(version "3.1.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.open-mpi.org/software/ompi/v"
(version-major+minor version)
"/downloads/openmpi-" version ".tar.bz2"))
(sha256
(base32
"1dks11scivgaskjs5955y9wprsl12wr3gn5r7wfl0l8gq03l7q4b"))))
(build-system gnu-build-system)
(inputs
`(("hwloc" ,hwloc-1 "lib")
("gfortran" ,gfortran)
("libfabric" ,libfabric)
,@(if (and (not (%current-target-system))
(member (%current-system) (package-supported-systems psm)))
`(("psm" ,psm))
'())
,@(if (and (not (%current-target-system))
(member (%current-system) (package-supported-systems psm2)))
`(("psm2" ,psm2))
'())
("rdma-core" ,rdma-core)
("valgrind" ,valgrind)))
(native-inputs
`(("pkg-config" ,pkg-config)
("perl" ,perl)))
(outputs '("out" "debug"))
(arguments
`(#:configure-flags `("--enable-mpi-ext=affinity" ;cr doesn't work
"--enable-memchecker"
"--with-sge"
;; VampirTrace is obsoleted by scorep and disabling
;; it reduces the closure size considerably.
"--disable-vt"
,(string-append "--with-valgrind="
(assoc-ref %build-inputs "valgrind"))
,(string-append "--with-hwloc="
(assoc-ref %build-inputs "hwloc")))
#:phases (modify-phases %standard-phases
(add-before 'build 'remove-absolute
(lambda _
;; Remove compiler absolute file names (OPAL_FC_ABSOLUTE
;; etc.) to reduce the closure size. See
;; <https://lists.gnu.org/archive/html/guix-devel/2017-07/msg00388.html>
;; and
;; <https://www.mail-archive.com/users@lists.open-mpi.org//msg31397.html>.
(substitute* '("orte/tools/orte-info/param.c"
"oshmem/tools/oshmem_info/param.c"
"ompi/tools/ompi_info/param.c")
(("_ABSOLUTE") ""))
;; Avoid valgrind (which pulls in gdb etc.).
(substitute*
'("./ompi/mca/io/romio314/src/io_romio314_component.c")
(("MCA_io_romio314_COMPLETE_CONFIGURE_FLAGS")
"\"[elided to reduce closure]\""))
#t))
(add-before 'build 'scrub-timestamps ;reproducibility
(lambda _
(substitute* '("ompi/tools/ompi_info/param.c"
"orte/tools/orte-info/param.c"
"oshmem/tools/oshmem_info/param.c")
((".*(Built|Configured) on.*") ""))
#t))
(add-after 'install 'remove-logs ;reproducibility
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(for-each delete-file (find-files out "config.log"))
#t))))))
(home-page "http://www.open-mpi.org")
(synopsis "MPI-3 implementation")
(description
"The Open MPI Project is an MPI-3 implementation that is developed and
maintained by a consortium of academic, research, and industry partners. Open
MPI is therefore able to combine the expertise, technologies, and resources
from all across the High Performance Computing community in order to build the
best MPI library available. Open MPI offers advantages for system and
software vendors, application developers and computer science researchers.")
(license bsd-2)))
(define-public openmpi-with-mpi1-compat
;; In Open MPI 4 the deprecated MPI1 functions are disabled by default.
;; This variant enables them.
......
......@@ -6,7 +6,24 @@
(version 0)
;; Add your own news entry here!
(entry
(commit "18b3708a5adf8ac2403706c2562f33e031bc4406")
(title
(en "openmpi-curta is now available")
(fr "openmpi-curta est désormais disponible")
(sk "openmpi-curta je teraz dostupný"))
(body
(en "An outdated version of Open MPI matching the one available on the Curta
cluster. It is recommended to use this version of Open MPI for building
Singularity containers to be run on Curta to avoid problems during execution.")
(fr "Une version obsolète d'Open MPI correspodante à celle disponible sur
le calculateur Curta. Il est recommandé d'utiliser cette version d'Open MPI pour
construire des images Singularity à faire tourner sur Curta afin d'éviter des
problèmes à l'exécution.")
(sk "Zastarané vydanie Open MPI zhodujúce sa s tým, ktoré je dostupné na
super-počítači Curta. Odporúča sa používať toto vydanie Open MPI pri zostavovaní
obrazov Singularity určených pre Curtu aby sa predišlo ťažkostiam pri
spúšťaní.")))
(entry
(commit "e875734b0969661a1b3d6032b9c520580f50c111")
(title
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment