(define-module (glicid packages mpi) #:use-module (srfi srfi-1) ; lset-difference #:use-module (guix packages) #:use-module (guix download) #:use-module ((gnu packages mpi) #:prefix gnu:) #:use-module (glicid utils) #:use-module (guix utils) #:use-module (glicid packages parallel) #:use-module (gnu packages parallel) #:use-module (guix gexp) #:use-module (gnu packages)) ;(define-public openmpi-glicid-internal-pmix ; (package/inherit gnu:openmpi-4 ; (name "openmpi-glicid") ; (inputs (modify-inputs (package-inputs gnu:openmpi-4) ; (append openpmix) ;; because we use pmix4 now, openpmi-4 defaults to internal pmix3 ; (replace "slurm" slurm-glicid))) ; ; ) ;) (define openmpi-upstream-4.1.8 (package (inherit gnu:openmpi-4) (name "openmpi-upstream-4") (version "4.1.8") (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 "1a8jkxqxbkyx9np2vyjrhgckd0zdzkx1286c20kw079a2ginhvs6")) (patches (search-patches "openmpi-mtl-priorities.patch")))))) (define openmpi-upstream-unpatched-4.1.8 (package (inherit gnu:openmpi-4) (name "openmpi-upstream") (version "4.1.8") (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 "1a8jkxqxbkyx9np2vyjrhgckd0zdzkx1286c20kw079a2ginhvs6")))))) (define openmpi-4-latest (latest-version openmpi-upstream-4.1.8 gnu:openmpi-4)) (define-public openmpi-glicid (package/inherit openmpi-4-latest (name "openmpi-glicid") (inputs (modify-inputs (package-inputs openmpi-4-latest) (replace "slurm" slurm-glicid))) )) (define-public openmpi-unpatched-glicid (package/inherit openmpi-upstream-unpatched-4.1.8 (name "openmpi-glicid-unpatched") (inputs (modify-inputs (package-inputs openmpi-upstream-unpatched-4.1.8) (replace "slurm" slurm-glicid))) )) (define-public openmpi-glicid-pmixv4 (package/inherit openmpi-glicid (name "openmpi-glicid-pmixv4") (arguments (substitute-keyword-arguments (package-arguments openmpi-glicid) ((#:configure-flags flags) #~(append #$flags (list ;original flags has --with-pmix=internal, we should remove it but last --with-pmix is the one taken into account. (string-append "--with-pmix=" #$(this-package-input "openpmix")) (string-append "--with-prrte=" #$(this-package-input "prrte"))) ;#$flags )))) (inputs (modify-inputs (package-inputs openmpi-glicid) (append openpmix) ; because we use pmix4 now, openpmi-4 defaults to internal pmix3 (append prrte) ;idem )) )) (define-public openmpi-unpatched-glicid-pmixv4 (package/inherit openmpi-unpatched-glicid (name "openmpi-unpatched-glicid-pmixv4") (arguments (substitute-keyword-arguments (package-arguments openmpi-unpatched-glicid) ((#:configure-flags flags) #~(append ; (`lset-difference `eq? #$flags (list "--with-pmix=internal")) ; (delete "--with-pmix=internal" (delete "--enable-openib-control-hdr-padding" #$flags)) ; (lset-difference eq? (list "-with-pmix=internal" "--enable-openib-control-hdr-padding") #$flags) ; #$flags (delete "--with-pmix=internal" (delete "--enable-openib-dynamic-sl" (delete "--enable-openib-udcm" (delete "--enable-openib-rdmacm" (delete "--enable-openib-rdmacm-ibaddr" (delete "--enable-openib-control-hdr-padding" #$flags)))))) (list ;original flags has --with-pmix=internal, we should remove it but last --with-pmix is the one taken into account. (string-append "--with-pmix=" #$(this-package-input "openpmix"))) )))) (inputs (modify-inputs (package-inputs openmpi-unpatched-glicid) (append openpmix) ; because we use pmix4 now, openpmi-4 defaults to internal pmix3 (append prrte) ;idem )) )) openmpi-unpatched-glicid-pmixv4