Merge pull request #47182 from bhipple/add/mkl

mkl: init at 2019.0.117
This commit is contained in:
Matthew Bauer 2018-10-15 15:17:57 -05:00 committed by GitHub
commit 0b298d516a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 95 additions and 0 deletions

View file

@ -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";

View file

@ -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 ];
};
}

View file

@ -21066,6 +21066,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 { };