diff options
author | Alyssa Ross <hi@alyssa.is> | 2022-01-03 23:55:00 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2022-02-19 11:03:39 +0000 |
commit | f4cf97a04cd5d0b86aa46baec9fb228a8f671c03 (patch) | |
tree | 28192415ff39a661d0001563bf81cc93fa25d16d /nixpkgs/pkgs/development/libraries/elpa/default.nix | |
parent | f8422837c9bde058e8f2de37702e7e94b2226040 (diff) | |
parent | 18c84ea816348e2a098390101b92d1e39a9dbd45 (diff) | |
download | nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.gz nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.bz2 nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.lz nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.xz nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.tar.zst nixlib-f4cf97a04cd5d0b86aa46baec9fb228a8f671c03.zip |
Merge commit '18c84ea816348e2a098390101b92d1e39a9dbd45'
Conflicts: nixpkgs/nixos/modules/misc/documentation.nix nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix nixpkgs/pkgs/applications/window-managers/sway/default.nix nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix nixpkgs/pkgs/development/go-modules/generic/default.nix nixpkgs/pkgs/development/interpreters/ruby/default.nix nixpkgs/pkgs/development/interpreters/ruby/patchsets.nix nixpkgs/pkgs/development/libraries/boehm-gc/7.6.6.nix nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix nixpkgs/pkgs/servers/mail/mailman/web.nix nixpkgs/pkgs/top-level/aliases.nix nixpkgs/pkgs/top-level/all-packages.nix nixpkgs/pkgs/top-level/impure.nix
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/elpa/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/elpa/default.nix | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/elpa/default.nix b/nixpkgs/pkgs/development/libraries/elpa/default.nix new file mode 100644 index 000000000000..3bb59ce9ca6a --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/elpa/default.nix @@ -0,0 +1,95 @@ +{ lib, stdenv, fetchurl, autoreconfHook, gfortran, perl +, mpi, blas, lapack, scalapack, openssh +# CPU optimizations +, avxSupport ? stdenv.hostPlatform.avxSupport +, avx2Support ? stdenv.hostPlatform.avx2Support +, avx512Support ? stdenv.hostPlatform.avx512Support +# Enable NIVIA GPU support +# Note, that this needs to be built on a system with a GPU +# present for the tests to succeed. +, enableCuda ? false +# type of GPU architecture +, nvidiaArch ? "sm_60" +, cudatoolkit +} : + +# The standard Scalapack has no iLP64 interface +assert (!blas.isILP64) && (!lapack.isILP64); + +stdenv.mkDerivation rec { + pname = "elpa"; + version = "2021.11.001"; + + src = fetchurl { + url = "https://elpa.mpcdf.mpg.de/software/tarball-archive/Releases/${version}/elpa-${version}.tar.gz"; + sha256 = "0bw0nwzwvjfmijfwznmrghypd3q237a3h5g5fcdncilrqnk1sdpv"; + }; + + patches = [ + # Use a plain name for the pkg-config file + ./pkg-config.patch + ]; + + postPatch = '' + patchShebangs ./fdep/fortran_dependencies.pl + patchShebangs ./test-driver + + # Fix the test script generator + substituteInPlace Makefile.am --replace '#!/bin/bash' '#!${stdenv.shell}' + ''; + + nativeBuildInputs = [ autoreconfHook perl openssh ]; + + buildInputs = [ mpi blas lapack scalapack ] + ++ lib.optional enableCuda cudatoolkit; + + preConfigure = '' + export FC="mpifort" + export CC="mpicc" + + # These need to be set for configure to succeed + export FCFLAGS="${lib.optionalString stdenv.hostPlatform.isx86_64 "-msse3 " + + lib.optionalString avxSupport "-mavx " + + lib.optionalString avx2Support "-mavx2 -mfma " + + lib.optionalString avx512Support "-mavx512"}" + + export CFLAGS=$FCFLAGS + ''; + + configureFlags = [ + "--with-mpi" + "--enable-openmp" + "--without-threading-support-check-during-build" + ] ++ lib.optional (!avxSupport) "--disable-avx" + ++ lib.optional (!avx2Support) "--disable-avx2" + ++ lib.optional (!avx512Support) "--disable-avx512" + ++ lib.optional (!stdenv.hostPlatform.isx86_64) "--disable-sse" + ++ lib.optional stdenv.hostPlatform.isx86_64 "--enable-sse-assembly" + ++ lib.optionals enableCuda [ "--enable-nvidia-gpu" "--with-NVIDIA-GPU-compute-capability=${nvidiaArch}" ]; + + doCheck = true; + + preCheck = '' + #patchShebangs ./ + + # make sure the test starts even if we have less than 4 cores + export OMPI_MCA_rmaps_base_oversubscribe=1 + + # Fix to make mpich run in a sandbox + export HYDRA_IFACE=lo + + # Run dual threaded + export OMP_NUM_THREADS=2 + + # Reduce test problem sizes + export TEST_FLAGS="1500 50 16" + ''; + + meta = with lib; { + description = "Eigenvalue Solvers for Petaflop-Applications"; + homepage = "https://elpa.mpcdf.mpg.de/"; + license = licenses.lgpl3Only; + platforms = platforms.linux; + maintainers = [ maintainers.markuskowa ]; + }; +} |