diff --git a/pkgs/development/libraries/science/math/amd-blis/default.nix b/pkgs/development/libraries/science/math/amd-blis/default.nix new file mode 100644 index 00000000000..9bddba0261f --- /dev/null +++ b/pkgs/development/libraries/science/math/amd-blis/default.nix @@ -0,0 +1,67 @@ +{ stdenv +, fetchFromGitHub +, perl +, python3 + +# Enable BLAS interface with 64-bit integer width. +, blas64 ? false + +# Target architecture, use "zen" or "zen2", optimization for Zen and +# other families is pretty much mutually exclusive in the AMD fork of +# BLIS. +, withArchitecture ? "zen" + +# Enable OpenMP-based threading. +, withOpenMP ? true +}: + +let + threadingSuffix = if withOpenMP then "-mt" else ""; + blasIntSize = if blas64 then "64" else "32"; +in stdenv.mkDerivation rec { + pname = "amd-blis"; + version = "2.2"; + + src = fetchFromGitHub { + owner = "amd"; + repo = "blis"; + rev = version; + sha256 = "1b2f5bwi0gkw2ih2rb7wfzn3m9hgg7k270kg43rmzpr2acpy86xa"; + }; + + inherit blas64; + + nativeBuildInputs = [ + perl + python3 + ]; + + doCheck = true; + + enableParallelBuilding = true; + + configureFlags = [ + "--enable-cblas" + "--blas-int-size=${blasIntSize}" + ] ++ stdenv.lib.optionals withOpenMP [ "--enable-threading=openmp" ] + ++ [ withArchitecture ]; + + postPatch = '' + patchShebangs configure build/flatten-headers.py + ''; + + postInstall = '' + ln -s $out/lib/libblis${threadingSuffix}.so.2 $out/lib/libblas.so.3 + ln -s $out/lib/libblis${threadingSuffix}.so.2 $out/lib/libcblas.so.3 + ln -s $out/lib/libblas.so.3 $out/lib/libblas.so + ln -s $out/lib/libcblas.so.3 $out/lib/libcblas.so + ''; + + meta = with stdenv.lib; { + description = "BLAS-compatible library optimized for AMD CPUs"; + homepage = "https://developer.amd.com/amd-aocl/blas-library/"; + license = licenses.bsd3; + maintainers = [ maintainers.danieldk ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e105c061aa5..42c87c667d7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -25305,6 +25305,8 @@ in almonds = callPackage ../applications/science/math/almonds { }; + amd-blis = callPackage ../development/libraries/science/math/amd-blis { }; + arpack = callPackage ../development/libraries/science/math/arpack { }; blas = callPackage ../build-support/alternatives/blas { };