Merge pull request #274804 from SomeoneSerge/feat/mpich-pmix

mpich: optional pmix support
This commit is contained in:
markuskowa
2024-01-16 12:49:11 +01:00
committed by GitHub
3 changed files with 21 additions and 4 deletions

View File

@@ -193,5 +193,7 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
replaces the need for the `extraPackages` option, this option will be replaces the need for the `extraPackages` option, this option will be
deprecated in future releases. deprecated in future releases.
- The `mpich` package expression now requires `withPm` to be a list, e.g. `"hydra:gforker"` becomes `[ "hydra" "gforker" ]`.
- QtMultimedia has changed its default backend to `QT_MEDIA_BACKEND=ffmpeg` (previously `gstreamer` on Linux or `darwin` on MacOS). - QtMultimedia has changed its default backend to `QT_MEDIA_BACKEND=ffmpeg` (previously `gstreamer` on Linux or `darwin` on MacOS).
The previous native backends remain available but are now minimally maintained. Refer to [upstream documentation](https://doc.qt.io/qt-6/qtmultimedia-index.html#ffmpeg-as-the-default-backend) for further details about each platform. The previous native backends remain available but are now minimally maintained. Refer to [upstream documentation](https://doc.qt.io/qt-6/qtmultimedia-index.html#ffmpeg-as-the-default-backend) for further details about each platform.

View File

@@ -3,10 +3,19 @@
# either libfabric or ucx work for ch4backend on linux. On darwin, neither of # either libfabric or ucx work for ch4backend on linux. On darwin, neither of
# these libraries currently build so this argument is ignored on Darwin. # these libraries currently build so this argument is ignored on Darwin.
, ch4backend , ch4backend
# Process manager to build # Process managers to build (`--with-pm`),
, withPm ? "hydra:gforker" # cf. https://github.com/pmodels/mpich/blob/b80a6d7c24defe7cdf6c57c52430f8075a0a41d6/README.vin#L562-L586
, withPm ? [ "hydra" "gforker" ]
, pmix
# PMIX support is likely incompatible with process managers (`--with-pm`)
# https://github.com/NixOS/nixpkgs/pull/274804#discussion_r1432601476
, pmixSupport ? false
} : } :
let
withPmStr = if withPm != [ ] then builtins.concatStringsSep ":" withPm else "no";
in
assert (ch4backend.pname == "ucx" || ch4backend.pname == "libfabric"); assert (ch4backend.pname == "ucx" || ch4backend.pname == "libfabric");
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@@ -22,11 +31,12 @@ stdenv.mkDerivation rec {
configureFlags = [ configureFlags = [
"--enable-shared" "--enable-shared"
"--enable-sharedlib" "--with-pm=${withPmStr}"
"--with-pm=${withPm}"
] ++ lib.optionals (lib.versionAtLeast gfortran.version "10") [ ] ++ lib.optionals (lib.versionAtLeast gfortran.version "10") [
"FFLAGS=-fallow-argument-mismatch" # https://github.com/pmodels/mpich/issues/4300 "FFLAGS=-fallow-argument-mismatch" # https://github.com/pmodels/mpich/issues/4300
"FCFLAGS=-fallow-argument-mismatch" "FCFLAGS=-fallow-argument-mismatch"
] ++ lib.optionals pmixSupport [
"--with-pmix=${lib.getDev pmix}"
]; ];
enableParallelBuilding = true; enableParallelBuilding = true;
@@ -45,6 +55,9 @@ stdenv.mkDerivation rec {
''; '';
meta = with lib; { meta = with lib; {
# As far as we know, --with-pmix silently disables all of `--with-pm`
broken = pmixSupport && withPm != [ ];
description = "Implementation of the Message Passing Interface (MPI) standard"; description = "Implementation of the Message Passing Interface (MPI) standard";
longDescription = '' longDescription = ''

View File

@@ -24048,6 +24048,8 @@ with pkgs;
ch4backend = libfabric; ch4backend = libfabric;
}; };
mpich-pmix = mpich.override { pmixSupport = true; withPm = [ ]; };
mstpd = callPackage ../os-specific/linux/mstpd { }; mstpd = callPackage ../os-specific/linux/mstpd { };
mtdev = callPackage ../development/libraries/mtdev { }; mtdev = callPackage ../development/libraries/mtdev { };