Rodrigo Arias Mallo
df7c79f34b
Add clangOmpss2Git to the overlay overriding the src attribute of the release nix derivation, so we only keep one derivation for both variants.
261 lines
8.4 KiB
Nix
261 lines
8.4 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;
|
|
};
|
|
|
|
# A wrapper script that puts all the flags and environment vars
|
|
# properly and calls the intel compiler binary
|
|
icc = appendPasstru (callPackage ./bsc/intel-compiler/default.nix {
|
|
iccUnwrapped = bsc.iccUnwrapped;
|
|
intelLicense = bsc.intelLicense;
|
|
}) { CC = "icc"; CXX = "icpc"; };
|
|
|
|
# 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 = callPackage ./bsc/mpich/default.nix { };
|
|
mpichDebug = bsc.mpich.override { enableDebug = true; };
|
|
|
|
# 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
|
|
# =================================================================
|
|
|
|
wxpropgrid = callPackage ./bsc/wxpropgrid/default.nix { };
|
|
paraver = callPackage ./bsc/paraver/default.nix { };
|
|
paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { };
|
|
paraverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { };
|
|
paraverExtra = bsc.paraver.override { enableMouseLabel = true; };
|
|
paraverDebug = bsc.paraver.overrideAttrs (old: {
|
|
dontStrip = true;
|
|
enableDebugging = true;
|
|
});
|
|
|
|
extrae = callPackage ./bsc/extrae/default.nix { };
|
|
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 { };
|
|
|
|
# =================================================================
|
|
# 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 { };
|
|
};
|
|
});
|
|
|
|
in
|
|
{
|
|
bsc = _bsc;
|
|
garlic = _bsc.garlic;
|
|
|
|
# Aliases apps -> bsc.garlic.apps
|
|
inherit (_bsc.garlic) apps fig exp ds;
|
|
}
|