Commit 8bad41cc authored by Markus Kowalewski's avatar Markus Kowalewski
Browse files

gromacs: apply nixfmt

parent d2239872
Loading
Loading
Loading
Loading
+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;

@@ -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 =
@@ -49,7 +57,8 @@ let
        hash = "sha256-onrTWmRilbvsEpq+aE2dA9Hi4L12sNYl6QVXRqrvroI=";
      };

in stdenv.mkDerivation rec {
in
stdenv.mkDerivation rec {
  pname = "gromacs";
  version = source.version;

@@ -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)

@@ -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
    ];
  };
}