packages.vasp.intel: fix

This commit is contained in:
陈浩南 2024-09-22 17:18:24 +08:00
parent 3a7668549c
commit 7e38ee602e
3 changed files with 70 additions and 36 deletions

View File

@ -8,10 +8,19 @@ inputs:
# TODO: add more options to correctly configure VASP
config = let inherit (inputs.config.nixos.packages) vasp; in inputs.lib.mkIf (vasp != null)
{
nixos.packages.packages._packages = (with inputs.pkgs.localPackages.vasp; [ intel vtstscripts ])
++ (with inputs.pkgs.localPackages; [ py4vasp vaspkit ])
++ (inputs.lib.optional
(let inherit (inputs.config.nixos.system.nixpkgs) cuda; in cuda.enable && cuda.capabilities != null)
inputs.pkgs.localPackages.vasp.nvidia);
nixos.packages.packages._packages =
(with inputs.pkgs.localPackages.vasp;
[
(intel.override
{
integratedWithSlurm = inputs.config.nixos.services.slurm.enable;
slurm = inputs.config.services.slurm.package;
})
vtstscripts
])
++ (with inputs.pkgs.localPackages; [ py4vasp vaspkit ])
++ (inputs.lib.optional
(let inherit (inputs.config.nixos.system.nixpkgs) cuda; in cuda.enable && cuda.capabilities != null)
inputs.pkgs.localPackages.vasp.nvidia);
};
}

View File

@ -52,6 +52,15 @@ inputs:
buildInputs = prev.buildInputs or [] ++ additionalInputs;
LDFLAGS = prev.LDFLAGS or [] ++ additionalFlags;
nativeBuildInputs = prev.nativeBuildInputs ++ [ inputs.pkgs.wrapGAppsHook ];
postInstall =
''
pushd contribs/pmi2
make install
popd
pushd contribs/pmi
make install
popd
'' + prev.postInstall;
}
);
client.enable = true;

View File

@ -1,35 +1,51 @@
{
stdenv, src, rsync, which, wannier90, hdf5, vtst, mpi, mkl
}: stdenv.mkDerivation
{
name = "vasp-intel";
inherit src;
# patches = [ ../vtst.patch ];
configurePhase =
''
cp ${./makefile.include} makefile.include
chmod +w makefile.include
cp ${../constr_cell_relax.F} src/constr_cell_relax.F
# cp -r ${vtst}/* src
chmod -R +w src
'';
buildInputs = [ hdf5 wannier90 mkl ];
nativeBuildInputs = [ rsync which mpi ];
installPhase =
''
mkdir -p $out/bin
for i in std gam ncl; do cp bin/vasp_$i $out/bin/vasp-$i; done
mkdir $out/src
ln -s ${src} $out/src/vasp
ln -s ${vtst} $out/src/vtst
'';
stdenv, src, writeShellScriptBin, lib,
rsync, which, wannier90, hdf5, vtst, mpi, mkl, libfabric,
integratedWithSlurm ? false, slurm
}:
let vasp = stdenv.mkDerivation
{
name = "vasp-intel";
inherit src;
# patches = [ ../vtst.patch ];
configurePhase =
''
cp ${./makefile.include} makefile.include
chmod +w makefile.include
cp ${../constr_cell_relax.F} src/constr_cell_relax.F
# cp -r ${vtst}/* src
chmod -R +w src
'';
buildInputs = [ hdf5 wannier90 mkl ];
nativeBuildInputs = [ rsync which mpi ];
installPhase =
''
mkdir -p $out/bin
for i in std gam ncl; do cp bin/vasp_$i $out/bin/vasp-$i; done
mkdir $out/src
ln -s ${src} $out/src/vasp
ln -s ${vtst} $out/src/vtst
'';
# NIX_DEBUG = "7";
# NIX_DEBUG = "7";
# enable parallel build
enableParallelBuilding = true;
DEPS = "1";
# enable parallel build
enableParallelBuilding = true;
DEPS = "1";
# vasp directly include headers under ${mkl}/include/fftw
MKLROOT = mkl;
}
# vasp directly include headers under ${mkl}/include/fftw
MKLROOT = mkl;
};
in writeShellScriptBin "vasp-intel"
''
# not sure why mpi could not find libfabric.so
export LD_LIBRARY_PATH=${libfabric}/lib''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
# intel mpi need this to talk with slurm
${lib.optionalString integratedWithSlurm "export I_MPI_MPI_LIBRARY=${slurm}/lib/libpmi2.so"}
# add vasp and intel mpi in PATH
export PATH=${vasp}/bin:${mpi}/bin''${PATH:+:$PATH}
exec "$@"
''