diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/science/chemistry/cp2k/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/science/chemistry/cp2k/default.nix | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/nixpkgs/pkgs/applications/science/chemistry/cp2k/default.nix b/nixpkgs/pkgs/applications/science/chemistry/cp2k/default.nix index 16eabbcbcaa1..42bfc6ffe32e 100644 --- a/nixpkgs/pkgs/applications/science/chemistry/cp2k/default.nix +++ b/nixpkgs/pkgs/applications/science/chemistry/cp2k/default.nix @@ -38,13 +38,11 @@ then "rocm" else "none" ) -# gpuVersion needs to be set for both CUDA as well as ROCM hardware. -# gpuArch is only required for the ROCM stack. # Change to a value suitable for your target GPU. # For AMD values see https://github.com/cp2k/cp2k/blob/master/INSTALL.md#2v-rocmhip-support-for-amd-gpu # and for Nvidia see https://github.com/cp2k/cp2k/blob/master/INSTALL.md#2i-cuda-optional-improved-performance-on-gpu-systems -, gpuVersion ? "Mi100" -, gpuArch ? "gfx908" +, gpuVersion ? ( if gpuBackend == "cuda" then "A100" else "Mi100" ) +, gpuArch ? ( if gpuBackend == "cuda" then "sm_80" else "gfx908" ) }: assert builtins.elem gpuBackend [ "none" "cuda" "rocm" ]; @@ -56,17 +54,19 @@ let in stdenv.mkDerivation rec { pname = "cp2k"; - version = "2023.2"; + version = "2024.1"; src = fetchFromGitHub { owner = "cp2k"; repo = "cp2k"; rev = "v${version}"; - hash = "sha256-1TJorIjajWFO7i9vqSBDTAIukBdyvxbr5dargt4QB8M="; + hash = "sha256-6PB6wjdTOa55dXV7QIsjxI77hhc95WFEjNePfupBUJQ="; fetchSubmodules = true; }; - nativeBuildInputs = [ python3 which openssh makeWrapper pkg-config ]; + nativeBuildInputs = [ python3 which openssh makeWrapper pkg-config ] + ++ lib.optional (gpuBackend == "cuda") cudaPackages.cuda_nvcc; + buildInputs = [ gfortran fftw @@ -88,8 +88,11 @@ stdenv.mkDerivation rec { libvdwxc ] ++ lib.optional enableElpa elpa - ++ lib.optional (gpuBackend == "cuda") cudaPackages.cudatoolkit - ++ lib.optional (gpuBackend == "rocm") [ + ++ lib.optionals (gpuBackend == "cuda") [ + cudaPackages.cuda_cudart + cudaPackages.libcublas + cudaPackages.cuda_nvrtc + ] ++ lib.optionals (gpuBackend == "rocm") [ rocmPackages.clr rocmPackages.rocm-core rocmPackages.hipblas @@ -126,7 +129,7 @@ stdenv.mkDerivation rec { AR = ar -r ${lib.strings.optionalString (gpuBackend == "cuda") '' OFFLOAD_CC = nvcc - OFFLOAD_FLAGS = -O3 -g -w --std=c++11 + OFFLOAD_FLAGS = -O3 -g -w --std=c++11 -arch ${gpuArch} OFFLOAD_TARGET = cuda GPUVER = ${gpuVersion} CXX = mpicxx @@ -144,7 +147,7 @@ stdenv.mkDerivation rec { -D__MPI_VERSION=3 -D__F2008 -D__LIBXSMM -D__SPGLIB \ -D__MAX_CONTR=4 -D__LIBVORI ${lib.optionalString enableElpa "-D__ELPA"} \ -D__PLUMED2 -D__HDF5 -D__GSL -D__SIRIUS -D__LIBVDWXC -D__SPFFT -D__SPLA \ - ${lib.strings.optionalString (gpuBackend == "cuda") "-D__OFFLOAD_CUDA -D__DBCSR_ACC"} \ + ${lib.strings.optionalString (gpuBackend == "cuda") "-D__OFFLOAD_CUDA -D__ACC -D__DBCSR_ACC -D__NO_OFFLOAD_PW"} \ ${lib.strings.optionalString (gpuBackend == "rocm") "-D__OFFLOAD_HIP -D__DBCSR_ACC -D__NO_OFFLOAD_PW"} CFLAGS = -fopenmp -I${lib.getDev hdf5-fortran}/include -I${lib.getDev gsl}/include FCFLAGS = \$(DFLAGS) -O2 -ffree-form -ffree-line-length-none \ @@ -154,6 +157,7 @@ stdenv.mkDerivation rec { -I${lib.getDev libint}/include ${lib.optionalString enableElpa "$(pkg-config --variable=fcflags elpa)"} \ -I${lib.getDev sirius}/include/sirius \ -I${lib.getDev libxc}/include -I${lib.getDev libxsmm}/include \ + -I${lib.getDev hdf5-fortran}/include \ -fallow-argument-mismatch LIBS = -lfftw3 -lfftw3_threads \ -lscalapack -lblas -llapack \ @@ -163,7 +167,11 @@ stdenv.mkDerivation rec { -fopenmp ${lib.optionalString enableElpa "$(pkg-config --libs elpa)"} \ -lz -ldl ${lib.optionalString (mpi.pname == "openmpi") "$(mpicxx --showme:link)"} \ -lplumed -lhdf5_fortran -lhdf5_hl -lhdf5 -lgsl -lsirius -lspla -lspfft -lvdwxc \ - ${lib.strings.optionalString (gpuBackend == "cuda") "-lcudart -lnvrtc -lcuda -lcublas"} \ + ${lib.strings.optionalString (gpuBackend == "cuda") '' + -L${cudaPackages.cuda_cudart}/lib/stubs/ \ + -lcudart -lnvrtc -lcuda -lcublas + '' + } \ ${lib.strings.optionalString (gpuBackend == "rocm") "-lamdhip64 -lhipfft -lhipblas -lrocblas"} LDFLAGS = \$(FCFLAGS) \$(LIBS) include ${plumed}/lib/plumed/src/lib/Plumed.inc |