summaryrefslogtreecommitdiff
path: root/gnu/packages/parallel.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/parallel.scm')
-rw-r--r--gnu/packages/parallel.scm106
1 files changed, 91 insertions, 15 deletions
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 7bd2834e13..e75e902a68 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2020 Eric Bavier <bavier@posteo.net>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015-2018, 2020-2023 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015-2018, 2020-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016, 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
@@ -14,6 +14,7 @@
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
+;;; Copyright © 2024 Romain Garbage <romain.garbage@inria.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -51,6 +52,7 @@
#:use-module (gnu packages documentation)
#:use-module (gnu packages flex)
#:use-module (gnu packages freeipmi)
+ #:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
#:use-module (gnu packages maths)
#:use-module (gnu packages mpi)
@@ -68,14 +70,14 @@
(define-public parallel
(package
(name "parallel")
- (version "20240622")
+ (version "20240722")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/parallel/parallel-"
version ".tar.bz2"))
(sha256
- (base32 "1m9qpx6c7b62s1kjp6aj0qfnj3fw2pl72q32bdykqi5x0z4i1qip"))
+ (base32 "1w2k1s7fmbj7csnmxxzvg07i5vgja1ddhjj6m6z2ibvnyxqm8cy7"))
(snippet
'(begin
(use-modules (guix build utils))
@@ -227,6 +229,7 @@ when jobs finish.")
`(,hwloc-2 "lib")
json-c
linux-pam
+ openpmix
munge
numactl
readline))
@@ -243,6 +246,14 @@ when jobs finish.")
(string-append "--with-json=" #$(this-package-input "json-c"))
(string-append "--with-munge=" #$(this-package-input "munge"))
+ ;; Use PMIx bundled with Open MPI (this is required for Open MPI 5.x).
+ ;; Note: Older versions that inherit from this package lack the
+ ;; 'openpmix' dependency.
+ #$(let ((openmpix (this-package-input "openpmix")))
+ (if openmpix
+ #~(string-append "--with-pmix=" #$openmpix)
+ "--without-pmix"))
+
;; 32-bit support is marked as deprecated and needs to be
;; explicitly enabled.
#$@(if (target-64bit?) '() '("--enable-deprecated")))
@@ -304,10 +315,10 @@ by managing a queue of pending work.")
(define-public slurm-21.08
(package
- (inherit slurm)
+ (inherit slurm-22.05)
(version "21.08.8")
(source (origin
- (inherit (package-source slurm))
+ (inherit (package-source slurm-22.05))
(method url-fetch)
(uri (string-append
"https://download.schedmd.com/slurm/slurm-"
@@ -315,14 +326,19 @@ by managing a queue of pending work.")
(patches '()) ;drop 'salloc' patch
(sha256
(base32
- "1sjln54idc9rhg8f2nvm38sgs6fncncyzslas8ixy65pqz2hphbf"))))))
+ "1sjln54idc9rhg8f2nvm38sgs6fncncyzslas8ixy65pqz2hphbf"))))
+
+ ;; This and older versions of slurm have PMIx support but they seem to
+ ;; require an older version of openpmix. Disable PMIx support.
+ (inputs (modify-inputs (package-inputs slurm-22.05)
+ (delete "openpmix")))))
(define-public slurm-20.11
(package
- (inherit slurm)
+ (inherit slurm-21.08)
(version "20.11.9")
(source (origin
- (inherit (package-source slurm))
+ (inherit (package-source slurm-21.08))
(method url-fetch)
(uri (string-append
"https://download.schedmd.com/slurm/slurm-"
@@ -334,10 +350,10 @@ by managing a queue of pending work.")
(define-public slurm-20.02
(package
- (inherit slurm)
+ (inherit slurm-20.11)
(version "20.02.6-1")
(source (origin
- (inherit (package-source slurm))
+ (inherit (package-source slurm-20.11))
(method url-fetch)
(uri (string-append
"https://download.schedmd.com/slurm/slurm-"
@@ -347,7 +363,7 @@ by managing a queue of pending work.")
(base32
"0qj4blfymrd2ry2qmb58l3jbr4jwygc3adcfw7my27rippcijlyc"))))
(arguments
- (substitute-keyword-arguments (package-arguments slurm)
+ (substitute-keyword-arguments (package-arguments slurm-20.11)
((#:configure-flags flags ''())
#~(append '("CFLAGS=-O2 -g -fcommon" "LDFLAGS=-fcommon")
#$flags))))))
@@ -357,7 +373,7 @@ by managing a queue of pending work.")
(inherit slurm-20.02)
(version "19.05.8")
(source (origin
- (inherit (package-source slurm))
+ (inherit (package-source slurm-20.02))
(method url-fetch)
(uri (string-append
"https://download.schedmd.com/slurm/slurm-"
@@ -370,11 +386,11 @@ by managing a queue of pending work.")
;; Same as Debian 10
(define-public slurm-18.08
(package
- (inherit slurm-20.02)
+ (inherit slurm-19.05)
(version "18.08.9")
(source
(origin
- (inherit (package-source slurm))
+ (inherit (package-source slurm-20.02))
(uri (string-append
"https://download.schedmd.com/slurm/slurm-"
version ".tar.bz2"))
@@ -554,7 +570,7 @@ obtain information about the CPU being used: supported instruction set,
processor name, cache information, and topology information.")
;; On aarch64-linux, there is a bug reported upstream:
;; https://github.com/pytorch/cpuinfo/issues/14
- (supported-systems '("armv7-linux" "i686-linux" "x86_64-linux"))
+ (supported-systems '("armhf-linux" "i686-linux" "x86_64-linux"))
(license license:bsd-2))))
(define-public clog
@@ -612,3 +628,63 @@ debug information.
"This header-only C++ library provides a portable interface to
single-instruction multiple-data (SIMD) intrinsics.")
(license license:expat))))
+
+(define-public openpmix
+ (package
+ (name "openpmix")
+ (version "4.2.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/openpmix/openpmix/releases/download/v"
+ version "/pmix-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1j9xlhqrrmgjdkwakamn78y5gj756adi53hn25zksgr3is3l5d09"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list (string-append "--with-hwloc="
+ (ungexp (this-package-input "hwloc") "lib")))))
+ (inputs (list libevent `(,hwloc "lib")))
+ (native-inputs (list perl python))
+ (synopsis "PMIx library")
+ (description
+ "PMIx is an application programming interface standard that provides
+libraries and programming models with portable and well-defined access to
+commonly needed services in distributed and parallel computing systems.")
+ (home-page "https://pmix.org/")
+ ;; The provided license is kind of BSD-style but specific.
+ (license (license:fsf-free "https://github.com/openpmix/openpmix?tab=License-1-ov-file#License-1-ov-file"))))
+
+(define-public prrte
+ (package
+ (name "prrte")
+ (version "3.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/openpmix/prrte/releases/download/v"
+ version "/prrte-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0wiy0vk37v4db1jgxza8bci0cczcvj34dalzsrlz05dk45zb7dl3"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:configure-flags #~(list (string-append "--with-hwloc="
+ (assoc-ref %build-inputs "hwloc"))
+ (string-append "--with-pmix=" #$(this-package-input "openpmix")))))
+ (inputs (list libevent
+ `(,hwloc "lib")
+ openpmix))
+ (native-inputs (list perl))
+ (synopsis "PMIx Reference RunTime Environment (PRRTE)")
+ (description
+ "The PMIx Reference RunTime Environment is a runtime environment
+containing the reference implementation and capable of operating
+within a host SMS. The reference RTE therefore provides an easy way of
+exploring PMIx capabilities and testing PMIx-based applications
+outside of a PMIx-enabled environment.")
+ (home-page "https://openpmix.github.io/")
+ ;; The provided license is kind of BSD-style but specific.
+ (license (license:fsf-free "https://github.com/openpmix/prrte?tab=License-1-ov-file#License-1-ov-file"))))