Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mkl: init at 2019.0.117 #47182

Merged
merged 3 commits into from Oct 15, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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
85 changes: 85 additions & 0 deletions pkgs/development/libraries/science/math/mkl/default.nix
@@ -0,0 +1,85 @@
{ stdenvNoCC, writeText, fetchurl, rpmextract, undmg }:
/*
Some (but not all) mkl functions require openmp, but Intel does not add these
to SO_NEEDED and instructs users to put openmp on their LD_LIBRARY_PATH. If
you are using mkl and your library/application is using some of the functions
that require openmp, add a setupHook like this to your package:

setupHook = writeText "setup-hook.sh" ''
addOpenmp() {
addToSearchPath LD_LIBRARY_PATH ${openmp}/lib
}
addEnvHooks "$targetOffset" addOpenmp
'';

We do not add the setup hook here, because avoiding it allows this large
package to be a fixed-output derivation with better cache efficiency.
*/

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

src = if stdenvNoCC.isDarwin
then
(fetchurl {
url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/13565/m_mkl_${version}.dmg";
sha256 = "1f1jppac7vqwn00hkws0p4njx38ajh0n25bsjyb5d7jcacwfvm02";
})
else
(fetchurl {
url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/13575/l_mkl_${version}.tgz";
sha256 = "1bf7i54iqlf7x7fn8kqwmi06g30sxr6nq3ac0r871i6g0p3y47sf";
});

buildInputs = if stdenvNoCC.isDarwin then [ undmg ] else [ rpmextract ];

buildPhase = if stdenvNoCC.isDarwin then ''
for f in Contents/Resources/pkg/*.tgz; do
tar xzvf $f
done
'' else ''
rpmextract rpm/intel-mkl-common-c-${date}-${rel}-${date}-${rel}.noarch.rpm
rpmextract rpm/intel-mkl-core-rt-${date}-${rel}-${date}-${rel}.x86_64.rpm
'';

installPhase = if stdenvNoCC.isDarwin then ''
mkdir -p $out/lib
cp -r compilers_and_libraries_${version}/mac/mkl/include $out/
cp -r compilers_and_libraries_${version}/mac/mkl/lib/* $out/lib/
cp -r compilers_and_libraries_${version}/licensing/mkl/en/license.txt $out/lib/
'' else ''
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;

# Since these are unmodified binaries from Intel, they do not depend on stdenv
# and we can make them fixed-output derivations for cache efficiency.
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = if stdenvNoCC.isDarwin
then "1224dln7n8px1rk8biiggf77wjhxh8mzw0hd8zlyjm8i6j8w7i12"
else "0d8ai0wi8drp071acqkm1wv6vyg12010y843y56zzi1pql81xqvx";

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 licenses.unfreeRedistributable ];
platforms = [ "x86_64-linux" "x86_64-darwin" ];
maintainers = [ maintainers.bhipple ];
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Expand Up @@ -20858,6 +20858,8 @@ with pkgs;

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

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

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

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