Skip to content

Commit

Permalink
mkl: init at 2019.0.117
Browse files Browse the repository at this point in the history
This packags the Intel Math Kernel library on x86-64 platforms, which is a
dependency for many data science and machine learning packages.

Upstream, Intel provides proprietary binary RPMs with a permissive
redistribution license. These have been repackaged in both Debian and Anaconda,
so we are not the first distribution to redistribute.
  • Loading branch information
bhipple committed Sep 22, 2018
1 parent 13e738f commit d7c1d04
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/licenses.nix
Expand Up @@ -387,6 +387,14 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "ISC License";
};

# Proprietary binaries; free to redistribute without modification.
issl = {
fullName = "Intel Simplified Software License";
url = https://software.intel.com/en-us/license/intel-simplified-software-license;
free = false;
};


lgpl2 = spdx {
spdxId = "LGPL-2.0";
fullName = "GNU Library General Public License v2 only";
Expand Down
55 changes: 55 additions & 0 deletions pkgs/development/libraries/science/math/mkl/default.nix
@@ -0,0 +1,55 @@
{ stdenvNoCC, writeText, fetchurl, rpm, cpio, openmp }:

stdenvNoCC.mkDerivation rec {
name = "mkl-${version}";
version = "${date}.${rel}";
date = "2019.0";
rel = "117";

src = fetchurl {
url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/13575/l_mkl_${version}.tgz";
sha256 = "1bf7i54iqlf7x7fn8kqwmi06g30sxr6nq3ac0r871i6g0p3y47sf";
};

buildInputs = [ rpm cpio ];
propagatedBuildInputs = [ openmp ];

buildPhase = ''
rpm2cpio rpm/intel-mkl-common-c-${date}-${rel}-${date}-${rel}.noarch.rpm | cpio -idmv
rpm2cpio rpm/intel-mkl-core-rt-${date}-${rel}-${date}-${rel}.x86_64.rpm | cpio -idmv
'';

installPhase = ''
mkdir -p $out/lib
cp -r opt/intel/compilers_and_libraries_${version}/linux/mkl/include $out/
cp -r opt/intel/compilers_and_libraries_${version}/linux/mkl/lib/intel64_lin/* $out/lib/
cp license.txt $out/lib/
'';

# Per license agreement, do not modify the binary
dontStrip = true;
dontPatchELF = true;

# Some mkl calls require openmp, but Intel does not add these to SO_NEEDED and
# instructs users to put openmp on their LD_LIBRARY_PATH.
setupHook = writeText "setup-hook.sh" ''
addOpenmp() {
addToSearchPath LD_LIBRARY_PATH ${openmp}/lib
}
addEnvHooks "$targetOffset" addOpenmp
'';

meta = with stdenvNoCC.lib; {
description = "Intel Math Kernel Library";
longDescription = ''
Intel Math Kernel Library (Intel MKL) optimizes code with minimal effort
for future generations of Intel processors. It is compatible with your
choice of compilers, languages, operating systems, and linking and
threading models.
'';
homepage = https://software.intel.com/en-us/mkl;
license = licenses.issl;
platforms = [ "x86_64-linux" ];
maintainers = [ maintainers.bhipple ];
};
}
4 changes: 4 additions & 0 deletions pkgs/top-level/all-packages.nix
Expand Up @@ -20858,6 +20858,10 @@ with pkgs;

m4rie = callPackage ../development/libraries/science/math/m4rie { };

mkl = callPackage ../development/libraries/science/math/mkl {
inherit (llvmPackages) openmp;
};

nasc = callPackage ../applications/science/math/nasc { };

openblas = callPackage ../development/libraries/science/math/openblas { };
Expand Down

0 comments on commit d7c1d04

Please sign in to comment.