285 lines
9.0 KiB
Nix
285 lines
9.0 KiB
Nix
self: /* Future last stage */
|
|
super: /* Previous stage */
|
|
|
|
with self.lib;
|
|
|
|
let
|
|
inherit (self.lib) callPackageWith;
|
|
inherit (self.lib) callPackagesWith;
|
|
|
|
appendPasstru = drv: attrs: drv.overrideAttrs (old:{
|
|
passthru = old.passthru // attrs;
|
|
});
|
|
|
|
# ===================================================================
|
|
# BSC Packages
|
|
# ===================================================================
|
|
|
|
_bsc = makeExtensible (bsc:
|
|
let
|
|
callPackage = callPackageWith (self // bsc // bsc.garlic);
|
|
in
|
|
{
|
|
inherit callPackage;
|
|
|
|
# =================================================================
|
|
# Compilers
|
|
# =================================================================
|
|
|
|
# Default C (and C++) compiler to use. It will be overwritten by the
|
|
# experiments.
|
|
cc = bsc.icc;
|
|
|
|
# By default we use Intel compiler 2020 update 1
|
|
intelLicense = callPackage ./bsc/intel-compiler/license.nix { };
|
|
iccUnwrapped = bsc.icc2020Unwrapped;
|
|
icc2020Unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix {
|
|
intel-mpi = bsc.intelMpi;
|
|
};
|
|
|
|
icc2021Unwrapped = callPackage ./bsc/intel-compiler/icc2021.nix { };
|
|
|
|
# A wrapper script that puts all the flags and environment vars
|
|
# properly and calls the intel compiler binary
|
|
icc2020 = appendPasstru (callPackage ./bsc/intel-compiler/default.nix {
|
|
iccUnwrapped = bsc.iccUnwrapped;
|
|
intelLicense = bsc.intelLicense;
|
|
}) { CC = "icc"; CXX = "icpc"; };
|
|
|
|
icc2021 = appendPasstru (callPackage ./bsc/intel-compiler/wrapper2021.nix {
|
|
iccUnwrapped = bsc.icc2021Unwrapped;
|
|
}) { CC = "icc"; CXX = "icpc"; };
|
|
|
|
icc = bsc.icc2020;
|
|
|
|
# We need to set the cc.CC and cc.CXX attributes, in order to
|
|
# determine the name of the compiler
|
|
gcc = appendPasstru self.gcc { CC = "gcc"; CXX = "g++"; };
|
|
|
|
# Last llvm release by default
|
|
llvmPackages = self.llvmPackages_11 // {
|
|
clang = appendPasstru self.llvmPackages_11.clang {
|
|
CC = "clang"; CXX = "clang++";
|
|
};
|
|
};
|
|
|
|
lld = bsc.llvmPackages.lld;
|
|
|
|
clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix {
|
|
stdenv = bsc.llvmPackages.stdenv;
|
|
};
|
|
|
|
clangOmpss2UnwrappedGit = bsc.clangOmpss2Unwrapped.overrideAttrs (old: rec {
|
|
src = builtins.fetchGit {
|
|
url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git";
|
|
ref = "master";
|
|
};
|
|
version = src.shortRev;
|
|
});
|
|
|
|
clangOmpss2 = appendPasstru (
|
|
callPackage ./bsc/llvm-ompss2/default.nix {
|
|
clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped;
|
|
}) { CC = "clang"; CXX = "clang++"; };
|
|
|
|
clangOmpss2Git = appendPasstru (
|
|
callPackage ./bsc/llvm-ompss2/default.nix {
|
|
clangOmpss2Unwrapped = bsc.clangOmpss2UnwrappedGit;
|
|
}) { CC = "clang"; CXX = "clang++"; };
|
|
|
|
mcxx = bsc.mcxxRelease;
|
|
mcxxRelease = callPackage ./bsc/mcxx/default.nix { };
|
|
mcxxGit = callPackage ./bsc/mcxx/git.nix { };
|
|
mcxxRarias = callPackage ./bsc/mcxx/rarias.nix {
|
|
bison = self.bison_3_5;
|
|
};
|
|
|
|
# =================================================================
|
|
# nanos6
|
|
# =================================================================
|
|
nanos6 = bsc.nanos6Release;
|
|
nanos6Release = callPackage ./bsc/nanos6/default.nix { };
|
|
nanos6Git = callPackage ./bsc/nanos6/git.nix { };
|
|
|
|
nanos6Debug = bsc.nanos6.overrideAttrs (old: {
|
|
dontStrip = true;
|
|
enableDebugging = true;
|
|
});
|
|
|
|
nanos6GlibcxxDebug = bsc.nanos6Debug.override {
|
|
enableGlibcxxDebug = true;
|
|
};
|
|
|
|
jemalloc = self.jemalloc.overrideAttrs (old:
|
|
{
|
|
# Custom nanos6 configure options
|
|
configureFlags = old.configureFlags ++ [
|
|
"--with-jemalloc-prefix=nanos6_je_"
|
|
"--enable-stats"
|
|
];
|
|
|
|
hardeningDisable = [ "all" ];
|
|
});
|
|
|
|
# =================================================================
|
|
# MPI
|
|
# =================================================================
|
|
|
|
# Default MPI implementation to use. Will be overwritten by the
|
|
# experiments.
|
|
mpi = bsc.impi;
|
|
|
|
# ParaStation MPI
|
|
pscom = callPackage ./bsc/parastation/pscom.nix { };
|
|
psmpi = callPackage ./bsc/parastation/psmpi.nix { };
|
|
|
|
# MPICH
|
|
#mpich_3 = callPackage ./bsc/mpich/default.nix { };
|
|
#mpichDebug_3 = bsc.mpich.override { enableDebug = true; };
|
|
mpich = super.mpich.overrideAttrs (old: {
|
|
buildInputs = old.buildInputs ++ [ self.libfabric ];
|
|
configureFlags = old.configureFlags ++ [
|
|
"--with-device=ch4:ofi"
|
|
"--with-libfabric=${self.libfabric}"
|
|
];
|
|
hardeningDisable = [ "all" ];
|
|
});
|
|
|
|
# Default Intel MPI version is 2019 (the last one)
|
|
impi = bsc.intelMpi;
|
|
intelMpi = bsc.intelMpi2019;
|
|
intelMpi2019 = callPackage ./bsc/intel-mpi/default.nix { };
|
|
|
|
# OpenMPI
|
|
openmpi = bsc.openmpi-mn4;
|
|
openmpi-mn4 = callPackage ./bsc/openmpi/default.nix {
|
|
pmix = bsc.pmix2;
|
|
pmi2 = bsc.slurm17-libpmi2;
|
|
enableCxx = true;
|
|
};
|
|
|
|
# TAMPI
|
|
tampi = bsc.tampiRelease;
|
|
tampiRelease = callPackage ./bsc/tampi/default.nix { };
|
|
tampiGit = callPackage ./bsc/tampi/git.nix { };
|
|
|
|
# =================================================================
|
|
# GASPI
|
|
# =================================================================
|
|
gpi-2 = callPackage ./bsc/gpi-2/default.nix { };
|
|
|
|
# Use GPI-2 as the default implementation for GASPI
|
|
gaspi = bsc.gpi-2;
|
|
|
|
tagaspi = callPackage ./bsc/tagaspi/default.nix { };
|
|
|
|
# =================================================================
|
|
# Tracing
|
|
# =================================================================
|
|
|
|
paraverKernel = callPackage ./bsc/paraver/kernel.nix { };
|
|
wxparaver = callPackage ./bsc/paraver/default.nix { };
|
|
|
|
# We should maintain these...
|
|
paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { };
|
|
wxparaverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { };
|
|
|
|
extrae = callPackage ./bsc/extrae/default.nix {
|
|
libdwarf = super.libdwarf_20210528;
|
|
};
|
|
otf = callPackage ./bsc/otf/default.nix { };
|
|
vite = self.qt5.callPackage ./bsc/vite/default.nix { };
|
|
babeltrace = callPackage ./bsc/babeltrace/default.nix { };
|
|
babeltrace2 = callPackage ./bsc/babeltrace2/default.nix { };
|
|
|
|
# Perf for MN4 kernel
|
|
perf = callPackage ./bsc/perf/default.nix {
|
|
kernel = self.linuxPackages_4_9.kernel;
|
|
systemtap = self.linuxPackages_4_9.systemtap;
|
|
};
|
|
|
|
cn6 = callPackage ./bsc/cn6/default.nix { };
|
|
ovni = callPackage ./bsc/ovni/default.nix { };
|
|
ovniKernel = callPackage ./bsc/ovni/default.nix {
|
|
gitBranch = "kernel-context-switch";
|
|
gitCommit = null;
|
|
};
|
|
|
|
# =================================================================
|
|
# MN4 specific
|
|
# =================================================================
|
|
|
|
osumb = callPackage ./bsc/osu/default.nix { };
|
|
lmbench = callPackage ./bsc/lmbench/default.nix { };
|
|
pmix2 = callPackage ./bsc/pmix/pmix2.nix { };
|
|
slurm17 = callPackage ./bsc/slurm/default.nix {
|
|
pmix = bsc.pmix2;
|
|
};
|
|
slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix {
|
|
pmix = bsc.pmix2;
|
|
};
|
|
# Use a slurm compatible with MN4
|
|
slurm = bsc.slurm17;
|
|
# We need the unstable branch to get the fallocate problem fixed, as it is
|
|
# not yet in stable nix, see:
|
|
# https://pm.bsc.es/gitlab/rarias/bscpkgs/-/issues/83
|
|
nix-mn4 = self.nixUnstable;
|
|
# Our custom version that lacks the binaries. Disabled by default.
|
|
#rdma-core = callPackage ./bsc/rdma-core/default.nix { };
|
|
|
|
# =================================================================
|
|
# Patched from upstream
|
|
# =================================================================
|
|
|
|
groff = callPackage ./bsc/groff/default.nix { };
|
|
fftw = callPackage ./bsc/fftw/default.nix { };
|
|
vtk = callPackage ./bsc/vtk/default.nix {
|
|
inherit (self.xorg) libX11 xorgproto libXt;
|
|
};
|
|
|
|
busybox = self.busybox.override {
|
|
enableStatic = true;
|
|
};
|
|
|
|
# =================================================================
|
|
# Misc
|
|
# =================================================================
|
|
|
|
dummy = callPackage ./bsc/dummy/default.nix { };
|
|
mpptest = callPackage ./bsc/mpptest/default.nix { };
|
|
cpuid = callPackage ./bsc/cpuid/default.nix { };
|
|
|
|
# =================================================================
|
|
# Garlic benchmark
|
|
# =================================================================
|
|
|
|
nixtools = callPackage ./bsc/nixtools/default.nix { };
|
|
|
|
garlicTools = callPackage ./garlic/tools.nix {};
|
|
|
|
# Aliases bsc.apps -> bsc.garlic.apps
|
|
inherit (bsc.garlic) apps fig exp ds;
|
|
|
|
garlic = import ./garlic/index.nix {
|
|
inherit self super bsc callPackage;
|
|
};
|
|
|
|
test = {
|
|
# hwloc = callPackage ./test/bugs/hwloc.nix { };
|
|
sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
|
|
};
|
|
|
|
ci = import ./test/ci.nix {
|
|
inherit self super bsc callPackage;
|
|
};
|
|
});
|
|
|
|
in
|
|
{
|
|
bsc = _bsc;
|
|
garlic = _bsc.garlic;
|
|
|
|
# Aliases apps -> bsc.garlic.apps
|
|
inherit (_bsc.garlic) apps fig exp ds;
|
|
}
|