* [bug#74419] [PATCH 0/5] MPI support for Slingshot via libcxi
@ 2024-11-18 14:56 Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 1/5] gnu: Add cassini-headers Ludovic Courtès
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Ludovic Courtès @ 2024-11-18 14:56 UTC (permalink / raw)
To: 74419; +Cc: Ludovic Courtès, romain.garbage
From: Ludovic Courtès <ludovic.courtes@inria.fr>
Hello,
This series provides packages adding support for HPE’s Slingshot
high-speed interconnect to Open MPI. I have tested the whole stack
with ‘intel-mpi-benchmarks’ on a Tier-1 supercomputer with a
Slingshot NIC (Adastra, in France) and confirmed that we get the
expected peak bandwidth, around 25 GB/s.
Libcxi and related packages were fully published as free software
just today. I’m really happy about that because it unlocks access
to major supercomputers using a free software stack, and using Guix!
Incidentally, Guix will be the very first distro shipping packages
off their free releases. :-)
Many thanks to the people we talked to at HPE who helped make this
happen faster.
Ludo’.
Ludovic Courtès (5):
gnu: Add cassini-headers.
gnu: Add cxi-driver.
gnu: Add libcxi.
gnu: libfabric: Enable libcxi support.
gnu: openmpi: Disable static libraries.
gnu/packages/linux.scm | 137 +++++++++++++++++++++++++++++++++++++++--
gnu/packages/mpi.scm | 2 +
2 files changed, 135 insertions(+), 4 deletions(-)
base-commit: 23cbbe6860782c5d4a0ba599ea1cda0642e91661
--
2.46.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug#74419] [PATCH 1/5] gnu: Add cassini-headers.
2024-11-18 14:56 [bug#74419] [PATCH 0/5] MPI support for Slingshot via libcxi Ludovic Courtès
@ 2024-11-18 14:59 ` Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 2/5] gnu: Add cxi-driver Ludovic Courtès
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2024-11-18 14:59 UTC (permalink / raw)
To: 74419; +Cc: Ludovic Courtès, Leo Famulari, Wilko Meyer
From: Ludovic Courtès <ludovic.courtes@inria.fr>
* gnu/packages/linux.scm (cassini-headers): New variable.
Change-Id: I278fe784ed2a0b31831dd6ff19f0c03d193b310a
---
gnu/packages/linux.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 7a856c4721..9d0970313a 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -8988,6 +8988,34 @@ (define-public procenv
(home-page "https://github.com/jamesodhunt/procenv/")
(license license:gpl3+)))
+(define-public cassini-headers
+ (let ((commit "9a8a738a879f007849fbc69be8e3487a4abf0952")
+ (revision "0"))
+ (package
+ (name "cassini-headers")
+ (version (git-version "2.0.0" ;per .spec file
+ revision commit))
+ (home-page "https://github.com/HewlettPackard/shs-cassini-headers")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0a54vwfr29n0i392wdap7rzmq0lb8mxa17d8yljdbm0kzrq48csz"))))
+ (build-system copy-build-system)
+ (arguments
+ (list #:install-plan
+ #~'(("include" "include")
+ ("share/cassini-headers" "share/cassini-headers"))))
+ (synopsis "Cassini network hardware definitions and headers")
+ (description
+ "This package provides hardware definitions and C headers for use by
+the Linux driver and by user-space applications for the Cassini/Slingshot
+high-speed network interconnect made by HPE (formerly Cray). User-land
+software uses @file{cxi_prov_hw.h} from this package.")
+ (license (list license:gpl2 license:bsd-2))))) ;dual-licensed
+
(define-public libfabric
(package
(name "libfabric")
--
2.46.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#74419] [PATCH 2/5] gnu: Add cxi-driver.
2024-11-18 14:56 [bug#74419] [PATCH 0/5] MPI support for Slingshot via libcxi Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 1/5] gnu: Add cassini-headers Ludovic Courtès
@ 2024-11-18 14:59 ` Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 3/5] gnu: Add libcxi Ludovic Courtès
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2024-11-18 14:59 UTC (permalink / raw)
To: 74419; +Cc: Ludovic Courtès, Leo Famulari, Wilko Meyer
From: Ludovic Courtès <ludovic.courtes@inria.fr>
* gnu/packages/linux.scm (cxi-driver): New variable.
Change-Id: Iac48010d3de7f46248afe8c71991da71b61ebe6f
---
gnu/packages/linux.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 9d0970313a..17f743ef11 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -9016,6 +9016,36 @@ (define-public cassini-headers
software uses @file{cxi_prov_hw.h} from this package.")
(license (list license:gpl2 license:bsd-2))))) ;dual-licensed
+(define-public cxi-driver
+ (let ((commit "5f0ec0ead6ef3f98542a2ef5e76b89d14dd22150")
+ (revision "0"))
+ (package
+ (name "cxi-driver")
+ (version (git-version "1.0.0" ;per .spec file
+ revision commit))
+ (home-page "https://github.com/HewlettPackard/shs-cxi-driver")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "19cly014ihgdidrc1aki2xsbfhpc0g73v0vxcky8r27xza7rz5bg"))))
+ ;; TODO: Actually build the Linux driver.
+ (build-system copy-build-system)
+ (arguments
+ (list #:install-plan #~'(("include" "include"))))
+ (propagated-inputs (list cassini-headers))
+ (synopsis "Linux driver for the Cassini/Slingshot interconnect")
+ (description
+ "This is the Linux driver for the Cray/HPE Cassini 1 and 2 high-speed
+network interconnect (aka. Slingshot), and its Ethernet driver. It includes
+the @file{uapi/misc/cxi.h} C header file for use by user-land software.
+
+Currently the Linux driver itself is missing from this package.")
+ (license license:gpl2+))))
+
(define-public libfabric
(package
(name "libfabric")
--
2.46.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#74419] [PATCH 3/5] gnu: Add libcxi.
2024-11-18 14:56 [bug#74419] [PATCH 0/5] MPI support for Slingshot via libcxi Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 1/5] gnu: Add cassini-headers Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 2/5] gnu: Add cxi-driver Ludovic Courtès
@ 2024-11-18 14:59 ` Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 4/5] gnu: libfabric: Enable libcxi support Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 5/5] gnu: openmpi: Disable static libraries Ludovic Courtès
4 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2024-11-18 14:59 UTC (permalink / raw)
To: 74419; +Cc: Ludovic Courtès, Leo Famulari, Wilko Meyer
From: Ludovic Courtès <ludovic.courtes@inria.fr>
* gnu/packages/linux.scm (libcxi): New variable.
Change-Id: I714d8694c796d5bc3ce4756d5aae576031288699
---
gnu/packages/linux.scm | 55 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 17f743ef11..6b2a0c201e 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -150,6 +150,7 @@ (define-module (gnu packages linux)
#:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages image)
#:use-module (gnu packages kde-frameworks)
+ #:use-module (gnu packages libevent)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages libusb)
#:use-module (gnu packages llvm)
@@ -9046,6 +9047,60 @@ (define-public cxi-driver
Currently the Linux driver itself is missing from this package.")
(license license:gpl2+))))
+(define-public libcxi
+ (let ((commit "5b6f8b5d57017c7963debb379d5693c59aca63ed")
+ (revision "0"))
+ (package
+ (name "libcxi")
+ (version (git-version "1.0.1" revision commit))
+ (home-page "https://github.com/HewlettPackard/shs-libcxi")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1h3dhird8p11q4ziaxzg1hr5gxcgwx1limzdcyildyaw50dy549g"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list "--disable-static"
+ (string-append "--with-udevrulesdir="
+ #$output "/lib/udev/rules.d"))
+
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'set-cassini-file-names
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "utils/cxi_dump_csrs.py"
+ (("/usr/share/cassini-headers/csr_defs.json")
+ (search-input-file
+ inputs
+ "/share/cassini-headers/csr_defs.json"))))))))
+ (native-inputs (list autoconf
+ automake
+ libtool
+ pkg-config
+ python-wrapper))
+ (inputs (list libconfig
+ libuv
+ fuse-2
+ libyaml
+ libnl
+ numactl
+ eudev
+ (list lm-sensors "lib")))
+ (propagated-inputs (list cassini-headers cxi-driver))
+ (synopsis "Interface to the Cassini/Slingshot high-speed interconnect")
+ (description
+ "Libcxi provides applications with a low-level interface to the
+Cray/HPE Cassini high-speed @acronym{NIC, network interface controller}, also
+known as Slingshot.")
+
+ ;; License is spelled out in 'cray-libcxi.spec' and in source file
+ ;; headers.
+ (license (list license:lgpl2.1+ license:bsd-3))))) ;dual-licensed
+
(define-public libfabric
(package
(name "libfabric")
--
2.46.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#74419] [PATCH 4/5] gnu: libfabric: Enable libcxi support.
2024-11-18 14:56 [bug#74419] [PATCH 0/5] MPI support for Slingshot via libcxi Ludovic Courtès
` (2 preceding siblings ...)
2024-11-18 14:59 ` [bug#74419] [PATCH 3/5] gnu: Add libcxi Ludovic Courtès
@ 2024-11-18 14:59 ` Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 5/5] gnu: openmpi: Disable static libraries Ludovic Courtès
4 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2024-11-18 14:59 UTC (permalink / raw)
To: 74419; +Cc: Ludovic Courtès, Leo Famulari, Wilko Meyer
From: Ludovic Courtès <ludovic.courtes@inria.fr>
* gnu/packages/linux.scm (libfabric)[inputs]: Add libcxi, curl, and
json-c if libcxi supports the target system.
[arguments]: Add #:phases.
Change-Id: I3345cac68603c776ec4953cf0e97a12389c30635
---
gnu/packages/linux.scm | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 6b2a0c201e..2bd1e14c0c 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -9116,21 +9116,37 @@ (define-public libfabric
(build-system gnu-build-system)
(inputs
(let ((if-supported ;XXX: copied from openmpi
- (lambda (package)
+ (lambda (package . extra)
(if (and (not (%current-target-system))
(member (%current-system)
(package-supported-systems package)))
- (list package)
+ (cons package extra)
'()))))
(append (list rdma-core libnl)
(if-supported psm)
- (if-supported psm2))))
+ (if-supported psm2)
+ (if-supported libcxi curl json-c))))
(arguments
(list #:configure-flags
#~(append (if #$(target-64bit?)
(list "--enable-efa")
'())
- (list "--enable-verbs"))))
+ (list #$@(if (this-package-input "libcxi")
+ #~("--enable-cxi")
+ #~())
+ "--enable-verbs"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'remove-libtool-archive
+ (lambda _
+ ;; 'libfabric.la' has '-ljson-c' without a corresponding
+ ;; '-L' in 'dependency_libs', which in turn causes users
+ ;; such as Open MPI to fail at link time due to '-ljson-c'
+ ;; not being found, even when building a shared library.
+ ;; So, remove the .la file.
+ (delete-file
+ (string-append #$output
+ "/lib/libfabric.la")))))))
(home-page "https://ofiwg.github.io/libfabric/")
(synopsis "Open Fabric Interfaces")
(description
--
2.46.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#74419] [PATCH 5/5] gnu: openmpi: Disable static libraries.
2024-11-18 14:56 [bug#74419] [PATCH 0/5] MPI support for Slingshot via libcxi Ludovic Courtès
` (3 preceding siblings ...)
2024-11-18 14:59 ` [bug#74419] [PATCH 4/5] gnu: libfabric: Enable libcxi support Ludovic Courtès
@ 2024-11-18 14:59 ` Ludovic Courtès
4 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2024-11-18 14:59 UTC (permalink / raw)
To: 74419; +Cc: Ludovic Courtès
* gnu/packages/mpi.scm (openmpi-4)[arguments]: Pass “--disable-static”.
* gnu/packages/mpi.scm (openmpi-5)[arguments]: Likewise.
Change-Id: Ia6a8bc8a88d12a37878a45eed380262759bd4565
---
gnu/packages/mpi.scm | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index bc1fd797d6..20497242e5 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -234,6 +234,7 @@ (define-public openmpi-4
(list
#:configure-flags #~`("--enable-mpi-ext=affinity" ;cr doesn't work
"--with-sge"
+ "--disable-static"
#$@(if (package? (this-package-input "valgrind"))
#~("--enable-memchecker"
@@ -342,6 +343,7 @@ (define-public openmpi-5
(list #:configure-flags
#~(list "--enable-mpi-ext=affinity" ;cr doesn't work
"--with-sge"
+ "--disable-static"
#$@(if (package? (this-package-input "valgrind"))
#~("--enable-memchecker"
--
2.46.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-11-18 15:03 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-18 14:56 [bug#74419] [PATCH 0/5] MPI support for Slingshot via libcxi Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 1/5] gnu: Add cassini-headers Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 2/5] gnu: Add cxi-driver Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 3/5] gnu: Add libcxi Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 4/5] gnu: libfabric: Enable libcxi support Ludovic Courtès
2024-11-18 14:59 ` [bug#74419] [PATCH 5/5] gnu: openmpi: Disable static libraries Ludovic Courtès
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).