[PATCH 0/2] Reduce size of openmpi@5 closure

  • Open
  • quality assurance status badge
Details
One participant
  • Ludovic Courtès
Owner
unassigned
Submitted by
Ludovic Courtès
Severity
normal
L
L
Ludovic Courtès wrote 12 hours ago
(address . guix-patches@gnu.org)
cover.1728996088.git.ludo@gnu.org
Hello!

This patch set reduces the closure size of openmpi@5 from
605 MiB to 249 MiB. It also removes potentially misleading
argument inheritance from openmpi@4 to openmpi@5.

Thoughts?

Ludo'.

Ludovic Courtès (2):
gnu: openmpi@5: Remove reference to GCC and other build tools.
gnu: prrte: Remove reference to GCC and other build tools.

gnu/packages/mpi.scm | 59 ++++++++++++++++++++++-----------------
gnu/packages/parallel.scm | 22 +++++++++++++--
2 files changed, 53 insertions(+), 28 deletions(-)


base-commit: 6757bfdfc0b22a1e23a3d33566155550182244fc
--
2.46.0
L
L
Ludovic Courtès wrote 12 hours ago
[PATCH 1/2] gnu: openmpi@5: Remove reference to GCC and other build tools.
(address . 73818@debbugs.gnu.org)(name . Ludovic Courtès)(address . ludovic.courtes@inria.fr)
40bb05332e8a6af8e964b57e1648ab4c38b8874f.1728996088.git.ludo@gnu.org
From: Ludovic Courtès <ludovic.courtes@inria.fr>

This removes GCC from the direct references of openmpi@5.

* gnu/packages/mpi.scm (openmpi-5)[arguments]: Replace arguments
entirely instead of using ‘substitute-keyword-arguments’. Reintroduce
‘remove-absolute’ phase. Remove ‘find-opensm-headers’ and ‘remove-logs’
phases, which are no longer needed.

Change-Id: Ia3b25230488ca13310cd5bb2ae45f6990e906fa5
---
gnu/packages/mpi.scm | 59 +++++++++++++++++++++++++-------------------
1 file changed, 34 insertions(+), 25 deletions(-)

Toggle diff (78 lines)
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 75cfd4af66..6e1f972eb8 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -339,37 +339,46 @@ (define-public openmpi-5
(outputs '("out" "debug"))
(arguments
- (substitute-keyword-arguments (package-arguments openmpi)
- ((#:configure-flags _)
- #~(list "--enable-mpi-ext=affinity" ;cr doesn't work
- "--with-sge"
+ (list #:configure-flags
+ #~(list "--enable-mpi-ext=affinity" ;cr doesn't work
+ "--with-sge"
- #$@(if (package? (this-package-input "valgrind"))
- #~("--enable-memchecker"
- "--with-valgrind")
- #~("--without-valgrind"))
+ #$@(if (package? (this-package-input "valgrind"))
+ #~("--enable-memchecker"
+ "--with-valgrind")
+ #~("--without-valgrind"))
- "--with-hwloc=external"
- "--with-libevent"
+ "--with-hwloc=external"
+ "--with-libevent"
- ;; This replaces --enable-mpirun-prefix-by-default wich is deprecated
- ;; since 5.x.
- "--enable-prte-prefix-by-default"
+ ;; This replaces --enable-mpirun-prefix-by-default wich is deprecated
+ ;; since 5.x.
+ "--enable-prte-prefix-by-default"
- ;; Enable support for the 'Process Management Interface for Exascale'
- ;; (PMIx) used e.g. by Slurm for the management communication and
- ;; coordination of MPI processes.
- (string-append "--with-pmix=" #$(this-package-input "openpmix"))
- (string-append "--with-prrte=" #$(this-package-input "prrte"))
+ ;; Enable support for the 'Process Management Interface for Exascale'
+ ;; (PMIx) used e.g. by Slurm for the management communication and
+ ;; coordination of MPI processes.
+ (string-append "--with-pmix=" #$(this-package-input "openpmix"))
+ (string-append "--with-prrte=" #$(this-package-input "prrte"))
- ;; Since 5.x, Infiniband support is provided by ucx.
- ;; See https://docs.open-mpi.org/en/main/release-notes/networks.html#miscellaneous-network-notes
- (string-append "--with-ucx=" #$(this-package-input "ucx"))))
+ ;; Since 5.x, Infiniband support is provided by ucx.
+ ;; See https://docs.open-mpi.org/en/main/release-notes/networks.html#miscellaneous-network-notes
+ (string-append "--with-ucx=" #$(this-package-input "ucx")))
- ((#:phases phases)
- #~(modify-phases #$phases
- (delete 'remove-absolute)
- (delete 'scrub-timestamps)))))))
+ #: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* '("oshmem/tools/oshmem_info/param.c"
+ "ompi/tools/ompi_info/param.c")
+ (("_ABSOLUTE") "")))))
+
+ #:disallowed-references (list (canonical-package gcc))))))
(define-public openmpi-c++
(package/inherit openmpi
--
2.46.0
L
L
Ludovic Courtès wrote 12 hours ago
[PATCH 2/2] gnu: prrte: Remove reference to GCC and other build tools.
(address . 73818@debbugs.gnu.org)(name . Ludovic Courtès)(address . ludovic.courtes@inria.fr)
3eed0df2217e206b04619ded2debc38213e312ac.1728996088.git.ludo@gnu.org
From: Ludovic Courtès <ludovic.courtes@inria.fr>

This reduces the closure of ‘prrte’ from 305 MiB to 99 MiB.

* gnu/packages/parallel.scm (prrte)[arguments]: Add #:phases.

Change-Id: Idc26cf5899dd5fa8378535fc8530dbdb3e20608d
---
gnu/packages/parallel.scm | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)

Toggle diff (35 lines)
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index fc96136065..186aebad45 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -711,9 +711,25 @@ (define-public prrte
"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")))))
+ (list #:configure-flags
+ #~(list (string-append "--with-hwloc="
+ (assoc-ref %build-inputs "hwloc"))
+ (string-append "--with-pmix="
+ #$(this-package-input "openpmix")))
+
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'remove-absolute-references
+ (lambda _
+ ;; Remove references to GCC, the shell, etc. (shown by
+ ;; 'prte_info') to reduce the closure size.
+ (substitute* "src/tools/prte_info/param.c"
+ (("_ABSOLUTE")
+ "")
+ (("PRTE_CONFIGURE_CLI")
+ "\"[elided to reduce closure]\"")))))
+
+ #:disallowed-references (list (canonical-package gcc))))
(inputs (list libevent
`(,hwloc "lib")
openpmix))
--
2.46.0
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 73818@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 73818
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch