forked from rarias/jungle
Compare commits
43 Commits
pkgs/tacud
...
45ded6fb98
| Author | SHA1 | Date | |
|---|---|---|---|
|
45ded6fb98
|
|||
|
de18ccf5c0
|
|||
|
84ed5eb7ca
|
|||
|
a7c4d39653
|
|||
|
16a8f84727
|
|||
|
92d12c5f69
|
|||
|
01d7133a5d
|
|||
|
8f0f327683
|
|||
|
97ffc95f8d
|
|||
|
3b4202f3f5
|
|||
|
f185b0c0b3
|
|||
|
cdc4e7f8fd
|
|||
|
9436e3c604
|
|||
|
941a13357c
|
|||
|
d87c4ee985
|
|||
|
f94e0b05c1
|
|||
|
b45eed9aef
|
|||
|
2d5d0053f8
|
|||
|
30c7edafc0
|
|||
|
32acd179f9
|
|||
|
1e30d9f48c
|
|||
|
421f0d44e4
|
|||
|
301eb6742d
|
|||
|
bb51aa52cb
|
|||
|
87be9325db
|
|||
|
c952e69f73
|
|||
|
a0f2e2639b
|
|||
|
bda1f10dd7
|
|||
|
734b3f0450
|
|||
|
109ec07800
|
|||
|
881a08dd37
|
|||
|
fad79643fa
|
|||
|
faa4b48538
|
|||
|
3e033836fc
|
|||
|
29c8c4826b
|
|||
|
6765635462
|
|||
|
0a5b3403d4
|
|||
|
6dfa515b3b
|
|||
|
6bef5ab4c6
|
|||
|
02d9f5a062
|
|||
|
fcc9719ccd
|
|||
|
1e36c3b204
|
|||
|
972518c2d8
|
@@ -7,6 +7,7 @@
|
|||||||
./base/august-shutdown.nix
|
./base/august-shutdown.nix
|
||||||
./base/boot.nix
|
./base/boot.nix
|
||||||
./base/env.nix
|
./base/env.nix
|
||||||
|
./base/fish.nix
|
||||||
./base/fs.nix
|
./base/fs.nix
|
||||||
./base/hw.nix
|
./base/hw.nix
|
||||||
./base/net.nix
|
./base/net.nix
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
vim wget git htop tmux pciutils tcpdump ripgrep nix-index nixos-option
|
vim wget git htop tmux pciutils tcpdump ripgrep nix-index nixos-option
|
||||||
nix-diff ipmitool freeipmi ethtool lm_sensors cmake gnumake file tree
|
nix-diff ipmitool freeipmi ethtool lm_sensors cmake gnumake file tree
|
||||||
ncdu perf ldns pv
|
ncdu perf ldns pv
|
||||||
|
nix-output-monitor
|
||||||
|
nixfmt-tree
|
||||||
# From jungle overlay
|
# From jungle overlay
|
||||||
osumb nixgen
|
osumb nixgen
|
||||||
];
|
];
|
||||||
@@ -28,9 +30,22 @@
|
|||||||
VISUAL = "vim";
|
VISUAL = "vim";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.bash.promptInit = ''
|
programs.bash.promptInit = # bash
|
||||||
PS1="\h\\$ "
|
''
|
||||||
'';
|
if echo "$PATH" | grep -qc '/nix/store'; then
|
||||||
|
# Inside a nix shell, dumb prompt
|
||||||
|
PS1="\h\\$ "
|
||||||
|
elif [ "$TERM" != "dumb" ] ; then
|
||||||
|
PROMPT_COLOR="1;31m"
|
||||||
|
((UID)) && PROMPT_COLOR="1;32m"
|
||||||
|
|
||||||
|
PS1="\n\[\033[$PROMPT_COLOR\][\[\e]0;\u@\h: \w\a\]\u@\h:\w]\\$\[\033[0m\] "
|
||||||
|
|
||||||
|
if test "$TERM" = "xterm"; then
|
||||||
|
PS1="\[\033]2;\h:\u:\w\007\]$PS1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
time.timeZone = "Europe/Madrid";
|
time.timeZone = "Europe/Madrid";
|
||||||
i18n.defaultLocale = "en_DK.UTF-8";
|
i18n.defaultLocale = "en_DK.UTF-8";
|
||||||
|
|||||||
3
m/common/base/fish.nix
Normal file
3
m/common/base/fish.nix
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
programs.fish.enable = true;
|
||||||
|
}
|
||||||
@@ -87,6 +87,13 @@
|
|||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIIFiqXqt88VuUfyANkZyLJNiuroIITaGlOOTMhVDKjf abonerib@bsc"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIIFiqXqt88VuUfyANkZyLJNiuroIITaGlOOTMhVDKjf abonerib@bsc"
|
||||||
];
|
];
|
||||||
|
shell = pkgs.fish;
|
||||||
|
packages = with pkgs; [
|
||||||
|
fzf
|
||||||
|
jujutsu
|
||||||
|
neovim
|
||||||
|
starship
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
vlopez = {
|
vlopez = {
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
{ lib, ... }:
|
{ lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../common/ssf.nix
|
../common/ssf.nix
|
||||||
../module/hut-substituter.nix
|
../module/hut-substituter.nix
|
||||||
|
./hydra.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Select this using the ID to avoid mismatches
|
# Select this using the ID to avoid mismatches
|
||||||
@@ -30,4 +31,22 @@
|
|||||||
prefixLength = 24;
|
prefixLength = 24;
|
||||||
} ];
|
} ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.nix-serve = {
|
||||||
|
enable = true;
|
||||||
|
bindAddress = "0.0.0.0";
|
||||||
|
port = 5000;
|
||||||
|
package = pkgs.haskell.lib.overrideSrc (pkgs.haskell.packages.ghc96.nix-serve-ng.override { nix = pkgs.nixVersions.nix_2_28; }) {
|
||||||
|
src = pkgs.fetchgit {
|
||||||
|
url = "https://jungle.bsc.es/git/abonerib/nix-serve-ng.git";
|
||||||
|
rev = "9c056641300a826db66b66d7e584b2541d38927a";
|
||||||
|
hash = "sha256-y69ZchFiZOU71eyeljcQgLxkLk5JUzZfanq8Yzw4MkI=";
|
||||||
|
};
|
||||||
|
version = "unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
secretKeyFile = "/var/cache-priv-key.pem";
|
||||||
|
# Public key:
|
||||||
|
# 10.0.40.6:8jBhIdXEBap+Qo+vc1/fnV9vj43A2oDk839EEheRr/U=
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
57
m/weasel/hydra.nix
Normal file
57
m/weasel/hydra.nix
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
services.hydra = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# Wrap hydra so it puts quiet flag every time... This is dumb and annoying,
|
||||||
|
# but i can't override the systemd ExecStart without running into infinite
|
||||||
|
# recursion.
|
||||||
|
package = pkgs.symlinkJoin {
|
||||||
|
name = "hydra-quiet";
|
||||||
|
paths = [ pkgs.hydra ];
|
||||||
|
postBuild = ''
|
||||||
|
for prog in hydra-queue-runner hydra-evaluator ; do
|
||||||
|
prev=$(realpath $out/bin/$prog)
|
||||||
|
rm $out/bin/$prog
|
||||||
|
cat >$out/bin/$prog <<EOF
|
||||||
|
#!/bin/sh
|
||||||
|
args=()
|
||||||
|
for arg in "\$@"; do
|
||||||
|
if [ "\$arg" != "-v" ]; then
|
||||||
|
args+=("\$arg")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exec $prev --quiet "\''${args[@]}"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x $out/bin/$prog
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
hydraURL = "http://localhost:3001"; # externally visible URL
|
||||||
|
notificationSender = "hydra@jungle.bsc.es"; # e-mail of Hydra service
|
||||||
|
port = 3001;
|
||||||
|
# a standalone Hydra will require you to unset the buildMachinesFiles list to avoid using a nonexistant /etc/nix/machines
|
||||||
|
buildMachinesFiles = [ ];
|
||||||
|
# you will probably also want, otherwise *everything* will be built from scratch
|
||||||
|
useSubstitutes = true;
|
||||||
|
listenHost = "0.0.0.0"; # Force IPv4
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.hydra-send-stats.enable = lib.mkForce false;
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ config.services.hydra.port ];
|
||||||
|
|
||||||
|
nix.settings.extra-allowed-uris = [
|
||||||
|
"git+ssh://git@bscpm04.bsc.es"
|
||||||
|
"git+ssh://git@gitlab-internal.bsc.es"
|
||||||
|
"https://github.com"
|
||||||
|
"git+ssh://github.com"
|
||||||
|
];
|
||||||
|
}
|
||||||
31
overlay.nix
31
overlay.nix
@@ -9,6 +9,9 @@ let
|
|||||||
bscPkgs = {
|
bscPkgs = {
|
||||||
agenix = prev.callPackage ./pkgs/agenix/default.nix { };
|
agenix = prev.callPackage ./pkgs/agenix/default.nix { };
|
||||||
amd-uprof = prev.callPackage ./pkgs/amd-uprof/default.nix { };
|
amd-uprof = prev.callPackage ./pkgs/amd-uprof/default.nix { };
|
||||||
|
aoccUnwrapped = callPackage ./pkgs/aocc/unwrapped.nix { };
|
||||||
|
aocc = callPackage ./pkgs/aocc/default.nix { };
|
||||||
|
stdenvAocc = final.overrideCC final.stdenv final.aocc;
|
||||||
bench6 = callPackage ./pkgs/bench6/default.nix { };
|
bench6 = callPackage ./pkgs/bench6/default.nix { };
|
||||||
bigotes = callPackage ./pkgs/bigotes/default.nix { };
|
bigotes = callPackage ./pkgs/bigotes/default.nix { };
|
||||||
clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { };
|
clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { };
|
||||||
@@ -19,7 +22,11 @@ let
|
|||||||
cudainfo = prev.callPackage ./pkgs/cudainfo/default.nix { };
|
cudainfo = prev.callPackage ./pkgs/cudainfo/default.nix { };
|
||||||
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
|
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
|
||||||
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
|
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
|
||||||
|
intel-apt = callPackage ./pkgs/intel-oneapi/packages.nix { };
|
||||||
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
|
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
|
||||||
|
intelPackages_2024 = final.intel-apt.hpckit_2024;
|
||||||
|
intelPackages_2025 = final.intel-apt.hpckit_2025;
|
||||||
|
intelPackages = final.intelPackages_2025;
|
||||||
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
|
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
|
||||||
# FIXME: Extend this to all linuxPackages variants. Open problem, see:
|
# FIXME: Extend this to all linuxPackages variants. Open problem, see:
|
||||||
# https://discourse.nixos.org/t/whats-the-right-way-to-make-a-custom-kernel-module-available/4636
|
# https://discourse.nixos.org/t/whats-the-right-way-to-make-a-custom-kernel-module-available/4636
|
||||||
@@ -44,12 +51,15 @@ let
|
|||||||
#nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { };
|
#nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { };
|
||||||
nodes = callPackage ./pkgs/nodes/default.nix { };
|
nodes = callPackage ./pkgs/nodes/default.nix { };
|
||||||
nosv = callPackage ./pkgs/nosv/default.nix { };
|
nosv = callPackage ./pkgs/nosv/default.nix { };
|
||||||
|
oneMath = callPackage ./pkgs/onemath/default.nix { };
|
||||||
openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; };
|
openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; };
|
||||||
openmpv = final.openmp.override { enableNosv = true; enableOvni = true; };
|
openmpv = final.openmp.override { enableNosv = true; enableOvni = true; };
|
||||||
osumb = callPackage ./pkgs/osu/default.nix { };
|
osumb = callPackage ./pkgs/osu/default.nix { };
|
||||||
ovni = callPackage ./pkgs/ovni/default.nix { };
|
ovni = callPackage ./pkgs/ovni/default.nix { };
|
||||||
ovniGit = final.ovni.override { useGit = true; };
|
ovniGit = final.ovni.override { useGit = true; };
|
||||||
|
papi = callPackage ./pkgs/papi/default.nix { papi = prev.papi; };
|
||||||
paraverKernel = callPackage ./pkgs/paraver/kernel.nix { };
|
paraverKernel = callPackage ./pkgs/paraver/kernel.nix { };
|
||||||
|
pertalde = callPackage ./pkgs/pertalde/default.nix { };
|
||||||
pocl = callPackage ./pkgs/pocl/default.nix { };
|
pocl = callPackage ./pkgs/pocl/default.nix { };
|
||||||
pocl-noicd = callPackage ./pkgs/pocl/default.nix { enableICD = false; };
|
pocl-noicd = callPackage ./pkgs/pocl/default.nix { enableICD = false; };
|
||||||
prometheus-slurm-exporter = prev.callPackage ./pkgs/slurm-exporter/default.nix { };
|
prometheus-slurm-exporter = prev.callPackage ./pkgs/slurm-exporter/default.nix { };
|
||||||
@@ -61,19 +71,16 @@ let
|
|||||||
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; };
|
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; };
|
||||||
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; };
|
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; };
|
||||||
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; };
|
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; };
|
||||||
|
tacuda = callPackage ./pkgs/tacuda/default.nix { };
|
||||||
tagaspi = callPackage ./pkgs/tagaspi/default.nix { };
|
tagaspi = callPackage ./pkgs/tagaspi/default.nix { };
|
||||||
tampi = callPackage ./pkgs/tampi/default.nix { };
|
tampi = callPackage ./pkgs/tampi/default.nix { };
|
||||||
|
tasycl = callPackage ./pkgs/tasycl/default.nix { };
|
||||||
|
tasycl-acpp = callPackage ./pkgs/tasycl/default.nix { useIntel = false; };
|
||||||
upc-qaire-exporter = prev.callPackage ./pkgs/upc-qaire-exporter/default.nix { };
|
upc-qaire-exporter = prev.callPackage ./pkgs/upc-qaire-exporter/default.nix { };
|
||||||
taopencl = callPackage ./pkgs/taopencl/default.nix { };
|
taopencl = callPackage ./pkgs/taopencl/default.nix { };
|
||||||
wxparaver = callPackage ./pkgs/paraver/default.nix { };
|
wxparaver = callPackage ./pkgs/paraver/default.nix { };
|
||||||
|
|
||||||
gromacs = callPackage ./pkgs/gromacs/default.nix { enableSYCL = true; };
|
gromacs = callPackage ./pkgs/gromacs/default.nix { enableSYCL = true; };
|
||||||
|
|
||||||
_cuda = prev._cuda.extend (_: _prev: final.lib.recursiveUpdate _prev {
|
|
||||||
extensions = _prev.extensions ++ [(finalAttrs: _: {
|
|
||||||
tacuda = finalAttrs.callPackage ./pkgs/tacuda/default.nix { };
|
|
||||||
})];
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
tests = rec {
|
tests = rec {
|
||||||
@@ -81,6 +88,11 @@ let
|
|||||||
#sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
|
#sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
|
||||||
hello-c = callPackage ./test/compilers/hello-c.nix { };
|
hello-c = callPackage ./test/compilers/hello-c.nix { };
|
||||||
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
|
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
|
||||||
|
hello-sycl = callPackage ./test/compilers/hello-sycl.nix { };
|
||||||
|
hello-syclompss = callPackage ./test/compilers/icpx-ompss2.nix { };
|
||||||
|
hello-sycl-pocl = (callPackage ./test/compilers/hello-sycl.nix { }).withPocl;
|
||||||
|
hello-syclompss-pocl = (callPackage ./test/compilers/icpx-ompss2.nix { }).withPocl;
|
||||||
|
|
||||||
lto = callPackage ./test/compilers/lto.nix { };
|
lto = callPackage ./test/compilers/lto.nix { };
|
||||||
asan = callPackage ./test/compilers/asan.nix { };
|
asan = callPackage ./test/compilers/asan.nix { };
|
||||||
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
|
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
|
||||||
@@ -90,6 +102,13 @@ let
|
|||||||
intel2023-ifort = callPackage ./test/compilers/hello-f.nix {
|
intel2023-ifort = callPackage ./test/compilers/hello-f.nix {
|
||||||
stdenv = final.intelPackages_2023.stdenv-ifort;
|
stdenv = final.intelPackages_2023.stdenv-ifort;
|
||||||
};
|
};
|
||||||
|
intel2024-icx-c = hello-c.override { stdenv = final.intelPackages_2024.stdenv; };
|
||||||
|
intel2025-icx-c = hello-c.override { stdenv = final.intelPackages_2025.stdenv; };
|
||||||
|
intel2024-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2024.stdenv; };
|
||||||
|
intel2025-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2025.stdenv; };
|
||||||
|
# intel2023-sycl = hello-sycl.override { intelPackages = final.intelPackages_2023; }; # broken
|
||||||
|
intel2024-sycl = hello-sycl.override { intelPackages = final.intelPackages_2024; };
|
||||||
|
intel2025-sycl = hello-sycl.override { intelPackages = final.intelPackages_2025; };
|
||||||
clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
||||||
clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
||||||
clangOmpss2-task = callPackage ./test/compilers/ompss2.nix {
|
clangOmpss2-task = callPackage ./test/compilers/ompss2.nix {
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ in
|
|||||||
inherit version;
|
inherit version;
|
||||||
src = uprofSrc;
|
src = uprofSrc;
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
strictDeps = true;
|
||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
nativeBuildInputs = [ autoPatchelfHook radare2 ];
|
nativeBuildInputs = [ autoPatchelfHook radare2 ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ in stdenv.mkDerivation {
|
|||||||
set +x
|
set +x
|
||||||
'';
|
'';
|
||||||
hardeningDisable = [ "pic" "format" ];
|
hardeningDisable = [ "pic" "format" ];
|
||||||
|
strictDeps = true;
|
||||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
patches = [ ./makefile.patch ./hrtimer.patch ./remove-wr-rdmsrq.patch ];
|
patches = [ ./makefile.patch ./hrtimer.patch ./remove-wr-rdmsrq.patch ];
|
||||||
makeFlags = [
|
makeFlags = [
|
||||||
|
|||||||
17
pkgs/aocc/default.nix
Normal file
17
pkgs/aocc/default.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
wrapCCWith,
|
||||||
|
aoccUnwrapped,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
cc = aoccUnwrapped;
|
||||||
|
in
|
||||||
|
wrapCCWith {
|
||||||
|
inherit cc;
|
||||||
|
nixSupport.cc-cflags = [ "-isystem ${cc}/include" ];
|
||||||
|
|
||||||
|
extraBuildCommands = ''
|
||||||
|
wrap aocc $wrapper $ccPath/clang
|
||||||
|
wrap aocc++ $wrapper $ccPath/clang++
|
||||||
|
'';
|
||||||
|
}
|
||||||
52
pkgs/aocc/unwrapped.nix
Normal file
52
pkgs/aocc/unwrapped.nix
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
fetchurl,
|
||||||
|
stdenv,
|
||||||
|
autoPatchelfHook,
|
||||||
|
rocmPackages,
|
||||||
|
zlib,
|
||||||
|
libffi,
|
||||||
|
elfutils,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
# in newer nixpkgs the runtime is hsakmt
|
||||||
|
rocmRuntime = if rocmPackages ? hsakmt then rocmPackages.hsakmt else rocmPackages.rocm-runtime;
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "aocc-compiler";
|
||||||
|
version = "5.0.0";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://download.amd.com/developer/eula/aocc/aocc-5-0/aocc-compiler-5.0.0.tar";
|
||||||
|
sha256 = "sha256-lm+sLSx1np3m6WnBCtp6ezBsET9/HgfqN2gp7IY4Dao=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ autoPatchelfHook ];
|
||||||
|
buildInputs = [
|
||||||
|
elfutils
|
||||||
|
zlib
|
||||||
|
rocmRuntime
|
||||||
|
stdenv.cc.cc.lib
|
||||||
|
];
|
||||||
|
phases = [
|
||||||
|
"unpackPhase"
|
||||||
|
"installPhase"
|
||||||
|
"fixupPhase"
|
||||||
|
];
|
||||||
|
dontStrip = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -a . $out/
|
||||||
|
|
||||||
|
ln -s ${lib.getLib libffi}/lib/libffi.so $out/lib/libffi.so.6
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit rocmRuntime;
|
||||||
|
isClang = true; # Needed for wrapCCWith
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.mainProgram = "clang";
|
||||||
|
}
|
||||||
@@ -59,6 +59,7 @@ stdenv.mkDerivation rec {
|
|||||||
];
|
];
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://gitlab.pm.bsc.es/rarias/bench6";
|
homepage = "https://gitlab.pm.bsc.es/rarias/bench6";
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ stdenv.mkDerivation {
|
|||||||
};
|
};
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://github.com/rodarima/bigotes";
|
homepage = "https://github.com/rodarima/bigotes";
|
||||||
description = "Versatile benchmark tool";
|
description = "Versatile benchmark tool";
|
||||||
|
|||||||
@@ -10,11 +10,14 @@
|
|||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
name = "cudainfo";
|
name = "cudainfo";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
buildInputs = [
|
strictDeps = true;
|
||||||
|
nativeBuildInputs = [
|
||||||
cudatoolkit # Required for nvcc
|
cudatoolkit # Required for nvcc
|
||||||
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
|
|
||||||
autoAddDriverRunpath
|
autoAddDriverRunpath
|
||||||
];
|
];
|
||||||
|
buildInputs = [
|
||||||
|
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
|
||||||
|
];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp -a cudainfo $out/bin
|
cp -a cudainfo $out/bin
|
||||||
@@ -23,6 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
name = "cudainfo-test";
|
name = "cudainfo-test";
|
||||||
requiredSystemFeatures = [ "cuda" ];
|
requiredSystemFeatures = [ "cuda" ];
|
||||||
dontBuild = true;
|
dontBuild = true;
|
||||||
|
strictDeps = true;
|
||||||
nativeCheckInputs = [
|
nativeCheckInputs = [
|
||||||
finalAttrs.finalPackage # The cudainfo package from above
|
finalAttrs.finalPackage # The cudainfo package from above
|
||||||
strace # When it fails, it will show the trace
|
strace # When it fails, it will show the trace
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
#, python3Packages
|
#, python3Packages
|
||||||
, installShellFiles
|
, installShellFiles
|
||||||
, symlinkJoin
|
, symlinkJoin
|
||||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
, enablePapi ? true
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
patches = [ ./rdma-core.patch ./max-mem.patch ];
|
patches = [ ./rdma-core.patch ./max-mem.patch ];
|
||||||
|
|
||||||
|
|||||||
@@ -40,45 +40,19 @@ let
|
|||||||
mpi = "2021.9.0";
|
mpi = "2021.9.0";
|
||||||
};
|
};
|
||||||
|
|
||||||
aptPackageIndex = stdenv.mkDerivation {
|
findMatch = name:
|
||||||
name = "intel-oneapi-packages";
|
|
||||||
srcs = [
|
|
||||||
# Run update.sh to update the package lists
|
|
||||||
./amd64-packages ./all-packages
|
|
||||||
];
|
|
||||||
phases = [ "installPhase" ];
|
|
||||||
installPhase = ''
|
|
||||||
awk -F': ' '\
|
|
||||||
BEGIN { print "[ {" } \
|
|
||||||
NR>1 && /^Package: / { print "} {"; } \
|
|
||||||
/: / { printf "%s = \"%s\";\n", $1, $2 } \
|
|
||||||
END { print "} ]" }' $srcs > $out
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
aptPackages = import aptPackageIndex;
|
|
||||||
|
|
||||||
apthost = "https://apt.repos.intel.com/oneapi/";
|
|
||||||
|
|
||||||
getSum = pkgList: name:
|
|
||||||
let
|
let
|
||||||
matches = lib.filter (x: name == x.Package) pkgList;
|
aptPackages = builtins.fromJSON (builtins.readFile ./packages.json);
|
||||||
#n = lib.length matches;
|
matches = lib.filter (x: name == x.pname) aptPackages;
|
||||||
#match = builtins.trace (name + " -- ${builtins.toString n}") (lib.elemAt matches 0);
|
|
||||||
match = lib.elemAt matches 0;
|
|
||||||
in
|
|
||||||
match.SHA256;
|
|
||||||
|
|
||||||
getUrl = pkgList: name:
|
|
||||||
let
|
|
||||||
matches = lib.filter (x: name == x.Package) pkgList;
|
|
||||||
#match = assert lib.length matches == 1; lib.elemAt matches 0;
|
|
||||||
n = lib.length matches;
|
n = lib.length matches;
|
||||||
match =
|
match = builtins.traceVerbose (name + " -- ${builtins.toString n}") (builtins.head matches);
|
||||||
#builtins.trace (name + " -- n=${builtins.toString n}")
|
|
||||||
(lib.elemAt matches 0);
|
apthost = "https://apt.repos.intel.com/oneapi/";
|
||||||
in
|
in
|
||||||
apthost + match.Filename;
|
{
|
||||||
|
url = apthost + match.filename;
|
||||||
|
sha256 = match.sha256;
|
||||||
|
};
|
||||||
|
|
||||||
uncompressDebs = debs: name: stdenv.mkDerivation {
|
uncompressDebs = debs: name: stdenv.mkDerivation {
|
||||||
name = name;
|
name = name;
|
||||||
@@ -98,10 +72,7 @@ let
|
|||||||
|
|
||||||
joinDebs = name: names:
|
joinDebs = name: names:
|
||||||
let
|
let
|
||||||
urls = builtins.map (x: getUrl aptPackages x) names;
|
debs = builtins.map (x: builtins.fetchurl (findMatch x)) names;
|
||||||
sums = builtins.map (x: getSum aptPackages x) names;
|
|
||||||
getsrc = url: sha256: builtins.fetchurl { inherit url sha256; };
|
|
||||||
debs = lib.zipListsWith getsrc urls sums;
|
|
||||||
in
|
in
|
||||||
uncompressDebs debs "${name}-source";
|
uncompressDebs debs "${name}-source";
|
||||||
|
|
||||||
@@ -128,6 +99,7 @@ let
|
|||||||
|
|
||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
strictDeps = true;
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/{bin,etc,lib,include}
|
mkdir -p $out/{bin,etc,lib,include}
|
||||||
mkdir -p $out/share/man
|
mkdir -p $out/share/man
|
||||||
@@ -179,6 +151,7 @@ let
|
|||||||
];
|
];
|
||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
|
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
|
||||||
|
|
||||||
@@ -222,6 +195,7 @@ let
|
|||||||
];
|
];
|
||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
|
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
|
||||||
|
|
||||||
@@ -289,6 +263,7 @@ let
|
|||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/{bin,lib,include}
|
mkdir -p $out/{bin,lib,include}
|
||||||
@@ -377,6 +352,7 @@ let
|
|||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/{bin,lib}
|
mkdir -p $out/{bin,lib}
|
||||||
@@ -470,7 +446,7 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
ifort-wrapper = wrapIntel rec {
|
ifort-wrapper = wrapIntel {
|
||||||
cc = intel-compiler-fortran;
|
cc = intel-compiler-fortran;
|
||||||
mygcc = gcc;
|
mygcc = gcc;
|
||||||
extraBuild = ''
|
extraBuild = ''
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1
pkgs/intel-oneapi/packages.json
Normal file
1
pkgs/intel-oneapi/packages.json
Normal file
File diff suppressed because one or more lines are too long
297
pkgs/intel-oneapi/packages.nix
Normal file
297
pkgs/intel-oneapi/packages.nix
Normal file
@@ -0,0 +1,297 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
callPackage,
|
||||||
|
dpkg,
|
||||||
|
fetchurl,
|
||||||
|
|
||||||
|
sqlite,
|
||||||
|
elfutils,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (builtins)
|
||||||
|
attrNames
|
||||||
|
attrValues
|
||||||
|
concatMap
|
||||||
|
elem
|
||||||
|
filter
|
||||||
|
fromJSON
|
||||||
|
getAttr
|
||||||
|
groupBy
|
||||||
|
head
|
||||||
|
isNull
|
||||||
|
listToAttrs
|
||||||
|
map
|
||||||
|
mapAttrs
|
||||||
|
readFile
|
||||||
|
replaceStrings
|
||||||
|
splitVersion
|
||||||
|
;
|
||||||
|
inherit (lib)
|
||||||
|
converge
|
||||||
|
findFirst
|
||||||
|
groupBy'
|
||||||
|
hasPrefix
|
||||||
|
optional
|
||||||
|
pipe
|
||||||
|
take
|
||||||
|
toInt
|
||||||
|
toList
|
||||||
|
versionAtLeast
|
||||||
|
versionOlder
|
||||||
|
;
|
||||||
|
|
||||||
|
aptData = fromJSON (readFile ./packages.json);
|
||||||
|
|
||||||
|
# Compare versions in debian control file syntax
|
||||||
|
# See: https://www.debian.org/doc/debian-policy/ch-relationships.html#syntax-of-relationship-fields
|
||||||
|
#
|
||||||
|
# NOTE: this is not a proper version comparison
|
||||||
|
#
|
||||||
|
# A proper version solver, should aggregate dependencies with the same name
|
||||||
|
# and compute the constraint (e.g. a (>= 2) a (<< 5) -> 2 <= a << 5)
|
||||||
|
#
|
||||||
|
# But in the intel repo, there are no such "duplicated" dependencies to specify
|
||||||
|
# upper limits, which leads to issues when intel-hpckit-2021 depends on things
|
||||||
|
# like intel-basekit >= 2021.1.0-2403 and we end up installing the newest
|
||||||
|
# basekit instead of the one from 2021.
|
||||||
|
#
|
||||||
|
# To mitigate this, >= is set to take the latest version with matching major
|
||||||
|
# and minor (only revision and patch are allowed to change)
|
||||||
|
compareVersions =
|
||||||
|
got: kind: want:
|
||||||
|
let
|
||||||
|
g0 = take 2 (splitVersion got);
|
||||||
|
w0 = take 2 (splitVersion want);
|
||||||
|
in
|
||||||
|
if isNull want then
|
||||||
|
true
|
||||||
|
else if kind == "=" then
|
||||||
|
got == want
|
||||||
|
else if kind == "<<" then
|
||||||
|
versionOlder got want
|
||||||
|
else if kind == "<=" then
|
||||||
|
versionAtLeast want got
|
||||||
|
else if kind == ">>" then
|
||||||
|
versionOlder want got
|
||||||
|
else if kind == ">=" then
|
||||||
|
(g0 == w0) && versionAtLeast got want # always match major version
|
||||||
|
else
|
||||||
|
throw "unknown operation: ${kind}";
|
||||||
|
|
||||||
|
findMatching =
|
||||||
|
{
|
||||||
|
pname,
|
||||||
|
kind,
|
||||||
|
version,
|
||||||
|
}:
|
||||||
|
findFirst (x: pname == x.pname && compareVersions x.version kind version) null aptData;
|
||||||
|
|
||||||
|
isIntel = pkg: (hasPrefix "intel-" pkg.pname);
|
||||||
|
|
||||||
|
expandDeps =
|
||||||
|
pkg: (map findMatching (filter isIntel pkg.dependencies)) ++ (optional (pkg.size != 0) pkg);
|
||||||
|
|
||||||
|
# get the oldest by major version. If they have the same major version, take
|
||||||
|
# the newest. This prevents most issues with resolutions
|
||||||
|
# versionOlder b a -> true if b is older than a (b `older` a)
|
||||||
|
getNewerInMajor =
|
||||||
|
a: b:
|
||||||
|
let
|
||||||
|
va = a.version;
|
||||||
|
vb = b.version;
|
||||||
|
va0 = head (splitVersion va);
|
||||||
|
vb0 = head (splitVersion vb);
|
||||||
|
in
|
||||||
|
if isNull a then
|
||||||
|
b
|
||||||
|
else if va0 != vb0 then
|
||||||
|
if va0 > vb0 then b else a
|
||||||
|
else if versionOlder vb va then
|
||||||
|
a
|
||||||
|
else
|
||||||
|
b;
|
||||||
|
removeDups = l: attrValues (groupBy' getNewerInMajor null (getAttr "provides") l);
|
||||||
|
|
||||||
|
_resolveDeps = converge (l: removeDups (concatMap expandDeps l));
|
||||||
|
resolveDeps =
|
||||||
|
pkg:
|
||||||
|
let
|
||||||
|
deps = _resolveDeps (toList pkg);
|
||||||
|
namedDeps = (map (x: "${x.pname}-${x.version}") deps);
|
||||||
|
in
|
||||||
|
builtins.traceVerbose (builtins.deepSeq namedDeps namedDeps) deps;
|
||||||
|
|
||||||
|
blacklist = [
|
||||||
|
"intel-basekit-env"
|
||||||
|
"intel-basekit-getting-started"
|
||||||
|
"intel-hpckit-env"
|
||||||
|
"intel-hpckit-getting-started"
|
||||||
|
"intel-oneapi-advisor"
|
||||||
|
"intel-oneapi-common-licensing"
|
||||||
|
"intel-oneapi-common-oneapi-vars"
|
||||||
|
"intel-oneapi-common-vars"
|
||||||
|
"intel-oneapi-compiler-cpp-eclipse-cfg"
|
||||||
|
"intel-oneapi-compiler-dpcpp-eclipse-cfg"
|
||||||
|
"intel-oneapi-condaindex"
|
||||||
|
"intel-oneapi-dev-utilities-eclipse-cfg"
|
||||||
|
"intel-oneapi-dpcpp-ct-eclipse-cfg"
|
||||||
|
"intel-oneapi-eclipse-ide"
|
||||||
|
"intel-oneapi-hpc-toolkit-getting-started"
|
||||||
|
"intel-oneapi-icc-eclipse-plugin-cpp"
|
||||||
|
"intel-oneapi-vtune"
|
||||||
|
"intel-oneapi-vtune-eclipse-plugin-vtune"
|
||||||
|
];
|
||||||
|
|
||||||
|
isInBlacklist = pkg: elem pkg.provides blacklist;
|
||||||
|
removeBlacklist = filter (e: !(isInBlacklist e));
|
||||||
|
|
||||||
|
dpkgExtractAll =
|
||||||
|
pname: version:
|
||||||
|
{ srcs, deps }:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
inherit pname version srcs;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ dpkg ];
|
||||||
|
phases = [ "installPhase" ];
|
||||||
|
|
||||||
|
passthru = { inherit deps; };
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
for src in $srcs; do
|
||||||
|
echo "Unpacking $src"
|
||||||
|
dpkg -x $src $out
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
apthost = "https://apt.repos.intel.com/oneapi/";
|
||||||
|
fetchDeb =
|
||||||
|
p:
|
||||||
|
fetchurl {
|
||||||
|
url = apthost + p.filename;
|
||||||
|
inherit (p) sha256;
|
||||||
|
};
|
||||||
|
|
||||||
|
buildIntel =
|
||||||
|
pkg:
|
||||||
|
pipe pkg [
|
||||||
|
resolveDeps
|
||||||
|
removeBlacklist
|
||||||
|
(l: {
|
||||||
|
srcs = map fetchDeb l;
|
||||||
|
deps = l;
|
||||||
|
})
|
||||||
|
(dpkgExtractAll "${pkg.provides}-extracted" pkg.version)
|
||||||
|
];
|
||||||
|
|
||||||
|
findHpcKit =
|
||||||
|
year:
|
||||||
|
findMatching {
|
||||||
|
pname = "intel-hpckit";
|
||||||
|
kind = "<<";
|
||||||
|
version = toString (year + 1);
|
||||||
|
};
|
||||||
|
years = map toInt (attrNames components);
|
||||||
|
|
||||||
|
patchIntel = callPackage ./patch_intel.nix { };
|
||||||
|
|
||||||
|
# Version information for each hpckit. This is used to normalize the paths
|
||||||
|
# so that files are in $out/{bin,lib,include...} instead of all over the place
|
||||||
|
# in $out/opt/intel/oneapi/*/*/{...}.
|
||||||
|
#
|
||||||
|
# The most important is the compiler component, which is used to build the
|
||||||
|
# stdenv for the hpckit.
|
||||||
|
#
|
||||||
|
# NOTE: this have to be manually specified, so we can avoid IFD. To add a
|
||||||
|
# new version, add a new field with an empty attrset, (e.g. "2026" = {}; ),
|
||||||
|
# build hpckit_2026.unpatched and use the values from
|
||||||
|
# result/opt/intel/oneapi/* to populate the attrset.
|
||||||
|
#
|
||||||
|
# WARN: if there are more than one version in the folders of the unpatched
|
||||||
|
# components, our dependency resolution hacks have probably failed and the
|
||||||
|
# package set may be broken.
|
||||||
|
components = {
|
||||||
|
"2025" = {
|
||||||
|
ishmem = "1.4";
|
||||||
|
pti = "0.13";
|
||||||
|
tcm = "1.4";
|
||||||
|
umf = "0.11";
|
||||||
|
|
||||||
|
ccl = "2021.16";
|
||||||
|
compiler = "2025.2";
|
||||||
|
dal = "2025.8";
|
||||||
|
debugger = "2025.2";
|
||||||
|
dev-utilities = "2025.2";
|
||||||
|
dnnl = "2025.2";
|
||||||
|
dpcpp-ct = "2025.2";
|
||||||
|
dpl = "2022.9";
|
||||||
|
ipp = "2022.2";
|
||||||
|
ippcp = "2025.2";
|
||||||
|
mkl = "2025.2";
|
||||||
|
mpi = "2021.16";
|
||||||
|
tbb = "2022.2";
|
||||||
|
};
|
||||||
|
"2024" = {
|
||||||
|
tcm = "1.1";
|
||||||
|
|
||||||
|
ccl = "2021.13";
|
||||||
|
compiler = "2024.2";
|
||||||
|
dal = "2024.6";
|
||||||
|
debugger = "2024.2";
|
||||||
|
dev-utilities = "2024.2";
|
||||||
|
diagnostics = "2024.2";
|
||||||
|
dnnl = "2024.2";
|
||||||
|
dpcpp-ct = "2024.2";
|
||||||
|
dpl = "2022.6";
|
||||||
|
ipp = "2021.12";
|
||||||
|
ippcp = "2021.12";
|
||||||
|
mkl = "2024.2";
|
||||||
|
mpi = "2021.13";
|
||||||
|
tbb = "2021.13";
|
||||||
|
|
||||||
|
extraPackages = [
|
||||||
|
sqlite
|
||||||
|
elfutils
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
replaceDots = replaceStrings [ "." ] [ "_" ];
|
||||||
|
|
||||||
|
in
|
||||||
|
lib.recurseIntoAttrs (
|
||||||
|
listToAttrs (
|
||||||
|
map (
|
||||||
|
year:
|
||||||
|
let
|
||||||
|
year_str = toString year;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = "hpckit_${year_str}";
|
||||||
|
value = patchIntel {
|
||||||
|
unpatched = buildIntel (findHpcKit year);
|
||||||
|
components = components.${year_str};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
) years
|
||||||
|
)
|
||||||
|
)
|
||||||
|
// {
|
||||||
|
apt = pipe aptData [
|
||||||
|
(groupBy (p: replaceDots p.provides))
|
||||||
|
(mapAttrs (
|
||||||
|
_: l:
|
||||||
|
listToAttrs (
|
||||||
|
map (pkg: {
|
||||||
|
name = replaceDots ("v" + pkg.version);
|
||||||
|
value = pkg;
|
||||||
|
}) l
|
||||||
|
)
|
||||||
|
))
|
||||||
|
];
|
||||||
|
|
||||||
|
inherit resolveDeps patchIntel buildIntel;
|
||||||
|
}
|
||||||
192
pkgs/intel-oneapi/patch_intel.nix
Normal file
192
pkgs/intel-oneapi/patch_intel.nix
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
stdenvNoCC,
|
||||||
|
lib,
|
||||||
|
symlinkJoin,
|
||||||
|
autoPatchelfHook,
|
||||||
|
wrapCCWith,
|
||||||
|
overrideCC,
|
||||||
|
gcc,
|
||||||
|
hwloc,
|
||||||
|
libelf,
|
||||||
|
libffi_3_3,
|
||||||
|
libpsm2,
|
||||||
|
libuuid,
|
||||||
|
libxml2,
|
||||||
|
numactl,
|
||||||
|
ocl-icd,
|
||||||
|
openssl,
|
||||||
|
python3,
|
||||||
|
rdma-core,
|
||||||
|
ucx,
|
||||||
|
zlib,
|
||||||
|
}:
|
||||||
|
|
||||||
|
lib.makeOverridable (
|
||||||
|
{
|
||||||
|
unpatched,
|
||||||
|
components ? { },
|
||||||
|
extraPackages ? components.extraPackages or [ ],
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (builtins)
|
||||||
|
attrValues
|
||||||
|
filter
|
||||||
|
mapAttrs
|
||||||
|
removeAttrs
|
||||||
|
;
|
||||||
|
|
||||||
|
__components = removeAttrs components [ "extraPackages" ];
|
||||||
|
_components = __components;
|
||||||
|
# _components = lib.traceSeqN 2 {
|
||||||
|
# inherit unpatched __components;
|
||||||
|
# deps = builtins.map (x: "${x.pname}-${x.version}") unpatched.deps;
|
||||||
|
# } __components;
|
||||||
|
|
||||||
|
wrapIntel =
|
||||||
|
cc:
|
||||||
|
let
|
||||||
|
targetConfig = stdenv.targetPlatform.config;
|
||||||
|
in
|
||||||
|
(wrapCCWith {
|
||||||
|
inherit cc;
|
||||||
|
|
||||||
|
nixSupport = {
|
||||||
|
cc-ldflags = [
|
||||||
|
"-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}"
|
||||||
|
"-L${gcc.cc.lib}/lib"
|
||||||
|
"-L${cc}/lib"
|
||||||
|
];
|
||||||
|
cc-cflags = [
|
||||||
|
"--gcc-toolchain=${gcc.cc}"
|
||||||
|
"-isystem \"${cc.original}/lib/clang/*/include\""
|
||||||
|
"-isystem ${cc}/include"
|
||||||
|
"-isystem ${cc}/include/intel64"
|
||||||
|
"-isystem ${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}/include"
|
||||||
|
];
|
||||||
|
libcxx-cxxflags = [
|
||||||
|
# "--gcc-toolchain=${gcc.cc}"
|
||||||
|
"-isystem ${gcc.cc}/include/c++/${gcc.version}"
|
||||||
|
"-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
extraBuildCommands = ''
|
||||||
|
# FIXME: We should find a better way to modify the PATH instead of using
|
||||||
|
# this ugly hack. See https://jungle.bsc.es/git/rarias/bscpkgs/issues/9
|
||||||
|
echo 'path_backup="${gcc.cc}/bin:$path_backup"' >>$out/nix-support/cc-wrapper-hook
|
||||||
|
|
||||||
|
# Disable hardening by default
|
||||||
|
echo "" > $out/nix-support/add-hardening.sh
|
||||||
|
|
||||||
|
wrap icx $wrapper $ccPath/icx
|
||||||
|
wrap icpx $wrapper $ccPath/icpx
|
||||||
|
wrap ifx $wrapper $ccPath/ifx
|
||||||
|
|
||||||
|
ln -s $out/bin/icpx $out/bin/c++
|
||||||
|
ln -s $out/bin/icx $out/bin/cc
|
||||||
|
|
||||||
|
ln -s $ccPath/sycl-ls $out/bin/sycl-ls
|
||||||
|
ln -s $ccPath/sycl-trace $out/bin/sycl-trace
|
||||||
|
|
||||||
|
sed -i 's/.*isCxx=0/isCxx=1/' $out/bin/icpx
|
||||||
|
|
||||||
|
# Use this to detect when a compiler subprocess is called
|
||||||
|
# from icpx (--fsycl-host-compiler)
|
||||||
|
echo 'export NIX_CC_WRAPPER_INTEL=1' >>$out/nix-support/cc-wrapper-hook
|
||||||
|
|
||||||
|
# oneMath looks for sycl libraries in bin/../lib
|
||||||
|
ln -s ${cc}/lib $out/lib
|
||||||
|
ln -s ${cc}/include $out/include
|
||||||
|
'';
|
||||||
|
}).overrideAttrs
|
||||||
|
(old: {
|
||||||
|
installPhase = old.installPhase + ''
|
||||||
|
export named_cc="icx"
|
||||||
|
export named_cxx="icpx"
|
||||||
|
export named_fc="ifx"
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
in
|
||||||
|
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
|
pname = lib.removeSuffix "-extracted" unpatched.pname;
|
||||||
|
inherit (unpatched) version;
|
||||||
|
src = unpatched;
|
||||||
|
|
||||||
|
phases = [
|
||||||
|
"installPhase"
|
||||||
|
"fixupPhase"
|
||||||
|
];
|
||||||
|
buildInputs = [
|
||||||
|
libffi_3_3
|
||||||
|
libelf
|
||||||
|
libxml2
|
||||||
|
hwloc
|
||||||
|
numactl
|
||||||
|
libuuid
|
||||||
|
libpsm2
|
||||||
|
zlib
|
||||||
|
ocl-icd
|
||||||
|
rdma-core
|
||||||
|
ucx
|
||||||
|
openssl
|
||||||
|
python3
|
||||||
|
stdenv.cc.cc.lib
|
||||||
|
]
|
||||||
|
++ extraPackages;
|
||||||
|
|
||||||
|
autoPatchelfIgnoreMissingDeps = [
|
||||||
|
"libhwloc.so.5"
|
||||||
|
"libcuda.so.1"
|
||||||
|
"libze_loader.so.1"
|
||||||
|
];
|
||||||
|
|
||||||
|
# There are broken symlinks that go outside packages, ignore them
|
||||||
|
dontCheckForBrokenSymlinks = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ autoPatchelfHook ];
|
||||||
|
installPhase = ''
|
||||||
|
cp -r $src/opt/intel/oneapi/ $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru =
|
||||||
|
let
|
||||||
|
pkgs = mapAttrs (
|
||||||
|
folder: version:
|
||||||
|
let
|
||||||
|
original = "${finalAttrs.finalPackage}/${folder}/${version}";
|
||||||
|
in
|
||||||
|
(symlinkJoin {
|
||||||
|
pname = "intel-${folder}";
|
||||||
|
inherit version;
|
||||||
|
paths = [ original ];
|
||||||
|
}).overrideAttrs
|
||||||
|
{ passthru = { inherit original; }; }
|
||||||
|
) _components;
|
||||||
|
in
|
||||||
|
pkgs
|
||||||
|
// {
|
||||||
|
inherit unpatched;
|
||||||
|
pkgs = lib.recurseIntoAttrs pkgs;
|
||||||
|
components = _components;
|
||||||
|
|
||||||
|
# This contains all packages properly symlinked into toplevel directories
|
||||||
|
# in $out.
|
||||||
|
#
|
||||||
|
# NOTE: there are clashes with packages that have symlinks outside their
|
||||||
|
# scope (libtcm and env/vars.sh)
|
||||||
|
all = symlinkJoin {
|
||||||
|
pname = finalAttrs.finalPackage + "-symlinked";
|
||||||
|
inherit (finalAttrs.finalPackage) version;
|
||||||
|
paths = filter lib.isDerivation (attrValues finalAttrs.finalPackage.pkgs);
|
||||||
|
};
|
||||||
|
|
||||||
|
stdenv = overrideCC stdenv finalAttrs.finalPackage.cc;
|
||||||
|
|
||||||
|
cc = wrapIntel finalAttrs.finalPackage.pkgs.compiler;
|
||||||
|
};
|
||||||
|
|
||||||
|
})
|
||||||
|
)
|
||||||
29
pkgs/intel-oneapi/process.jq
Executable file
29
pkgs/intel-oneapi/process.jq
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env -S jq -f
|
||||||
|
|
||||||
|
def extract_fields: {
|
||||||
|
pname : .Package,
|
||||||
|
version : .Version,
|
||||||
|
provides : .Package | sub("[0-9.-]*$"; ""),
|
||||||
|
filename : .Filename,
|
||||||
|
size : ."Installed-Size" | tonumber,
|
||||||
|
sha256 : .SHA256,
|
||||||
|
dependencies : .Depends,
|
||||||
|
} ;
|
||||||
|
|
||||||
|
# parses dependencies into a list of [{.pname, .kind, .version}]
|
||||||
|
# some dependencies do not have a version specified, in which case, kind = version = null
|
||||||
|
#
|
||||||
|
# example dependencies:
|
||||||
|
# intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0
|
||||||
|
|
||||||
|
def split_dependencies : map(try(.dependencies |= split(",\\s?"; "")) // .dependencies |= []) ;
|
||||||
|
|
||||||
|
def match_version : capture("(?<pname>[a-zA-Z0-9_\\-.]*) *(\\((?<kind>[<>=]*) *(?<version>.*)\\))?"; "") ;
|
||||||
|
|
||||||
|
def parse_dependencies : map_values(.dependencies.[] |= match_version) ;
|
||||||
|
|
||||||
|
def sort_version_decreasing : sort_by(.version | split("[-.]"; "") | map(tonumber)) | reverse ;
|
||||||
|
|
||||||
|
map(extract_fields) | split_dependencies | parse_dependencies | sort_version_decreasing
|
||||||
|
|
||||||
|
# [.[] | select(.pname == "intel-hpckit") | .version]
|
||||||
29
pkgs/intel-oneapi/toJson.awk
Executable file
29
pkgs/intel-oneapi/toJson.awk
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env -S awk -f
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
FS=": "
|
||||||
|
|
||||||
|
prev_empty=1
|
||||||
|
t=" "
|
||||||
|
|
||||||
|
print "[ {"
|
||||||
|
}
|
||||||
|
|
||||||
|
!NF { # empty line, update separator so next non empty line closes the dict
|
||||||
|
prev_empty=1
|
||||||
|
t="},\n{ "
|
||||||
|
next # skip line (we won't match anything else)
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
printf t "\"%s\" : \"%s\"\n", $1, $2
|
||||||
|
|
||||||
|
if (prev_empty) {
|
||||||
|
# we were the first after a group of empty lines, following ones have to
|
||||||
|
# have a comma
|
||||||
|
prev_empty=0
|
||||||
|
t=", "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
END { print "} ]" }
|
||||||
@@ -1,4 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages -o amd64-packages
|
out_64=$(mktemp intel-api.64.XXXXXX)
|
||||||
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages -o all-packages
|
out_all=$(mktemp intel-api.all.XXXXXX)
|
||||||
|
trap 'rm -f "$out_64" "$out_all"' EXIT INT HUP
|
||||||
|
|
||||||
|
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages -o "$out_64"
|
||||||
|
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages -o "$out_all"
|
||||||
|
|
||||||
|
# NOTE: we use `jq -r tostring` to minify the json (3.2Mb -> 2.3Mb)
|
||||||
|
cat "$out_64" "$out_all" | ./toJson.awk | ./process.jq | jq -r tostring >packages.json
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ in stdenv.mkDerivation {
|
|||||||
inherit (source) src version;
|
inherit (source) src version;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
CC = "clang";
|
CC = "clang";
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
, lib
|
, lib
|
||||||
, gcc
|
, gcc
|
||||||
, clangOmpss2Unwrapped
|
, clangOmpss2Unwrapped
|
||||||
|
, writeShellScript
|
||||||
, openmp ? null
|
, openmp ? null
|
||||||
, wrapCCWith
|
, wrapCCWith
|
||||||
, llvmPackages_latest
|
, llvmPackages_latest
|
||||||
@@ -37,10 +38,7 @@ let
|
|||||||
inherit gcc;
|
inherit gcc;
|
||||||
cc = clangOmpss2Unwrapped;
|
cc = clangOmpss2Unwrapped;
|
||||||
gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
|
gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
|
||||||
in wrapCCWith {
|
|
||||||
inherit cc bintools;
|
|
||||||
# extraPackages adds packages to depsTargetTargetPropagated
|
|
||||||
extraPackages = optional (openmp != null) openmp;
|
|
||||||
extraBuildCommands = ''
|
extraBuildCommands = ''
|
||||||
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
||||||
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags
|
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags
|
||||||
@@ -57,14 +55,50 @@ in wrapCCWith {
|
|||||||
echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags
|
echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags
|
||||||
|
|
||||||
wrap clang++ $wrapper $ccPath/clang++
|
wrap clang++ $wrapper $ccPath/clang++
|
||||||
|
|
||||||
'' + optionalString (openmp != null) ''
|
|
||||||
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
|
|
||||||
'' + optionalString (ompss2rt != null) ''
|
|
||||||
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
|
|
||||||
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
|
|
||||||
'' + optionalString (ompss2rt != null && ompss2rt.pname == "nodes") ''
|
|
||||||
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
|
|
||||||
'';
|
'';
|
||||||
}
|
|
||||||
|
|
||||||
|
envExports = lib.optionalString (openmp != null) ''
|
||||||
|
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
|
||||||
|
'' + optionalString (ompss2rt != null) ''
|
||||||
|
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
|
||||||
|
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
|
||||||
|
'' + optionalString (ompss2rt != null && ompss2rt.pname == "nodes") ''
|
||||||
|
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
|
||||||
|
'';
|
||||||
|
|
||||||
|
extraPackages = optional (openmp != null) openmp;
|
||||||
|
|
||||||
|
wrappedCC = wrapCCWith {
|
||||||
|
# extraPackages adds packages to depsTargetTargetPropagated
|
||||||
|
inherit cc bintools extraPackages;
|
||||||
|
extraBuildCommands = extraBuildCommands + envExports;
|
||||||
|
};
|
||||||
|
|
||||||
|
resetIntelCCFlags = let tconf = builtins.replaceStrings ["-"] ["_"] targetConfig;
|
||||||
|
in writeShellScript "remove-intel.sh" ''
|
||||||
|
if [ "''${NIX_CC_WRAPPER_INTEL:-0}" = 1 ]; then
|
||||||
|
unset NIX_CFLAGS_COMPILE_${tconf}
|
||||||
|
unset NIX_CC_WRAPPER_FLAGS_SET_${tconf}
|
||||||
|
|
||||||
|
if (( "''${NIX_DEBUG:-0}" >= 1 )); then
|
||||||
|
echo "ompss2: cleaned NIX_CFLAGS_COMPILE_${tconf} (invokation from intel compiler detected)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
intelExtraBuildCommands = ''
|
||||||
|
sed -i 's|# Flirting.*|source ${resetIntelCCFlags}\n\n&|' $out/bin/clang
|
||||||
|
sed -i 's|# Flirting.*|source ${resetIntelCCFlags}\n\n&|' $out/bin/clang++
|
||||||
|
'';
|
||||||
|
|
||||||
|
wrappedCCIntel = wrapCCWith {
|
||||||
|
inherit cc bintools extraPackages;
|
||||||
|
# extraPackages adds packages to depsTargetTargetPropagated
|
||||||
|
extraBuildCommands = intelExtraBuildCommands + envExports;
|
||||||
|
};
|
||||||
|
|
||||||
|
in wrappedCC.overrideAttrs (oldAttrs: {
|
||||||
|
passthru = oldAttrs.passthru // {
|
||||||
|
forIcpx = wrappedCCIntel;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|||||||
@@ -39,7 +39,9 @@ stdenv.mkDerivation rec {
|
|||||||
perl
|
perl
|
||||||
pkg-config
|
pkg-config
|
||||||
python3
|
python3
|
||||||
] ++ lib.optionals enableNosv [
|
];
|
||||||
|
|
||||||
|
buildInputs = lib.optionals enableNosv [
|
||||||
nosv
|
nosv
|
||||||
] ++ lib.optionals enableOvni [
|
] ++ lib.optionals enableOvni [
|
||||||
ovni
|
ovni
|
||||||
@@ -54,6 +56,7 @@ stdenv.mkDerivation rec {
|
|||||||
dontStrip = enableDebug;
|
dontStrip = enableDebug;
|
||||||
|
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DLIBOMP_OMPD_SUPPORT=OFF"
|
"-DLIBOMP_OMPD_SUPPORT=OFF"
|
||||||
@@ -71,6 +74,28 @@ stdenv.mkDerivation rec {
|
|||||||
rm -f $out/libllvmrt/libomp.*
|
rm -f $out/libllvmrt/libomp.*
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
doInstallCheck = true;
|
||||||
|
# There are not cmake flags to force nOS-V, it enables it when found through
|
||||||
|
# pkg-config. If enableNosv is set, but we fail to find it at build time,
|
||||||
|
# the build will succeed but won't use nOS-V (libompv won't be created).
|
||||||
|
# This is a sanity check to ensure that after install we have the proper
|
||||||
|
# files.
|
||||||
|
installCheckPhase =
|
||||||
|
if enableNosv then
|
||||||
|
''
|
||||||
|
test -f $out/lib/libompv.so
|
||||||
|
test -f $out/libllvmrt/libompv.so
|
||||||
|
test ! -f $out/lib/libomp.so
|
||||||
|
test ! -f $out/libllvmrt/libomp.so
|
||||||
|
''
|
||||||
|
else
|
||||||
|
''
|
||||||
|
test -f $out/lib/libomp.so
|
||||||
|
test -f $out/libllvmrt/libomp.so
|
||||||
|
test ! -f $out/lib/libompv.so
|
||||||
|
test ! -f $out/libllvmrt/libompv.so
|
||||||
|
'';
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit nosv;
|
inherit nosv;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
|
|||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
|
|
||||||
enableParallelBuilding = false;
|
enableParallelBuilding = false;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
preBuild = ''
|
preBuild = ''
|
||||||
makeFlagsArray+=(
|
makeFlagsArray+=(
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ python3Packages.buildPythonApplication {
|
|||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
build-system = with python3Packages; [
|
build-system = with python3Packages; [
|
||||||
setuptools
|
setuptools
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ in mpich.overrideAttrs (old: {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
meta = old.meta // {
|
meta = old.meta // {
|
||||||
maintainers = old.meta.maintainers ++ (with lib.maintainers.bsc; [ rarias ]);
|
maintainers = old.meta.maintainers ++ (with lib.maintainers.bsc; [ rarias ]);
|
||||||
|
|||||||
67
pkgs/nanos6/check-papi-version-with-pkgconfig.patch
Normal file
67
pkgs/nanos6/check-papi-version-with-pkgconfig.patch
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
diff --git a/m4/papi.m4 b/m4/papi.m4
|
||||||
|
--- a/m4/papi.m4
|
||||||
|
+++ b/m4/papi.m4
|
||||||
|
@@ -24,12 +24,13 @@ AC_DEFUN([AC_CHECK_PAPI],
|
||||||
|
else
|
||||||
|
PKG_CHECK_MODULES(
|
||||||
|
[papi],
|
||||||
|
- [papi],
|
||||||
|
+ [papi >= 5.6.0],
|
||||||
|
[
|
||||||
|
AC_MSG_CHECKING([the PAPI installation prefix])
|
||||||
|
AC_MSG_RESULT([retrieved from pkg-config])
|
||||||
|
papi_CPPFLAGS="${papi_CFLAGS}"
|
||||||
|
ac_use_papi=yes
|
||||||
|
+ ac_papi_version_correct=yes
|
||||||
|
], [
|
||||||
|
AC_MSG_CHECKING([the PAPI installation prefix])
|
||||||
|
AC_MSG_RESULT([not available])
|
||||||
|
@@ -67,27 +68,29 @@ AC_DEFUN([AC_CHECK_PAPI],
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x"${ac_use_papi}" = x"yes" ; then
|
||||||
|
- if test x"${ac_cv_use_papi_prefix}" != x"" ; then
|
||||||
|
- papiBinary=${ac_cv_use_papi_prefix}/bin/papi_version
|
||||||
|
- else
|
||||||
|
- papiBinary=papi_version
|
||||||
|
- fi
|
||||||
|
- papiVersion=`$papiBinary | sed 's/[[^0-9.]]*\([[0-9.]]*\).*/\1/'`
|
||||||
|
+ if test x"${ac_papi_version_correct}" != x"yes" ; then
|
||||||
|
+ if test x"${ac_cv_use_papi_prefix}" != x"" ; then
|
||||||
|
+ papiBinary=${ac_cv_use_papi_prefix}/bin/papi_version
|
||||||
|
+ else
|
||||||
|
+ papiBinary=papi_version
|
||||||
|
+ fi
|
||||||
|
+ papiVersion=`$papiBinary | sed 's/[[^0-9.]]*\([[0-9.]]*\).*/\1/'`
|
||||||
|
|
||||||
|
- AX_COMPARE_VERSION(
|
||||||
|
- [[${papiVersion}]],
|
||||||
|
- [[ge]],
|
||||||
|
- [[5.6.0]],
|
||||||
|
- [[ac_papi_version_correct=yes]],
|
||||||
|
- [[ac_papi_version_correct=no]]
|
||||||
|
- )
|
||||||
|
+ AX_COMPARE_VERSION(
|
||||||
|
+ [[${papiVersion}]],
|
||||||
|
+ [[ge]],
|
||||||
|
+ [[5.6.0]],
|
||||||
|
+ [[ac_papi_version_correct=yes]],
|
||||||
|
+ [[ac_papi_version_correct=no]]
|
||||||
|
+ )
|
||||||
|
|
||||||
|
- if test x"${ac_papi_version_correct}" != x"yes" ; then
|
||||||
|
- AC_MSG_ERROR([PAPI version must be >= 5.6.0.])
|
||||||
|
- ac_use_papi=no
|
||||||
|
- else
|
||||||
|
- AC_MSG_CHECKING([if the PAPI version >= 5.6.0.])
|
||||||
|
- AC_MSG_RESULT([${ac_papi_version_correct}])
|
||||||
|
+ if test x"${ac_papi_version_correct}" != x"yes" ; then
|
||||||
|
+ AC_MSG_ERROR([PAPI version must be >= 5.6.0.])
|
||||||
|
+ ac_use_papi=no
|
||||||
|
+ else
|
||||||
|
+ AC_MSG_CHECKING([if the PAPI version >= 5.6.0.])
|
||||||
|
+ AC_MSG_RESULT([${ac_papi_version_correct}])
|
||||||
|
+ fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
, jemallocNanos6 ? null
|
, jemallocNanos6 ? null
|
||||||
, cachelineBytes ? 64
|
, cachelineBytes ? 64
|
||||||
, enableGlibcxxDebug ? false
|
, enableGlibcxxDebug ? false
|
||||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
, enablePapi ? true
|
||||||
, useGit ? false
|
, useGit ? false
|
||||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
|
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
|
||||||
, gitBranch ? "master"
|
, gitBranch ? "master"
|
||||||
@@ -95,16 +95,15 @@ in
|
|||||||
dontStrip = enableDebug;
|
dontStrip = enableDebug;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
patches = [ ./check-papi-version-with-pkgconfig.patch ];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoconf
|
autoconf
|
||||||
automake
|
automake
|
||||||
libtool
|
libtool
|
||||||
pkg-config
|
pkg-config
|
||||||
|
];
|
||||||
# TODO: papi_version is needed for configure:
|
|
||||||
# ./configure: line 27378: papi_version: command not found
|
|
||||||
# This probably breaks cross-compilation
|
|
||||||
] ++ lib.optionals enablePapi [ papi ];
|
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
boost
|
boost
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ stdenv.mkDerivation {
|
|||||||
version = "0.0.1";
|
version = "0.0.1";
|
||||||
src = ./nixgen;
|
src = ./nixgen;
|
||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
|
strictDeps = true;
|
||||||
phases = [ "installPhase" ];
|
phases = [ "installPhase" ];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
|
|||||||
makeFlags = [ "DESTDIR=$(out)" ];
|
makeFlags = [ "DESTDIR=$(out)" ];
|
||||||
preBuild = "env";
|
preBuild = "env";
|
||||||
dontPatchShebangs = true;
|
dontPatchShebangs = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "https://gitlab.pm.bsc.es/rarias/nixtools";
|
homepage = "https://gitlab.pm.bsc.es/rarias/nixtools";
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ in
|
|||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--with-nosv=${nosv}"
|
"--with-nosv=${nosv}"
|
||||||
|
|||||||
68
pkgs/nosv/check-papi-version-with-pkgconfig.patch
Normal file
68
pkgs/nosv/check-papi-version-with-pkgconfig.patch
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
diff --git a/m4/papi.m4 b/m4/papi.m4
|
||||||
|
index de905848..fa3db9a1 100644
|
||||||
|
--- a/m4/papi.m4
|
||||||
|
+++ b/m4/papi.m4
|
||||||
|
@@ -24,12 +24,13 @@ AC_DEFUN([AC_CHECK_PAPI],
|
||||||
|
else
|
||||||
|
PKG_CHECK_MODULES(
|
||||||
|
[papi],
|
||||||
|
- [papi],
|
||||||
|
+ [papi >= 5.6.0],
|
||||||
|
[
|
||||||
|
AC_MSG_CHECKING([the PAPI installation prefix])
|
||||||
|
AC_MSG_RESULT([retrieved from pkg-config])
|
||||||
|
papi_CFLAGS="${papi_CFLAGS}"
|
||||||
|
ac_use_papi=yes
|
||||||
|
+ ac_papi_version_correct=yes
|
||||||
|
], [
|
||||||
|
AC_MSG_CHECKING([the PAPI installation prefix])
|
||||||
|
AC_MSG_RESULT([not available])
|
||||||
|
@@ -67,27 +68,29 @@ AC_DEFUN([AC_CHECK_PAPI],
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x"${ac_use_papi}" = x"yes" ; then
|
||||||
|
- if test x"${ac_cv_use_papi_prefix}" != x"" ; then
|
||||||
|
- papiBinary=${ac_cv_use_papi_prefix}/bin/papi_version
|
||||||
|
- else
|
||||||
|
- papiBinary=papi_version
|
||||||
|
- fi
|
||||||
|
- papiVersion=`$papiBinary | sed 's/[[^0-9.]]*\([[0-9.]]*\).*/\1/'`
|
||||||
|
+ if test x"${ac_papi_version_correct}" != x"yes" ; then
|
||||||
|
+ if test x"${ac_cv_use_papi_prefix}" != x"" ; then
|
||||||
|
+ papiBinary=${ac_cv_use_papi_prefix}/bin/papi_version
|
||||||
|
+ else
|
||||||
|
+ papiBinary=papi_version
|
||||||
|
+ fi
|
||||||
|
+ papiVersion=`$papiBinary | sed 's/[[^0-9.]]*\([[0-9.]]*\).*/\1/'`
|
||||||
|
|
||||||
|
- AX_COMPARE_VERSION(
|
||||||
|
- [[${papiVersion}]],
|
||||||
|
- [[ge]],
|
||||||
|
- [[5.6.0]],
|
||||||
|
- [[ac_papi_version_correct=yes]],
|
||||||
|
- [[ac_papi_version_correct=no]]
|
||||||
|
- )
|
||||||
|
+ AX_COMPARE_VERSION(
|
||||||
|
+ [[${papiVersion}]],
|
||||||
|
+ [[ge]],
|
||||||
|
+ [[5.6.0]],
|
||||||
|
+ [[ac_papi_version_correct=yes]],
|
||||||
|
+ [[ac_papi_version_correct=no]]
|
||||||
|
+ )
|
||||||
|
|
||||||
|
- if test x"${ac_papi_version_correct}" != x"yes" ; then
|
||||||
|
- AC_MSG_ERROR([PAPI version must be >= 5.6.0.])
|
||||||
|
- ac_use_papi=no
|
||||||
|
- else
|
||||||
|
- AC_MSG_CHECKING([if the PAPI version >= 5.6.0.])
|
||||||
|
- AC_MSG_RESULT([${ac_papi_version_correct}])
|
||||||
|
+ if test x"${ac_papi_version_correct}" != x"yes" ; then
|
||||||
|
+ AC_MSG_ERROR([PAPI version must be >= 5.6.0.])
|
||||||
|
+ ac_use_papi=no
|
||||||
|
+ else
|
||||||
|
+ AC_MSG_CHECKING([if the PAPI version >= 5.6.0.])
|
||||||
|
+ AC_MSG_RESULT([${ac_papi_version_correct}])
|
||||||
|
+ fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
, numactl
|
, numactl
|
||||||
, hwloc
|
, hwloc
|
||||||
, papi
|
, papi
|
||||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
, enablePapi ? true
|
||||||
, cacheline ? 64 # bits
|
, cacheline ? 64 # bits
|
||||||
, ovni ? null
|
, ovni ? null
|
||||||
, useGit ? false
|
, useGit ? false
|
||||||
@@ -40,12 +40,14 @@ let
|
|||||||
|
|
||||||
source = if (useGit) then git else release;
|
source = if (useGit) then git else release;
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation {
|
||||||
pname = "nosv";
|
pname = "nosv";
|
||||||
inherit (source) src version;
|
inherit (source) src version;
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
|
strictDeps = true;
|
||||||
|
patches = [ ./check-papi-version-with-pkgconfig.patch ];
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--with-ovni=${ovni}"
|
"--with-ovni=${ovni}"
|
||||||
"CACHELINE_WIDTH=${toString cacheline}"
|
"CACHELINE_WIDTH=${toString cacheline}"
|
||||||
|
|||||||
91
pkgs/onemath/default.nix
Normal file
91
pkgs/onemath/default.nix
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
fetchFromGitHub,
|
||||||
|
cmake,
|
||||||
|
withCFlags,
|
||||||
|
intelPackages,
|
||||||
|
|
||||||
|
mklSupport ? true,
|
||||||
|
|
||||||
|
config,
|
||||||
|
|
||||||
|
cudaSupport ? config.cudaSupport,
|
||||||
|
cudaPackages ? { },
|
||||||
|
|
||||||
|
rocmSupport ? config.rocmSupport,
|
||||||
|
hipTargets ? null, # only one target at a time supported
|
||||||
|
rocmPackages ? { },
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
# rocmSupport is not enough, we need a specific target
|
||||||
|
enableHip = rocmSupport && hipTargets != null;
|
||||||
|
|
||||||
|
stdenv = withCFlags (lib.optionals cudaSupport [
|
||||||
|
"--cuda-path=${cudaPackages.cudatoolkit}"
|
||||||
|
]) intelPackages.stdenv;
|
||||||
|
in
|
||||||
|
|
||||||
|
# at least one backend has to be enabled
|
||||||
|
assert mklSupport || cudaSupport || enableHip;
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "oneMath";
|
||||||
|
version = "0.8";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "uxlfoundation";
|
||||||
|
repo = "oneMath";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "sha256-xK8lKI3oqKlx3xtvdScpMq+HXAuoYCP0BZdkEqnJP5o=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
(lib.cmakeBool "ENABLE_MKLCPU_BACKEND" mklSupport)
|
||||||
|
(lib.cmakeBool "ENABLE_MKLGPU_BACKEND" mklSupport)
|
||||||
|
|
||||||
|
(lib.cmakeBool "ENABLE_CUBLAS_BACKEND" cudaSupport)
|
||||||
|
(lib.cmakeBool "ENABLE_CUFFT_BACKEND" cudaSupport)
|
||||||
|
(lib.cmakeBool "ENABLE_CURAND_BACKEND" cudaSupport)
|
||||||
|
(lib.cmakeBool "ENABLE_CUSOLVER_BACKEND" cudaSupport)
|
||||||
|
(lib.cmakeBool "ENABLE_CUSPARSE_BACKEND" cudaSupport)
|
||||||
|
|
||||||
|
(lib.cmakeBool "ENABLE_ROCBLAS_BACKEND" enableHip)
|
||||||
|
(lib.cmakeBool "ENABLE_ROCFFT_BACKEND" enableHip)
|
||||||
|
(lib.cmakeBool "ENABLE_ROCSOLVER_BACKEND" enableHip)
|
||||||
|
(lib.cmakeBool "ENABLE_ROCRAND_BACKEND" enableHip)
|
||||||
|
(lib.cmakeBool "ENABLE_ROCSPARSE_BACKEND" enableHip)
|
||||||
|
|
||||||
|
(lib.cmakeBool "BUILD_FUNCTIONAL_TESTS" false)
|
||||||
|
(lib.cmakeBool "BUILD_EXAMPLES" false)
|
||||||
|
]
|
||||||
|
++ lib.optionals enableHip [
|
||||||
|
(lib.cmakeFeature "HIP_TARGETS" hipTargets)
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake ];
|
||||||
|
buildInputs =
|
||||||
|
lib.optionals (mklSupport) [
|
||||||
|
intelPackages.mkl
|
||||||
|
intelPackages.tbb
|
||||||
|
]
|
||||||
|
++ lib.optionals (enableHip) [
|
||||||
|
rocmPackages.rocmPath
|
||||||
|
rocmPackages.rocblas
|
||||||
|
rocmPackages.rocfft
|
||||||
|
rocmPackages.rocsolver
|
||||||
|
rocmPackages.rocrand
|
||||||
|
rocmPackages.rocsparse
|
||||||
|
]
|
||||||
|
++ lib.optionals (cudaSupport) [
|
||||||
|
(lib.getDev cudaPackages.cuda_cudart)
|
||||||
|
cudaPackages.cudatoolkit
|
||||||
|
|
||||||
|
cudaPackages.libcublas
|
||||||
|
cudaPackages.libcurand
|
||||||
|
cudaPackages.libcufft
|
||||||
|
cudaPackages.libcusparse
|
||||||
|
cudaPackages.libcusolver
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
strictDeps = true;
|
||||||
nativeBuildInputs = [ mpiAll ];
|
nativeBuildInputs = [ mpiAll ];
|
||||||
buildInputs = [ mpiAll ];
|
buildInputs = [ mpiAll ];
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ in
|
|||||||
inherit (source) src version;
|
inherit (source) src version;
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
|
strictDeps = true;
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs --build test/
|
patchShebangs --build test/
|
||||||
'';
|
'';
|
||||||
|
|||||||
22
pkgs/papi/default.nix
Normal file
22
pkgs/papi/default.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
papi,
|
||||||
|
}:
|
||||||
|
|
||||||
|
if stdenv.hostPlatform == stdenv.buildPlatform then
|
||||||
|
papi
|
||||||
|
else
|
||||||
|
papi.overrideAttrs (old: {
|
||||||
|
configureFlags = (old.configureFlags or [ ]) ++ [
|
||||||
|
"--enable-perf_event_uncore=no"
|
||||||
|
"--with-sysdetect=no"
|
||||||
|
"--with-ffsll"
|
||||||
|
"--with-tls=__thread"
|
||||||
|
"--with-virtualtimer=clock_thread_cputime_id"
|
||||||
|
"--with-walltimer=clock_realtime"
|
||||||
|
"--with-perf-events"
|
||||||
|
"--with-CPU=${stdenv.hostPlatform.uname.processor}"
|
||||||
|
"--with-arch=${stdenv.hostPlatform.uname.processor}"
|
||||||
|
];
|
||||||
|
patches = (old.patches or [ ]) ++ [ ./fix-ar-cross.patch ];
|
||||||
|
})
|
||||||
19
pkgs/papi/fix-ar-cross.patch
Normal file
19
pkgs/papi/fix-ar-cross.patch
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
diff --git a/sde_lib/Makefile b/sde_lib/Makefile
|
||||||
|
index 8518f92..90a9953 100644
|
||||||
|
--- a/sde_lib/Makefile
|
||||||
|
+++ b/sde_lib/Makefile
|
||||||
|
@@ -1,4 +1,5 @@
|
||||||
|
CC ?= gcc
|
||||||
|
+AR ?= ar
|
||||||
|
SDE_INC = -I. -I..
|
||||||
|
SDE_LD = -ldl -pthread
|
||||||
|
CFLAGS += -Wextra -Wall -O2
|
||||||
|
@@ -18,7 +19,7 @@ dynamic: $(DOBJS)
|
||||||
|
rm -f *_d.o
|
||||||
|
|
||||||
|
static: $(SOBJS)
|
||||||
|
- ar rs libsde.a $(SOBJS)
|
||||||
|
+ $(AR) rs libsde.a $(SOBJS)
|
||||||
|
rm -f *_s.o
|
||||||
|
|
||||||
|
clean:
|
||||||
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export CFLAGS="-O3"
|
export CFLAGS="-O3"
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
|
|||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
export CFLAGS="-O3 -DPARALLEL_ENABLED"
|
export CFLAGS="-O3 -DPARALLEL_ENABLED"
|
||||||
|
|||||||
47
pkgs/pertalde/default.nix
Normal file
47
pkgs/pertalde/default.nix
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
python3,
|
||||||
|
fetchPypi,
|
||||||
|
cargo,
|
||||||
|
rustPlatform,
|
||||||
|
rustc,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
pname = "pertalde";
|
||||||
|
version = "0.1.4";
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit pname version;
|
||||||
|
hash = "sha256-KdS5yNYR+8z81hMBTl9oNiLi17cVLyoZBNNR88T/gOY=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
python3.pkgs.buildPythonApplication {
|
||||||
|
inherit pname version src;
|
||||||
|
pyproject = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||||
|
inherit src;
|
||||||
|
name = "${pname}-${version}";
|
||||||
|
hash = "sha256-dQ8EKlYZq+Urtb+0zxRi/Vh/ormIGCNKHy/9entyb7g=";
|
||||||
|
};
|
||||||
|
|
||||||
|
# error[E0554]: `#![feature]` may not be used on the stable release channel
|
||||||
|
env.RUSTC_BOOTSTRAP = true;
|
||||||
|
|
||||||
|
build-system = [
|
||||||
|
cargo
|
||||||
|
rustPlatform.cargoSetupHook
|
||||||
|
rustPlatform.maturinBuildHook
|
||||||
|
rustc
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Some command-line utilities on paraver traces";
|
||||||
|
homepage = "https://pypi.org/project/pertalde/";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
maintainers = with lib.maintainers.bsc; [ abonerib ];
|
||||||
|
mainProgram = "ptd";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -14,8 +14,6 @@
|
|||||||
python3,
|
python3,
|
||||||
writableTmpDirAsHomeHook,
|
writableTmpDirAsHomeHook,
|
||||||
writeText,
|
writeText,
|
||||||
runCommand,
|
|
||||||
opencl-cts,
|
|
||||||
|
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
|
|
||||||
@@ -203,38 +201,12 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
''
|
''
|
||||||
);
|
);
|
||||||
|
|
||||||
passthru =
|
passthru = {
|
||||||
let
|
updateScript = nix-update-script { };
|
||||||
self = finalAttrs.finalPackage;
|
git = finalAttrs.finalPackage.override { useGit = true; };
|
||||||
in
|
test = finalAttrs.finalPackage.overrideAttrs { doCheck = true; };
|
||||||
{
|
withICD = enableICD;
|
||||||
updateScript = nix-update-script { };
|
};
|
||||||
git = self.override { useGit = true; };
|
|
||||||
|
|
||||||
withICD = enableICD;
|
|
||||||
|
|
||||||
test = {
|
|
||||||
# Run builtin tests (causes a rebuild)
|
|
||||||
self = self.overrideAttrs { doCheck = true; };
|
|
||||||
|
|
||||||
# Run basic test from Khronos OpenCL Conformance Test Suite
|
|
||||||
# WARN: despite its name, test_basic is very exhaustive, and can take more
|
|
||||||
# than 1 hour in a marenostrum5 node.
|
|
||||||
cts =
|
|
||||||
assert enableICD;
|
|
||||||
lib.genAttrs [ "api" "basic" "c11_atomics" "printf" "svm" ] (
|
|
||||||
name:
|
|
||||||
runCommand "pocl-cts-test_${name}" {
|
|
||||||
nativeBuildInputs = [ self ];
|
|
||||||
requiredSystemFeatures = [ "sys-devices" ];
|
|
||||||
env = {
|
|
||||||
POCL_DEBUG = "error,warn";
|
|
||||||
POCL_CACHE_DIR = "/build/pocl_cache";
|
|
||||||
};
|
|
||||||
} "${opencl-cts}/bin/Release/test_${name} | tee $out"
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
env.HWLOC_SYNTHETIC = lib.optionalDrvAttr enableHWLOC "node:1 core:1 pu:1";
|
env.HWLOC_SYNTHETIC = lib.optionalDrvAttr enableHWLOC "node:1 core:1 pu:1";
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ buildGoModule rec {
|
|||||||
|
|
||||||
vendorHash = "sha256-A1dd9T9SIEHDCiVT2UwV6T02BSLh9ej6LC/2l54hgwI=";
|
vendorHash = "sha256-A1dd9T9SIEHDCiVT2UwV6T02BSLh9ej6LC/2l54hgwI=";
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Prometheus SLURM Exporter";
|
description = "Prometheus SLURM Exporter";
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
strictDeps = true;
|
||||||
configureFlags = [ "--with-ovni=${ovni}" ];
|
configureFlags = [ "--with-ovni=${ovni}" ];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
backendStdenv,
|
stdenv,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
automake,
|
automake,
|
||||||
autoconf,
|
autoconf,
|
||||||
@@ -7,9 +7,7 @@
|
|||||||
gnumake,
|
gnumake,
|
||||||
autoreconfHook,
|
autoreconfHook,
|
||||||
boost,
|
boost,
|
||||||
cudatoolkit,
|
cudaPackages,
|
||||||
libcublas,
|
|
||||||
cuda_cudart,
|
|
||||||
|
|
||||||
useGit ? false,
|
useGit ? false,
|
||||||
gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tacuda/tacuda.git",
|
gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tacuda/tacuda.git",
|
||||||
@@ -43,13 +41,12 @@ let
|
|||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
backendStdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "tacuda";
|
pname = "tacuda";
|
||||||
inherit (source) src version;
|
inherit (source) src version;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
strictDeps = true;
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoreconfHook
|
autoreconfHook
|
||||||
@@ -61,12 +58,12 @@ backendStdenv.mkDerivation {
|
|||||||
|
|
||||||
patches = [ ./fix_config.patch ];
|
patches = [ ./fix_config.patch ];
|
||||||
|
|
||||||
configureFlags = [ "--with-cuda-include=${cudatoolkit}/include" ];
|
configureFlags = [ "--with-cuda-include=${cudaPackages.cudatoolkit}/include" ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
boost
|
boost
|
||||||
libcublas
|
cudaPackages.libcublas
|
||||||
cuda_cudart
|
cudaPackages.cuda_cudart
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
|
|||||||
pname = "tagaspi";
|
pname = "tagaspi";
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
version = "2.0";
|
version = "2.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ in stdenv.mkDerivation {
|
|||||||
inherit (source) src version;
|
inherit (source) src version;
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
separateDebugInfo = true;
|
separateDebugInfo = true;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
autoconf
|
autoconf
|
||||||
|
|||||||
87
pkgs/tasycl/default.nix
Normal file
87
pkgs/tasycl/default.nix
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
autoconf,
|
||||||
|
automake,
|
||||||
|
autoreconfHook,
|
||||||
|
boost,
|
||||||
|
fetchFromGitHub,
|
||||||
|
gnumake,
|
||||||
|
libtool,
|
||||||
|
withCFlags,
|
||||||
|
|
||||||
|
useIntel ? true,
|
||||||
|
adaptivecpp ? null,
|
||||||
|
intelPackages ? null,
|
||||||
|
|
||||||
|
useGit ? false,
|
||||||
|
gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tasycl/tasycl.git",
|
||||||
|
gitBranch ? "main",
|
||||||
|
gitCommit ? "78f98dcf60a66e0eaa3b4ebcf55be076bec64825",
|
||||||
|
}:
|
||||||
|
|
||||||
|
assert !useIntel -> adaptivecpp != null;
|
||||||
|
assert useIntel -> intelPackages != null;
|
||||||
|
|
||||||
|
let
|
||||||
|
variant = if useIntel then "intel" else "acpp";
|
||||||
|
|
||||||
|
syclStdenv = withCFlags [ "-O3" ] (if useIntel then intelPackages.stdenv else stdenv);
|
||||||
|
|
||||||
|
release = rec {
|
||||||
|
version = "2.1.0";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "bsc-pm";
|
||||||
|
repo = "tasycl";
|
||||||
|
rev = version;
|
||||||
|
hash = "sha256-0kXnb0lHeQNHR27GTLbJ8xbiICLU8k2+FqEnnFSrzzo=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
git = rec {
|
||||||
|
version = src.shortRev;
|
||||||
|
src = builtins.fetchGit {
|
||||||
|
url = gitUrl;
|
||||||
|
ref = gitBranch;
|
||||||
|
rev = gitCommit;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
source = if (useGit) then git else release;
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
syclStdenv.mkDerivation {
|
||||||
|
pname = "tasycl-${variant}";
|
||||||
|
inherit (source) src version;
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
separateDebugInfo = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoreconfHook
|
||||||
|
automake
|
||||||
|
autoconf
|
||||||
|
libtool
|
||||||
|
gnumake
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
boost
|
||||||
|
];
|
||||||
|
|
||||||
|
configureFlags = lib.optionals (!useIntel) [
|
||||||
|
"CXX=${lib.getExe adaptivecpp}"
|
||||||
|
];
|
||||||
|
|
||||||
|
# add symlinks so we can explicitly link with tasycl-intel / tasycl-acpp
|
||||||
|
postInstall = ''
|
||||||
|
pushd $out/lib
|
||||||
|
for i in libtasycl* ; do
|
||||||
|
ln -s "$i" "''\${i/tasycl/tasycl-${variant}}"
|
||||||
|
done
|
||||||
|
popd
|
||||||
|
'';
|
||||||
|
|
||||||
|
hardeningDisable = [ "all" ];
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ python3Packages.buildPythonApplication {
|
|||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
build-system = with python3Packages; [
|
build-system = with python3Packages; [
|
||||||
setuptools
|
setuptools
|
||||||
|
|||||||
@@ -23,9 +23,6 @@ in stdenv.mkDerivation {
|
|||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
dontConfigure = true;
|
dontConfigure = true;
|
||||||
|
|
||||||
# nOS-V requires access to /sys/devices to request NUMA information
|
|
||||||
requiredSystemFeatures = [ "sys-devices" ];
|
|
||||||
|
|
||||||
buildInputs = [ openmp ];
|
buildInputs = [ openmp ];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
|
|||||||
79
test/compilers/hello-sycl.nix
Normal file
79
test/compilers/hello-sycl.nix
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
intelPackages,
|
||||||
|
writeText,
|
||||||
|
strace,
|
||||||
|
pocl,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
stdenv = intelPackages.stdenv;
|
||||||
|
hello_sycl = writeText "hello.cpp" ''
|
||||||
|
#include <sycl/sycl.hpp>
|
||||||
|
|
||||||
|
class hello_world;
|
||||||
|
|
||||||
|
int main(int argc, char** argv) try {
|
||||||
|
auto device_selector = sycl::default_selector_v;
|
||||||
|
|
||||||
|
sycl::queue queue(device_selector);
|
||||||
|
|
||||||
|
std::cout << "Running on: "
|
||||||
|
<< queue.get_device().get_info<sycl::info::device::name>()
|
||||||
|
<< std::endl;
|
||||||
|
|
||||||
|
queue.submit([&] (sycl::handler& cgh) {
|
||||||
|
auto os = sycl::stream{128, 128, cgh};
|
||||||
|
cgh.single_task<hello_world>([=]() {
|
||||||
|
os << "Hello World! (on device)\n";
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
} catch (sycl::exception &e) {
|
||||||
|
std::cout << "SYCL exception: " << e.what() << std::endl;
|
||||||
|
return 0; // we excpect to fail since no devices should be available;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
version = "0.0.1";
|
||||||
|
name = "hello-sycl";
|
||||||
|
nativeBuildInputs = [
|
||||||
|
stdenv
|
||||||
|
strace
|
||||||
|
];
|
||||||
|
src = hello_sycl;
|
||||||
|
dontUnpack = true;
|
||||||
|
dontConfigure = true;
|
||||||
|
NIX_DEBUG = 0;
|
||||||
|
buildPhase = ''
|
||||||
|
cp $src hello.cpp
|
||||||
|
set -x
|
||||||
|
echo CXX=$CXX
|
||||||
|
command -v $CXX
|
||||||
|
$CXX -fsycl hello.cpp -o hello
|
||||||
|
./hello | tee test-output
|
||||||
|
set +x
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
cp test-output $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.withPocl = finalAttrs.finalPackage.overrideAttrs (old: {
|
||||||
|
nativeBuildInputs = old.nativeBuildInputs ++ [ pocl ];
|
||||||
|
env = (old.env or { }) // {
|
||||||
|
POCL_DEBUG = "error,warn";
|
||||||
|
POCL_CACHE_DIR = "/build/pocl_cache";
|
||||||
|
|
||||||
|
# Make PoCL report Intel vendor id so oneapi SYCL works
|
||||||
|
POCL_DRIVER_VERSION_OVERRIDE = "2024.18.6.0.02_160000";
|
||||||
|
POCL_CPU_VENDOR_ID_OVERRIDE = 32902;
|
||||||
|
};
|
||||||
|
doInstallCheck = true;
|
||||||
|
installCheckPhase = ''
|
||||||
|
grep "Hello World! (on device)" $out
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
})
|
||||||
98
test/compilers/icpx-ompss2.nix
Normal file
98
test/compilers/icpx-ompss2.nix
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
{
|
||||||
|
writeText,
|
||||||
|
intelPackages,
|
||||||
|
nodes,
|
||||||
|
nosv,
|
||||||
|
clangOmpss2Nodes,
|
||||||
|
strace,
|
||||||
|
pocl,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
hello_cpp = writeText "hello.cpp" ''
|
||||||
|
#include <cstdio>
|
||||||
|
#include <sycl/sycl.hpp>
|
||||||
|
|
||||||
|
int main(int argc, char** argv) try {
|
||||||
|
sycl::queue queue;
|
||||||
|
|
||||||
|
std::cout << "Running on: "
|
||||||
|
<< queue.get_device().get_info<sycl::info::device::name>()
|
||||||
|
<< std::endl;
|
||||||
|
|
||||||
|
#pragma oss task
|
||||||
|
queue.submit([&] (sycl::handler& cgh) {
|
||||||
|
auto os = sycl::stream{128, 128, cgh};
|
||||||
|
cgh.single_task<class hello_world>([=]() {
|
||||||
|
os << "Hello World! (on device)\n";
|
||||||
|
});
|
||||||
|
}).wait();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
} catch (sycl::exception &e) {
|
||||||
|
std::cout << "SYCL exception: " << e.what() << std::endl;
|
||||||
|
return 0; // we expect to fail since no devices should be available;
|
||||||
|
}
|
||||||
|
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
|
||||||
|
intelPackages.stdenv.mkDerivation (finalAttrs: {
|
||||||
|
version = "0.0.1";
|
||||||
|
name = "hello-syclompss";
|
||||||
|
|
||||||
|
src = hello_cpp;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
strace
|
||||||
|
nodes
|
||||||
|
nosv
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru.withPocl = finalAttrs.finalPackage.overrideAttrs (old: {
|
||||||
|
nativeBuildInputs = old.nativeBuildInputs ++ [ pocl ];
|
||||||
|
env = (old.env or { }) // {
|
||||||
|
POCL_DEBUG = "error,warn";
|
||||||
|
POCL_CACHE_DIR = "/build/pocl_cache";
|
||||||
|
|
||||||
|
# Make PoCL report Intel vendor id so oneapi SYCL works
|
||||||
|
POCL_DRIVER_VERSION_OVERRIDE = "2024.18.6.0.02_160000";
|
||||||
|
POCL_CPU_VENDOR_ID_OVERRIDE = 32902;
|
||||||
|
};
|
||||||
|
doInstallCheck = true;
|
||||||
|
installCheckPhase = ''
|
||||||
|
grep "Hello World! (on device)" $out
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
dontConfigure = true;
|
||||||
|
|
||||||
|
# NODES requires access to /sys/devices to request NUMA information
|
||||||
|
requiredSystemFeatures = [ "sys-devices" ];
|
||||||
|
|
||||||
|
env.NODES_HOME = nodes;
|
||||||
|
|
||||||
|
NIX_DEBUG = 1;
|
||||||
|
buildPhase = ''
|
||||||
|
cp $src hello.cpp
|
||||||
|
set -x
|
||||||
|
echo CXX=$CXX
|
||||||
|
echo NODES_HOME=$NODES_HOME
|
||||||
|
command -v $CXX
|
||||||
|
|
||||||
|
icpx -Wno-deprecated-declarations -fsycl \
|
||||||
|
-fsycl-host-compiler=${clangOmpss2Nodes.forIcpx}/bin/clang++ \
|
||||||
|
-fsycl-host-compiler-options='-Wno-deprecated-declarations -fompss-2=libnodes' \
|
||||||
|
-lnodes -lnosv \
|
||||||
|
$NODES_HOME/lib/nodes-main-wrapper.o \
|
||||||
|
hello.cpp -o hello
|
||||||
|
|
||||||
|
./hello | tee test-output
|
||||||
|
set +x
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
cp test-output $out
|
||||||
|
'';
|
||||||
|
})
|
||||||
31
test/compilers/opencl-run.nix
Normal file
31
test/compilers/opencl-run.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
clang-ompss2,
|
||||||
|
nanos6,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
version = "0.0.1";
|
||||||
|
name = "test-clang-ompss2";
|
||||||
|
src = ./.;
|
||||||
|
buildInputs = [
|
||||||
|
clang-ompss2
|
||||||
|
nanos6
|
||||||
|
];
|
||||||
|
|
||||||
|
env = {
|
||||||
|
# NIX_DEBUG = 1;
|
||||||
|
OCL_ICD_VENDORS = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
clang -fompss-2 hello.c -o hello
|
||||||
|
./hello
|
||||||
|
clang++ -fompss-2 hello.cc -o hello
|
||||||
|
./hello
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
'';
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user