diff --git a/local/pkgs/vasp/intel/default.nix b/local/pkgs/vasp/intel/default.nix index 1ef0c45c..9f0c3bb3 100644 --- a/local/pkgs/vasp/intel/default.nix +++ b/local/pkgs/vasp/intel/default.nix @@ -1,7 +1,7 @@ { buildFHSEnv, writeScript, stdenvNoCC, requireFile, substituteAll, symlinkJoin, writeTextDir, config, oneapiArch ? config.oneapiArch or "SSE3", additionalCommands ? "", - oneapi, gcc, glibc, lmod, rsync, which, wannier90, binutils, hdf5, slurm, zlib + oneapi, gcc, glibc, lmod, rsync, which, wannier90, binutils, hdf5, zlib }: let sources = import ../source.nix { inherit requireFile; }; @@ -71,17 +71,17 @@ let fi export I_MPI_PIN_PROCESSOR_LIST - # if I_MPI_PMI_LIBRARY is not set and SLURM_JOB_ID is set, set it to libpmi2.so - if [ -z "''${I_MPI_PMI_LIBRARY-}" ] && [ -n "''${SLURM_JOB_ID-}" ]; then - I_MPI_PMI_LIBRARY=${slurm}/lib/libpmi2.so - fi - export I_MPI_PMI_LIBRARY - # set I_MPI_PIN I_MPI_PIN_DOMAIN I_MPI_DEBUG if not set export I_MPI_PIN=''${I_MPI_PIN-yes} export I_MPI_PIN_DOMAIN=''${I_MPI_PIN_DOMAIN-omp} export I_MPI_DEBUG=''${I_MPI_DEBUG-4} + # do not respect slurm allocation + export I_MPI_JOB_RESPECT_PROCESS_PLACEMENT=no + + # fork to bootstrap, do not use srun, causing it could not find proper ld + I_MPI_HYDRA_BOOTSTRAP=fork + ${additionalCommands} ${ @@ -89,8 +89,7 @@ let else '' if [ -n "''${SLURM_JOB_ID-}" ]; then - # srun should be in PATH - exec srun --mpi=pmi2 ${vasp version}/bin/vasp-${variant} + exec mpirun -n $SLURM_NTASKS ${vasp version}/bin/vasp-${variant} else exec mpirun -n 1 ${vasp version}/bin/vasp-${variant} fi diff --git a/modules/packages/vasp.nix b/modules/packages/vasp.nix index 7ea12ada..88cf763d 100644 --- a/modules/packages/vasp.nix +++ b/modules/packages/vasp.nix @@ -2,15 +2,8 @@ inputs: { config = inputs.lib.mkIf (builtins.elem "workstation" inputs.config.nixos.packages._packageSets) { - nixos.packages._packages = - ( - (builtins.map - (version: (inputs.pkgs.localPackages.vasp.intel.override - { slurm = inputs.config.services.slurm.package; }).${version}) - [ "6.3.1" "6.4.0" ]) - ++ (builtins.concatLists (builtins.map - (compiler: builtins.map (version: inputs.pkgs.localPackages.vasp.${compiler}.${version}) [ "6.3.1" "6.4.0" ]) - [ "gnu" "gnu-mkl" "nvidia" "amd" ])) - ); + nixos.packages._packages = builtins.concatLists (builtins.map + (compiler: builtins.map (version: inputs.pkgs.localPackages.vasp.${compiler}.${version}) [ "6.3.1" "6.4.0" ]) + [ "amd" "gnu" "gnu-mkl" "intel" "nvidia" ]); }; } diff --git a/modules/services/slurm.nix b/modules/services/slurm.nix index fd08c5b6..f889acc1 100644 --- a/modules/services/slurm.nix +++ b/modules/services/slurm.nix @@ -25,12 +25,6 @@ inputs: buildInputs = prev.buildInputs ++ [ cuda_nvml_dev ]; LDFLAGS = [ "-L${cuda_nvml_dev}/lib/stubs" ]; nativeBuildInputs = prev.nativeBuildInputs ++ [ inputs.pkgs.wrapGAppsHook ]; - postInstall = - '' - pushd contribs/pmi2 - make install - popd - '' + prev.postInstall; }); clusterName = inputs.config.nixos.system.networking.hostname; dbdserver =