Loading pkgs/applications/science/molecular-dynamics/gromacs/default.nix +96 −69 Original line number Diff line number Diff line { lib , stdenv , fetchurl , cmake , hwloc , fftw , perl , blas , lapack , llvmPackages , mpi , cudaPackages , plumed , singlePrec ? true , config , enableCuda ? config.cudaSupport , enableMpi ? false , enablePlumed ? false , cpuAcceleration ? null { lib, stdenv, fetchurl, cmake, hwloc, fftw, perl, blas, lapack, llvmPackages, mpi, cudaPackages, plumed, singlePrec ? true, config, enableCuda ? config.cudaSupport, enableMpi ? false, enablePlumed ? false, cpuAcceleration ? null, }: # CUDA is only implemented for single precission assert enableCuda -> singlePrec; Loading @@ -30,11 +30,19 @@ let # The possible values are defined in CMakeLists.txt: # AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256 # AVX2_128 AVX_512 AVX_512_KNL MIC ARM_NEON ARM_NEON_ASIMD SIMD = x: if (cpuAcceleration != null) then x else if stdenv.hostPlatform.system == "i686-linux" then "SSE2" else if stdenv.hostPlatform.system == "x86_64-linux" then "SSE4.1" else if stdenv.hostPlatform.system == "x86_64-darwin" then "SSE4.1" else if stdenv.hostPlatform.system == "aarch64-linux" then "ARM_NEON_ASIMD" else SIMD = x: if (cpuAcceleration != null) then x else if stdenv.hostPlatform.system == "i686-linux" then "SSE2" else if stdenv.hostPlatform.system == "x86_64-linux" then "SSE4.1" else if stdenv.hostPlatform.system == "x86_64-darwin" then "SSE4.1" else if stdenv.hostPlatform.system == "aarch64-linux" then "ARM_NEON_ASIMD" else "None"; source = Loading @@ -49,7 +57,8 @@ let hash = "sha256-onrTWmRilbvsEpq+aE2dA9Hi4L12sNYl6QVXRqrvroI="; }; in stdenv.mkDerivation rec { in stdenv.mkDerivation rec { pname = "gromacs"; version = source.version; Loading @@ -64,52 +73,67 @@ in stdenv.mkDerivation rec { plumed patch -p -e gromacs-${source.version} ''; outputs = [ "out" "dev" "man" ]; outputs = [ "out" "dev" "man" ]; nativeBuildInputs = [ cmake ] ++ lib.optional enablePlumed plumed ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ]; buildInputs = [ buildInputs = [ fftw perl hwloc blas lapack ] ++ lib.optional enableMpi mpi ] ++ lib.optional enableMpi mpi ++ lib.optionals enableCuda [ cudaPackages.cuda_cccl cudaPackages.cuda_cudart cudaPackages.libcufft cudaPackages.cuda_profiler_api ] ++ lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp; ] ++ lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp; propagatedBuildInputs = lib.optional enableMpi mpi; propagatedUserEnvPkgs = lib.optional enableMpi mpi; cmakeFlags = [ cmakeFlags = [ (lib.cmakeBool "GMX_HWLOC" true) "-DGMX_SIMD:STRING=${SIMD cpuAcceleration}" "-DGMX_OPENMP:BOOL=TRUE" "-DBUILD_SHARED_LIBS=ON" ] ++ ( if singlePrec then [ ] ++ ( if singlePrec then [ "-DGMX_DOUBLE=OFF" ] else [ ] else [ "-DGMX_DOUBLE=ON" "-DGMX_DEFAULT_SUFFIX=OFF" ] ) ++ ( if enableMpi then [ ) ++ ( if enableMpi then [ "-DGMX_MPI:BOOL=TRUE" "-DGMX_THREAD_MPI:BOOL=FALSE" ] else [ else [ "-DGMX_MPI:BOOL=FALSE" ] ) ++ lib.optionals enableCuda [ ) ++ lib.optionals enableCuda [ "-DGMX_GPU=CUDA" (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cmakeCudaArchitecturesString) Loading Loading @@ -145,6 +169,9 @@ in stdenv.mkDerivation rec { See: https://www.gromacs.org/about.html for details. ''; platforms = platforms.unix; maintainers = with maintainers; [ sheepforce markuskowa ]; maintainers = with maintainers; [ sheepforce markuskowa ]; }; } Loading
pkgs/applications/science/molecular-dynamics/gromacs/default.nix +96 −69 Original line number Diff line number Diff line { lib , stdenv , fetchurl , cmake , hwloc , fftw , perl , blas , lapack , llvmPackages , mpi , cudaPackages , plumed , singlePrec ? true , config , enableCuda ? config.cudaSupport , enableMpi ? false , enablePlumed ? false , cpuAcceleration ? null { lib, stdenv, fetchurl, cmake, hwloc, fftw, perl, blas, lapack, llvmPackages, mpi, cudaPackages, plumed, singlePrec ? true, config, enableCuda ? config.cudaSupport, enableMpi ? false, enablePlumed ? false, cpuAcceleration ? null, }: # CUDA is only implemented for single precission assert enableCuda -> singlePrec; Loading @@ -30,11 +30,19 @@ let # The possible values are defined in CMakeLists.txt: # AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256 # AVX2_128 AVX_512 AVX_512_KNL MIC ARM_NEON ARM_NEON_ASIMD SIMD = x: if (cpuAcceleration != null) then x else if stdenv.hostPlatform.system == "i686-linux" then "SSE2" else if stdenv.hostPlatform.system == "x86_64-linux" then "SSE4.1" else if stdenv.hostPlatform.system == "x86_64-darwin" then "SSE4.1" else if stdenv.hostPlatform.system == "aarch64-linux" then "ARM_NEON_ASIMD" else SIMD = x: if (cpuAcceleration != null) then x else if stdenv.hostPlatform.system == "i686-linux" then "SSE2" else if stdenv.hostPlatform.system == "x86_64-linux" then "SSE4.1" else if stdenv.hostPlatform.system == "x86_64-darwin" then "SSE4.1" else if stdenv.hostPlatform.system == "aarch64-linux" then "ARM_NEON_ASIMD" else "None"; source = Loading @@ -49,7 +57,8 @@ let hash = "sha256-onrTWmRilbvsEpq+aE2dA9Hi4L12sNYl6QVXRqrvroI="; }; in stdenv.mkDerivation rec { in stdenv.mkDerivation rec { pname = "gromacs"; version = source.version; Loading @@ -64,52 +73,67 @@ in stdenv.mkDerivation rec { plumed patch -p -e gromacs-${source.version} ''; outputs = [ "out" "dev" "man" ]; outputs = [ "out" "dev" "man" ]; nativeBuildInputs = [ cmake ] ++ lib.optional enablePlumed plumed ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ]; buildInputs = [ buildInputs = [ fftw perl hwloc blas lapack ] ++ lib.optional enableMpi mpi ] ++ lib.optional enableMpi mpi ++ lib.optionals enableCuda [ cudaPackages.cuda_cccl cudaPackages.cuda_cudart cudaPackages.libcufft cudaPackages.cuda_profiler_api ] ++ lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp; ] ++ lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp; propagatedBuildInputs = lib.optional enableMpi mpi; propagatedUserEnvPkgs = lib.optional enableMpi mpi; cmakeFlags = [ cmakeFlags = [ (lib.cmakeBool "GMX_HWLOC" true) "-DGMX_SIMD:STRING=${SIMD cpuAcceleration}" "-DGMX_OPENMP:BOOL=TRUE" "-DBUILD_SHARED_LIBS=ON" ] ++ ( if singlePrec then [ ] ++ ( if singlePrec then [ "-DGMX_DOUBLE=OFF" ] else [ ] else [ "-DGMX_DOUBLE=ON" "-DGMX_DEFAULT_SUFFIX=OFF" ] ) ++ ( if enableMpi then [ ) ++ ( if enableMpi then [ "-DGMX_MPI:BOOL=TRUE" "-DGMX_THREAD_MPI:BOOL=FALSE" ] else [ else [ "-DGMX_MPI:BOOL=FALSE" ] ) ++ lib.optionals enableCuda [ ) ++ lib.optionals enableCuda [ "-DGMX_GPU=CUDA" (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cmakeCudaArchitecturesString) Loading Loading @@ -145,6 +169,9 @@ in stdenv.mkDerivation rec { See: https://www.gromacs.org/about.html for details. ''; platforms = platforms.unix; maintainers = with maintainers; [ sheepforce markuskowa ]; maintainers = with maintainers; [ sheepforce markuskowa ]; }; }