From 19e71dfa871977759b6a3eff7479e4a07e77038b Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Thu, 28 Oct 2021 13:50:39 +0200 Subject: [PATCH] gromacs: 2020.4 -> 2021.3, cuda, mpi cleanups, performance tunings gromacs: dont build double cuda version gromacs: propagate mpi --- .../molecular-dynamics/gromacs/default.nix | 52 +++++++++++-------- pkgs/top-level/all-packages.nix | 23 +++++--- 2 files changed, 46 insertions(+), 29 deletions(-) diff --git a/pkgs/applications/science/molecular-dynamics/gromacs/default.nix b/pkgs/applications/science/molecular-dynamics/gromacs/default.nix index bdec2ccc669f..b0feba4de3d1 100644 --- a/pkgs/applications/science/molecular-dynamics/gromacs/default.nix +++ b/pkgs/applications/science/molecular-dynamics/gromacs/default.nix @@ -1,13 +1,8 @@ -{ lib, stdenv -, fetchurl -, cmake -, hwloc -, fftw -, perl -, singlePrec ? true -, mpiEnabled ? false -, mpi -, cpuAcceleration ? null +{ lib, stdenv, fetchurl, cmake, hwloc, fftw, perl, blas, lapack, + singlePrec ? true, + mpi ? null, + cudatoolkit ? null, + cpuAcceleration ? null }: let @@ -24,20 +19,32 @@ let in stdenv.mkDerivation rec { pname = "gromacs"; - version = "2020.4"; + version = "2021.3"; src = fetchurl { url = "ftp://ftp.gromacs.org/pub/gromacs/gromacs-${version}.tar.gz"; - sha256 = "1rplvgna60nqyb8nspaz3bfkwb044kv3zxdaa5whql5m441nj6am"; + sha256 = "4QmFbsREdo373kHzBZ4xI6vbj+Vsozsag/Me1FdaHMY="; }; nativeBuildInputs = [ cmake ]; - buildInputs = [ fftw perl hwloc ] - ++ (lib.optionals mpiEnabled [ mpi ]); + + buildInputs = [ + fftw + perl + hwloc + blas + lapack + ] ++ lib.lists.optional (mpi != null) mpi + ++ lib.lists.optional (cudatoolkit != null) cudatoolkit + ; + + propagatedBuildInputs = lib.lists.optional (mpi != null) mpi; + propagatedUserEnvPkgs = lib.lists.optional (mpi != null) mpi; cmakeFlags = [ "-DGMX_SIMD:STRING=${SIMD cpuAcceleration}" "-DGMX_OPENMP:BOOL=TRUE" + "-DBUILD_SHARED_LIBS=ON" ] ++ ( if singlePrec then [ "-DGMX_DOUBLE=OFF" @@ -46,13 +53,15 @@ in stdenv.mkDerivation rec { "-DGMX_DEFAULT_SUFFIX=OFF" ] ) ++ ( - if mpiEnabled then [ - "-DGMX_MPI:BOOL=TRUE" - "-DGMX_THREAD_MPI:BOOL=FALSE" - ] else [ - "-DGMX_MPI:BOOL=FALSE" - ] - ); + if (mpi != null) + then [ + "-DGMX_MPI:BOOL=TRUE" + "-DGMX_THREAD_MPI:BOOL=FALSE" + ] + else [ + "-DGMX_MPI:BOOL=FALSE" + ] + ) ++ lib.lists.optional (cudatoolkit != null) "-DGMX_GPU=CUDA"; meta = with lib; { homepage = "http://www.gromacs.org"; @@ -78,5 +87,6 @@ in stdenv.mkDerivation rec { See: http://www.gromacs.org/About_Gromacs for details. ''; platforms = platforms.unix; + maintainers = with maintainers; [ sheepforce markuskowa ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 52c23d8e4c44..9b889bf2b385 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -31197,30 +31197,37 @@ with pkgs; gromacs = callPackage ../applications/science/molecular-dynamics/gromacs { singlePrec = true; - mpiEnabled = false; + mpi = null; fftw = fftwSinglePrec; - cmake = cmakeCurses; + cudatoolkit = null; }; gromacsMpi = lowPrio (gromacs.override { singlePrec = true; - mpiEnabled = true; + mpi = mpi; fftw = fftwSinglePrec; - cmake = cmakeCurses; + cudatoolkit = null; }); gromacsDouble = lowPrio (gromacs.override { singlePrec = false; - mpiEnabled = false; + mpi = null; fftw = fftw; - cmake = cmakeCurses; + cudatoolkit = null; }); gromacsDoubleMpi = lowPrio (gromacs.override { singlePrec = false; - mpiEnabled = true; + mpi = mpi; fftw = fftw; - cmake = cmakeCurses; + cudatoolkit = null; + }); + + gromacsCudaMpi = lowPrio (gromacs.override { + singlePrec = true; + mpi = mpi; + fftw = fftwSinglePrec; + cudatoolkit = cudatoolkit; }); zegrapher = libsForQt5.callPackage ../applications/science/math/zegrapher { };