diff --git a/m/common/main.nix b/m/common/main.nix index ba50376..a5bba65 100644 --- a/m/common/main.nix +++ b/m/common/main.nix @@ -9,6 +9,8 @@ ./slurm.nix ./ssh.nix ./users.nix + + ../../pkgs/mpi.nix ]; nixpkgs.overlays = [ bscpkgs.bscOverlay ]; diff --git a/pkgs/mpi.nix b/pkgs/mpi.nix new file mode 100644 index 0000000..3b4141f --- /dev/null +++ b/pkgs/mpi.nix @@ -0,0 +1,28 @@ +let + overlay = final: prev: + { + mpich = with final; prev.mpich.overrideAttrs (old: { + buildInput = old.buildInputs ++ [ + libfabric + pmix + ]; + configureFlags = [ + "--enable-shared" + "--enable-sharedlib" + "--with-pm=no" + "--with-device=ch4:ofi" + "--with-pmi=pmix" + "--with-pmix=${final.pmix}" + "--with-libfabric=${final.libfabric}" + "--enable-g=log" + ] ++ lib.optionals (lib.versionAtLeast gfortran.version "10") [ + "FFLAGS=-fallow-argument-mismatch" # https://github.com/pmodels/mpich/issues/4300 + "FCFLAGS=-fallow-argument-mismatch" + ]; + }); + }; +in + +{ + nixpkgs.overlays = [ overlay ]; +}