diff options
author | Daniƫl de Kok <me@danieldk.eu> | 2020-09-08 14:55:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-08 14:55:39 +0200 |
commit | 466522c919b4e49e6aed7f8ce05d58b5d6b3ac7f (patch) | |
tree | 5e8f441b3281cb41fe1970e58c59344938d5196c | |
parent | 45de9a079f0e63f055f9834e57c9b79e37546f04 (diff) | |
parent | aeb5951978f29358bcf145d30e527398af67a463 (diff) |
Merge pull request #97137 from danieldk/blis-0.7.0
blis: init at 0.7.0
-rw-r--r-- | doc/using/overlays.xml | 24 | ||||
-rw-r--r-- | pkgs/development/libraries/science/math/blis/default.nix | 64 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 |
3 files changed, 85 insertions, 5 deletions
diff --git a/doc/using/overlays.xml b/doc/using/overlays.xml index 7f6ee040c7c7..f6e02b969eac 100644 --- a/doc/using/overlays.xml +++ b/doc/using/overlays.xml @@ -187,14 +187,28 @@ self: super: <listitem> <para> <link + xlink:href="https://github.com/flame/blis">BLIS</link> + </para> + <para> + BLIS, available through the attribute + <literal>blis</literal>, is a framework for linear algebra kernels. In + addition, it implements the BLAS interface. + </para> + </listitem> + <listitem> + <para> + <link xlink:href="https://developer.amd.com/amd-aocl/blas-library/">AMD - BLIS/LIBFLAME</link> (optimized for modern AMD x86_64 CPUs) + BLIS/LIBFLAME</link> (optimized for modern AMD x86_64 CPUs) </para> <para> - The AMD BLIS library, with attribute <literal>amd-blis</literal>, - provides a BLAS implementation. The complementary AMD LIBFLAME - library, with attribute <literal>amd-libflame</literal>, provides - a LAPACK implementation. + The AMD fork of the BLIS library, with attribute + <literal>amd-blis</literal>, extends BLIS with optimizations for + modern AMD CPUs. The changes are usually submitted to + the upstream BLIS project after some time. However, AMD BLIS + typically provides some performance improvements on AMD Zen CPUs. + The complementary AMD LIBFLAME library, with attribute + <literal>amd-libflame</literal>, provides a LAPACK implementation. </para> </listitem> </itemizedlist> diff --git a/pkgs/development/libraries/science/math/blis/default.nix b/pkgs/development/libraries/science/math/blis/default.nix new file mode 100644 index 000000000000..42ba4f25204e --- /dev/null +++ b/pkgs/development/libraries/science/math/blis/default.nix @@ -0,0 +1,64 @@ +{ stdenv +, fetchFromGitHub +, perl +, python3 + +# Enable BLAS interface with 64-bit integer width. +, blas64 ? false + +# Target architecture. x86_64 builds Intel and AMD kernels. +, withArchitecture ? "x86_64" + +# Enable OpenMP-based threading. +, withOpenMP ? true +}: + +let + blasIntSize = if blas64 then "64" else "32"; +in stdenv.mkDerivation rec { + pname = "blis"; + version = "0.7.0"; + + src = fetchFromGitHub { + owner = "flame"; + repo = "blis"; + rev = version; + sha256 = "13g9kg7x8j9icg4frdq3wpl2cmp0jnh93mw48daa7ym399w17423"; + }; + + 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.so.3 $out/lib/libblas.so.3 + ln -s $out/lib/libblis.so.3 $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 linear algebra library"; + homepage = "https://github.com/flame/blis"; + 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 f67b48eebc40..9bce07e4f5f7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1387,6 +1387,8 @@ in blink1-tool = callPackage ../tools/misc/blink1-tool { }; + blis = callPackage ../development/libraries/science/math/blis { }; + bliss = callPackage ../applications/science/math/bliss { }; blobfuse = callPackage ../tools/filesystems/blobfuse { }; |