Add Intel MPI
This commit is contained in:
parent
5064170b31
commit
74222706bf
73
bsc/intel-mpi/default.nix
Normal file
73
bsc/intel-mpi/default.nix
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
{ stdenv
|
||||||
|
, requireFile
|
||||||
|
, rpmextract
|
||||||
|
, libfabric
|
||||||
|
, patchelf
|
||||||
|
, enableDebug ? false
|
||||||
|
}:
|
||||||
|
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "intel-mpi-${version}";
|
||||||
|
version = "2019.7.217";
|
||||||
|
|
||||||
|
lib_variant = (if enableDebug then "debug" else "release");
|
||||||
|
|
||||||
|
src = requireFile {
|
||||||
|
name = "l_mpi_2019.7.217.tgz";
|
||||||
|
sha256 = "01wwmiqff5lad7cdi8i57bs3kiphpjfv52sxll1w0jpq4c03nf4h";
|
||||||
|
message = ''
|
||||||
|
The package with Intel MPI cannot be redistributed freely, so you must do it
|
||||||
|
manually. Go to:
|
||||||
|
|
||||||
|
https://software.intel.com/content/www/us/en/develop/tools/mpi-library.html
|
||||||
|
|
||||||
|
And register in order to download Intel MPI (is free of charge). Then you will
|
||||||
|
be allowed to download it. Copy the url and use:
|
||||||
|
|
||||||
|
nix-prefetch-url http://registrationcenter-download.intel.com/...../l_mpi_2019.7.217.tgz
|
||||||
|
|
||||||
|
To add it to the store. Then try again building this derivation.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
dontBuild = true;
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
rpmextract rpm/intel-mpi-*.rpm
|
||||||
|
cd opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64
|
||||||
|
|
||||||
|
for i in bin/mpi* ; do
|
||||||
|
sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" $i
|
||||||
|
done
|
||||||
|
|
||||||
|
mv etc $out
|
||||||
|
mv bin $out
|
||||||
|
mv include $out
|
||||||
|
|
||||||
|
mkdir $out/lib
|
||||||
|
cp -a lib/lib* $out/lib
|
||||||
|
cp -a lib/${lib_variant}_mt/lib* $out/lib
|
||||||
|
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
preFixup = ''
|
||||||
|
echo $out/lib contains:
|
||||||
|
ls -l $out/lib
|
||||||
|
echo ----------------------
|
||||||
|
find $out/bin -type f -executable -exec \
|
||||||
|
patchelf \
|
||||||
|
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||||
|
'{}' \;
|
||||||
|
|
||||||
|
find $out/lib -name '*.so' -exec \
|
||||||
|
patchelf --set-rpath "$out/lib:${stdenv.cc}/lib:${stdenv.glibc}/lib:${libfabric}/lib" '{}' \;
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
rpmextract
|
||||||
|
libfabric
|
||||||
|
patchelf
|
||||||
|
];
|
||||||
|
}
|
13
default.nix
13
default.nix
@ -12,6 +12,7 @@ let
|
|||||||
#mpi = pkgs.mpich;
|
#mpi = pkgs.mpich;
|
||||||
#mpi = pkgs.openmpi;
|
#mpi = pkgs.openmpi;
|
||||||
mpi = openmpi; # Our OpenMPI variant
|
mpi = openmpi; # Our OpenMPI variant
|
||||||
|
#mpi = intel-mpi;
|
||||||
|
|
||||||
# Load the default compiler
|
# Load the default compiler
|
||||||
#stdenv = pkgs.gcc7Stdenv;
|
#stdenv = pkgs.gcc7Stdenv;
|
||||||
@ -31,6 +32,15 @@ let
|
|||||||
enableCxx = true;
|
enableCxx = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
intel-mpi-2019 = callPackage ./bsc/intel-mpi/default.nix {
|
||||||
|
# Intel MPI provides a debug version of the MPI library, but
|
||||||
|
# by default we use the release variant for performance
|
||||||
|
enableDebug = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Default Intel MPI version is 2019 (the last one)
|
||||||
|
intel-mpi = intel-mpi-2019;
|
||||||
|
|
||||||
fftw = callPackage ./bsc/fftw/default.nix {
|
fftw = callPackage ./bsc/fftw/default.nix {
|
||||||
mpi = mpi;
|
mpi = mpi;
|
||||||
};
|
};
|
||||||
@ -81,7 +91,8 @@ let
|
|||||||
# Apps for Garlic
|
# Apps for Garlic
|
||||||
nbody = callPackage ./bsc/apps/nbody/default.nix {
|
nbody = callPackage ./bsc/apps/nbody/default.nix {
|
||||||
stdenv = pkgs.gcc9Stdenv;
|
stdenv = pkgs.gcc9Stdenv;
|
||||||
inherit mpi tampi;
|
mpi = mpi;
|
||||||
|
tampi = tampi;
|
||||||
nanos6 = nanos6-git;
|
nanos6 = nanos6-git;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user