Commit 79c0cbd8 authored by Algiane's avatar Algiane
Browse files

Merge branch 'master' into mmg

parents a18bdc72 c404b6ce
......@@ -60,11 +60,31 @@ build_paraview:
script:
- guix build paraview
build_metis_r64:
stage: build
script:
- guix build metis-r64
build_starpu-1.1:
stage: build
script:
- guix build starpu@1.1
build_parsec:
stage: build
script:
- guix build parsec
build_parsec_mpi:
stage: build
script:
- guix build parsec-mpi
build_quark:
stage: build
script:
- guix build quark
build_starpu:
stage: build
script:
......@@ -120,10 +140,31 @@ build_pastix-5:
script:
- guix build pastix-5
build_nmad:
build_pm2:
stage: build
script:
- guix build puk
- guix build pioman
- guix build pukabi
- guix build padicotm
- guix build padicotm-mini
- guix build padicotm-pukabi
- guix build padicotm-mini-pukabi
- guix build nmad
- guix build nmad-mini
- guix build mpibenchmark
- guix build mpi_sync_clocks
- guix build --with-input=openmpi=nmad mpi_sync_clocks
build_starpu-nmad:
stage: build
script:
- guix build starpu --with-input=openmpi=nmad
build_starpu-madmpi:
stage: build
script:
- guix build starpu --with-input=openmpi=nmad-mini
build_pampa:
stage: build
......@@ -169,3 +210,8 @@ build_pageng:
stage: build
script:
- guix build pageng
build_openmpi-curta:
stage: build
script:
- guix build openmpi-curta
GNU Guix for High-Performance Computing
===========================================
[![pipeline status](https://gitlab.inria.fr/guix-hpc/guix-hpc/badges/master/pipeline.svg)](https://gitlab.inria.fr/guix-hpc/guix-hpc/commits/master) [![SWH](https://archive.softwareheritage.org/badge/origin/https://gitlab.inria.fr/guix-hpc/guix-hpc/)](https://archive.softwareheritage.org/browse/origin/https://gitlab.inria.fr/guix-hpc/guix-hpc/)
[![pipeline status](https://guix.bordeaux.inria.fr/jobset/guix-hpc/badge.svg)](https://guix.bordeaux.inria.fr/jobset/guix-hpc) [![SWH](https://archive.softwareheritage.org/badge/origin/https://gitlab.inria.fr/guix-hpc/guix-hpc/)](https://archive.softwareheritage.org/browse/origin/https://gitlab.inria.fr/guix-hpc/guix-hpc/)
Hello! This repository contains package recipes and extensions of the
[GNU Guix package manager](https://gnu.org/s/guix) for high-performance
......@@ -48,7 +48,9 @@ Guix-HPC.
Pre-built binaries for Guix-HPC packages are served from
`https://guix.bordeaux.inria.fr`. To benefit from them, you must (1) add this
repository to the list of substitute-urls and (2) authorize the key associated
with this repository.
with this repository. [As the manual
explains](https://guix.gnu.org/manual/en/html_node/Getting-Substitutes-from-Other-Servers.html),
it goes along these lines:
1. Add `https://guix.bordeaux.inria.fr` to the `--substitute-urls`
option [of
......@@ -147,6 +149,15 @@ with this repository.
Enjoy!
## Continuous integration
This channel is [continuously
built](https://guix.bordeaux.inria.fr/jobset/guix-hpc) on our instance
of [Cuirass](https://guix.gnu.org/en/cuirass/), the Guix-based
continuous integration tool. Each commit on either the `guix-hpc` or
the `guix` channel triggers a rebuild, if needed, of the `guix-hpc`
packages.
## Hacking on Guix-HPC
When working on packages of the `guix-hpc` channel, you'll need to clone
......
;;; This module extends GNU Guix and is licensed under the same terms, those
;;; of the GNU GPL version 3 or (at your option) any later version.
;;;
;;; Copyright © 2017, 2019, 2020 Inria
;;; Copyright © 2017, 2019, 2020, 2021 Inria
(define-module (airbus gcvb)
#:use-module (guix)
......@@ -92,7 +92,7 @@
"A library for automatically generating command line interfaces.")
(description
"A library for automatically generating command line interfaces.")
(license #f)))
(license license:asl2.0)))
(define-public python-dash-dangerously-set-inner-html
(package
......@@ -333,7 +333,7 @@
"Bootstrap themed components for use in Plotly Dash")
(description
"Bootstrap themed components for use in Plotly Dash")
(license #f)))
(license license:asl2.0)))
(define-public python-pyyaml-5
(package
......
;;; This module extends GNU Guix and is licensed under the same terms, those
;;; of the GNU GPL version 3 or (at your option) any later version.
;;;
;;; Note that this module provides packages that depend on "non-free"
;;; software, which denies users the ability to study and modify it.
;;;
;;; Copyright © 2019 Inria
(define-module (cnrs irit)
#:use-module (guix)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system cmake)
#:use-module (guix git)
#:use-module (gnu packages)
#:use-module (gnu packages gcc)
#:use-module (gnu packages compression)
#:use-module (gnu packages maths)
#:use-module (gnu packages perl)
#:use-module (gnu packages wget)
#:use-module (guix utils)
#:use-module (gnu packages mpi)
#:use-module (gnu packages ssh)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (inria hiepacs)
#:use-module (inria storm)
#:use-module (inria tadaam))
(define-public qr_mumps
(package
(name "qr_mumps")
(version "3.0.3")
(home-page "http://buttari.perso.enseeiht.fr/qr_mumps/")
(source (origin
(method url-fetch)
(uri
(string-append home-page "releases/qr_mumps-" version ".tgz"))
(sha256
(base32
"16pc843p2zx29zxvnr6hgq674xfkqkvxyy7cx428rc2v2bkg70xx"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags (list
"-Wno-dev"
"-DBUILD_SHARED_LIBS=ON"
(string-append "-DCMAKE_EXE_LINKER_FLAGS="
"-Wl,-rpath="
(assoc-ref %outputs "out")
"/lib")
"-DQRM_WITH_STARPU=ON"
"-DQRM_ORDERING_SCOTCH=ON"
"-DQRM_ORDERING_METIS=ON"
"-DQRM_WITH_MPI=ON"
"-DCMAKE_BUILD_TYPE=Release"
)
#:phases (modify-phases %standard-phases
(add-before 'check 'prepare-test-environment
(lambda _
(setenv "HOME" (getcwd)) ;; StarPU expects $HOME to be writable.
(setenv "OMP_NUM_THREADS" "1")
(setenv "OMPI_MCA_rmaps_base_oversubscribe" "1") #t)))
#:tests? #f))
(native-inputs `(("gfortran" ,gfortran)
("pkg-config" ,pkg-config)))
(inputs `(("metis" ,metis)
("openblas" ,openblas)
("perl" ,perl)
("scotch32" ,scotch32)
("ssh" ,openssh)
;; ("suitesparse" ,suitesparse) ;; for colamd; it would ideally be suitesparse:colamdonly
("wget" ,wget)
))
(propagated-inputs `(("starpu" ,starpu)))
(synopsis "Sparse QR direct solver (experimental package for distributed memroy version)")
(description
"qr_mumps is a software package for the solution of sparse, linear systems
on multicore computers based on the QR factorization of the input matrix.
Therefore, it is suited to solving sparse least-squares problems and to
computing the minimum-norm solution of sparse, underdetermined problems. It can
obviously be used for solving square problems in which case the stability
provided by the use of orthogonal transformations comes at the cost of a higher
operation count with respect to solvers based on, e.g., the LU factorization.
qr_mumps supports real and complex, single or double precision arithmetic. This
is an experimental version of the package for distributed memory." )
(license license:cecill)))
......@@ -14,6 +14,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages man)
#:use-module (gnu packages mpi))
(define-public eztrace
......@@ -124,17 +125,17 @@ threads.")
(define-public fxt
(package
(name "fxt")
(version "0.3.3")
(version "0.3.11"); blocked at this version until StarPU isn't updated with a version containing commit 5c73a6dfe4cdf9ae12c29773f85106755f59c10b
(source (origin
(uri (string-append "mirror://savannah/fkt/fxt-"
version ".tar.gz"))
(method url-fetch)
(sha256
(base32
"09m6sq2qv995pv6qjrwi7582lllrbhv44qkf95a2l96c259flvrz"))))
"0837pdm2ffdixr6wjdcb5ccbwyzakq60bq535b7hb8wygq69ifwc"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)))
`(("perl" ,perl) ("help2man" ,help2man)))
(home-page "https://savannah.nongnu.org/projects/fkt")
(synopsis "Efficient recording of program execution traces")
(description
......
This diff is collapsed.
......@@ -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.
......
;;; This module extends GNU Guix and is licensed under the same terms, those
;;; of the GNU GPL version 3 or (at your option) any later version.
;;;
;;; Copyright © 2019 Inria
;;; Copyright © 2019, 2020 Inria
(define-module (inria pampa)
#:use-module (guix)
......@@ -15,6 +15,10 @@
#:use-module (gnu packages maths)
#:use-module (gnu packages mpi))
(define pt-scotch32-with-mpi1-compat
(package/inherit pt-scotch32
(propagated-inputs `(("openmpi" ,openmpi-with-mpi1-compat)))))
(define-public pampa
(let ((commit "2d2d89ec91c514dbf5a63cf6b746e168eece36fe")
(revision "0"))
......@@ -32,7 +36,9 @@
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
`(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
#:phases (modify-phases %standard-phases
(add-after 'build 'mpi-setup
;; Set the test environment for Open MPI.
,%openmpi-setup))
......@@ -56,7 +62,7 @@
`(("gfortran" ,gfortran)))
(inputs
`(("zlib" ,zlib)
("pt-scotch" ,pt-scotch32)
("pt-scotch" ,pt-scotch32-with-mpi1-compat)
;; PaMPA relies on deprecated MPI1 functionality such as
;; 'MPI_Type_extent'.
......
This diff is collapsed.
;;; This module extends GNU Guix and is licensed under the same terms, those
;;; of the GNU GPL version 3 or (at your option) any later version.
;;;
;;; Copyright © 2019, 2020 Inria
;;; Copyright © 2019, 2020, 2021 Inria
(define-module (inria staging)
#:use-module (guix)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system python)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages check)
#:use-module (gnu packages gl)
#:use-module (gnu packages image-processing)
#:use-module (gnu packages maths)
......@@ -24,6 +27,8 @@
;;;
;;; Code:
(define S specification->package)
(define-public paraview
;; TODO: This should be part of Guix proper, but first, we should try
;; unbundling VTK.
......@@ -53,12 +58,12 @@
;; 'VTK_CXX_COMPILER' as the absolute file name of 'c++'. Remove that so
;; we don't keep a reference to GCC.
(native-inputs
`(("qttools" ,qttools)))
`(("qttools" ,(S "qttools@5"))))
(inputs
`(("qtbase" ,qtbase)
("qtsvg" ,qtsvg)
("qtx11extras" ,qtx11extras)
("qtxmlpatterns" ,qtxmlpatterns)
`(("qtbase" ,(S "qtbase@5"))
("qtsvg" ,(S "qtsvg@5"))
("qtx11extras" ,(S "qtx11extras@5"))
("qtxmlpatterns" ,(S "qtxmlpatterns@5"))
("libx11" ,libx11)
("libxt" ,libxt)
("mesa" ,mesa)
......@@ -81,3 +86,75 @@ memory computing resources. It can be run on supercomputers to analyze
datasets of petascale size as well as on laptops for smaller data.")
(home-page "https://www.paraview.org/")
(license license:bsd-3)))
(define-public metis-r64
;; This variant of Metis uses 64-bit reals (32-bit reals are the default).
;; It was initially submitted as <https://issues.guix.gnu.org/47237> but
;; deemed too specific. Perhaps move it to Guix proper eventually, or add
;; a "package parameter" interface.
(package/inherit metis
(name "metis-r64")
(synopsis
"Graph partitioning and fill-reducing matrix ordering (64-bit reals)")
(arguments
(substitute-keyword-arguments (package-arguments metis)
((#:modules _ '())
'((system base target)
(guix build cmake-build-system)
(guix build utils)))
((#:phases phases '%standard-phases)
`(modify-phases ,phases
(add-after 'unpack 'set-real-type-width
(lambda* (#:key build target #:allow-other-keys)
;; Enable 64-bit floating point numbers on 64-bit
;; architectures. Leave the default 32-bit width on other
;; architectures.
(let ((word-size
(with-target (or target build %host-type)
(lambda ()
(target-word-size)))))
(when (= 8 word-size)
(display "setting REALTYPEWIDTH to 64...\n")
(substitute* "include/metis.h"
(("define REALTYPEWIDTH.*$")
"define REALTYPEWIDTH 64\n"))))))))))))
(define-public python-brian2
(package
(name "python-brian2")
(version "2.4.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Brian2" version))
(sha256
(base32
"1wjrx581xmzrgvc790bk78f38ky65lsiv1n01cmwdn2507s1lwbs"))))
(build-system python-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "pytest")))))
;; FIXME:
;; AttributeError: 'Config' object has no attribute 'fail_for_not_implemented'
#:tests? #f))
(propagated-inputs
`(("python-cython" ,python-cython)
("python-jinja2" ,python-jinja2)
("python-numpy" ,python-numpy)
("python-pyparsing" ,python-pyparsing)
("python-setuptools" ,python-setuptools)
("python-sympy" ,python-sympy)))
(native-inputs
`(("python-pytest" ,python-pytest)
("python-pytest-xdist" ,python-pytest-xdist)))
(home-page "http://www.briansimulator.org/")
(synopsis "Clock-driven simulator for spiking neural networks")
(description
"Brian is a simulator for spiking neural networks, written in Python. It
is designed to be easy to learn and use, highly flexible and easily
extensible.")
(license license:cecill)))
......@@ -136,7 +136,7 @@ kernels are executed as efficiently as possible.")
(package
(inherit starpu-1.2)
(name "starpu")
(version "1.3.7")
(version "1.3.8"); for the next release, update also fxt in inria/eztrace.scm
(source (origin
(method git-fetch)
(uri (git-reference
......@@ -144,7 +144,7 @@ kernels are executed as efficiently as possible.")
(commit (string-append "starpu-" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0819q3qwgzv4py40p6v9qr38cg0qvbhij512i0az6wip2xi1v1gg"))
(base32 "0sgr93czg4799vcdbxli56f65pwyg98xijwsiic8j34njrvy2mdz"))
(patches (search-patches %patch-path))))
(arguments
(substitute-keyword-arguments (package-arguments starpu-1.2)
......@@ -166,6 +166,8 @@ kernels are executed as efficiently as possible.")
(package-propagated-inputs starpu-1.2)
'("mpi" "hwloc"))))))
; next release of StarPU will have an optional dependency on tadaam/mpi_sync_clocks: don't forget to add it !
(define-public starpu
starpu-1.3)
......@@ -183,7 +185,7 @@ kernels are executed as efficiently as possible.")
`(cons "--with-fxt" ,flags))))
;; some tests require python.
(native-inputs
`(("python" ,python-2)
`(("python-wrapper" ,python-wrapper)
,@(package-native-inputs starpu)))))
(define-public starpu+simgrid+fxt
......@@ -203,6 +205,6 @@ kernels are executed as efficiently as possible.")
,flags))))
;; some tests require python.
(native-inputs
`(("python" ,python-2)
`(("python-wrapper" ,python-wrapper)
,@(package-native-inputs starpu)))))
This diff is collapsed.
;;; This module extends GNU Guix and is licensed under the same terms, those
;;; of the GNU GPL version 3 or (at your option) any later version.
;;;
;;; Copyright © 2019 Inria
;;; Copyright © 2019, 2021 Inria
(define-module (inria vite)
#:use-module (guix packages)
......@@ -9,9 +9,12 @@
#:use-module (guix licenses)
#:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
#:use-module (gnu packages qt)
#:use-module (gnu packages gl))
(define S specification->package)
(define-public vite
(let ((revision 1610))
(package
......@@ -39,11 +42,11 @@
)
#:tests? #f))
(inputs
`(("qtbase" ,qtbase)
`(("qtbase" ,(S "qtbase@5"))
("mesa" ,mesa)
("glu" ,glu)))
(native-inputs
`(("qttools" ,qttools)))
`(("qttools" ,(S "qttools@5"))))
(home-page "http://vite.gforge.inria.fr/")
(synopsis "Visualize program execution traces")
(description
......
......@@ -14,6 +14,8 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages mpi) ;; for hwloc
#:use-module (gnu packages m4)
#:use-module (gnu packages autotools)
)
(define-public librsb
......@@ -28,12 +30,10 @@
"1ynrsgnvv1jfm8dv3jwjrip9x9icxv7w3qrk149025j6fbaza8gl"))
))
(build-system gnu-build-system)
(inputs `(
("gfortran" ,gfortran "lib")
("gfortran" ,gfortran)
("hwloc" ,hwloc)
("zlib" ,zlib)
))
(inputs `(("m4", m4)
("libtool", libtool)
("autoconf", autoconf)