Compare commits
26 Commits
pkgs/tasyc
...
1cb632a170
| Author | SHA1 | Date | |
|---|---|---|---|
| 1cb632a170 | |||
| bf60539b7d | |||
| b711d4708d | |||
|
7c82b37d0b
|
|||
|
2f85eec97c
|
|||
|
254c6bcc65
|
|||
|
308625ab2d
|
|||
|
48124ac208
|
|||
|
3830f8b14e
|
|||
|
8aed1c7d8a
|
|||
|
d5641b34c5
|
|||
| fcfee6c674 | |||
| d0e944d05c | |||
| 4a6e36c7e9 | |||
| 14fe50fc2a | |||
| 178afc667e | |||
| 596bf121a6 | |||
| 1a8549064b | |||
| 54e9f0a561 | |||
| e8702f49c3 | |||
| c81813b0f8 | |||
| 81114d55b8 | |||
| f4bb3e7c17 | |||
| c80a855627 | |||
| e9a3a5ecc7 | |||
| 272185d9b7 |
@@ -20,7 +20,7 @@
|
||||
address = "10.0.40.1";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
interfaces.ibs785.ipv4.addresses = [ {
|
||||
interfaces.ibp5s0.ipv4.addresses = [ {
|
||||
address = "10.0.42.1";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
# Watch out! The OmniPath device is not in the same place here:
|
||||
interfaces.ibs801.ipv4.addresses = [ {
|
||||
interfaces.ibp129s0.ipv4.addresses = [ {
|
||||
address = "10.0.42.2";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
|
||||
25
overlay.nix
25
overlay.nix
@@ -19,11 +19,7 @@ let
|
||||
cudainfo = prev.callPackage ./pkgs/cudainfo/default.nix { };
|
||||
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
|
||||
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_2024 = final.intel-apt.hpckit_2024;
|
||||
intelPackages_2025 = final.intel-apt.hpckit_2025;
|
||||
intelPackages = final.intelPackages_2025;
|
||||
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
|
||||
# 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
|
||||
@@ -48,26 +44,24 @@ let
|
||||
#nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { };
|
||||
nodes = callPackage ./pkgs/nodes/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; };
|
||||
openmpv = final.openmp.override { enableNosv = true; enableOvni = true; };
|
||||
osumb = callPackage ./pkgs/osu/default.nix { };
|
||||
ovni = callPackage ./pkgs/ovni/default.nix { };
|
||||
ovniGit = final.ovni.override { useGit = true; };
|
||||
papi = callPackage ./pkgs/papi/default.nix { papi = prev.papi; };
|
||||
paraverKernel = callPackage ./pkgs/paraver/kernel.nix { };
|
||||
prometheus-slurm-exporter = prev.callPackage ./pkgs/slurm-exporter/default.nix { };
|
||||
#pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned
|
||||
#psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned
|
||||
slurm = import ./pkgs/slurm/default.nix { slurm = prev.slurm; };
|
||||
sonar = callPackage ./pkgs/sonar/default.nix { };
|
||||
stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; };
|
||||
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; };
|
||||
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; };
|
||||
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; };
|
||||
stdenvClangOmpss2 = final.stdenv.override { cc = final.buildPackages.clangOmpss2; allowedRequisites = null; };
|
||||
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.buildPackages.clangOmpss2Nanos6; allowedRequisites = null; };
|
||||
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.buildPackages.clangOmpss2Nodes; allowedRequisites = null; };
|
||||
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.buildPackages.clangOmpss2NodesOmpv; allowedRequisites = null; };
|
||||
tagaspi = callPackage ./pkgs/tagaspi/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 { };
|
||||
wxparaver = callPackage ./pkgs/paraver/default.nix { };
|
||||
};
|
||||
@@ -77,8 +71,6 @@ let
|
||||
#sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
|
||||
hello-c = callPackage ./test/compilers/hello-c.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 { };
|
||||
lto = callPackage ./test/compilers/lto.nix { };
|
||||
asan = callPackage ./test/compilers/asan.nix { };
|
||||
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
|
||||
@@ -88,13 +80,6 @@ let
|
||||
intel2023-ifort = callPackage ./test/compilers/hello-f.nix {
|
||||
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-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; };
|
||||
clangOmpss2-task = callPackage ./test/compilers/ompss2.nix {
|
||||
|
||||
@@ -47,6 +47,7 @@ in
|
||||
inherit version;
|
||||
src = uprofSrc;
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
nativeBuildInputs = [ autoPatchelfHook radare2 ];
|
||||
buildInputs = [
|
||||
|
||||
@@ -18,6 +18,7 @@ in stdenv.mkDerivation {
|
||||
set +x
|
||||
'';
|
||||
hardeningDisable = [ "pic" "format" ];
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||
patches = [ ./makefile.patch ./hrtimer.patch ./remove-wr-rdmsrq.patch ];
|
||||
makeFlags = [
|
||||
|
||||
@@ -59,6 +59,7 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
hardeningDisable = [ "all" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://gitlab.pm.bsc.es/rarias/bench6";
|
||||
|
||||
@@ -16,6 +16,8 @@ stdenv.mkDerivation {
|
||||
};
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/rodarima/bigotes";
|
||||
description = "Versatile benchmark tool";
|
||||
|
||||
@@ -10,11 +10,14 @@
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
name = "cudainfo";
|
||||
src = ./.;
|
||||
buildInputs = [
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [
|
||||
cudatoolkit # Required for nvcc
|
||||
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
|
||||
autoAddDriverRunpath
|
||||
];
|
||||
buildInputs = [
|
||||
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
|
||||
];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp -a cudainfo $out/bin
|
||||
@@ -23,6 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
name = "cudainfo-test";
|
||||
requiredSystemFeatures = [ "cuda" ];
|
||||
dontBuild = true;
|
||||
strictDeps = true;
|
||||
nativeCheckInputs = [
|
||||
finalAttrs.finalPackage # The cudainfo package from above
|
||||
strace # When it fails, it will show the trace
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#, python3Packages
|
||||
, installShellFiles
|
||||
, symlinkJoin
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
, enablePapi ? true
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
strictDeps = true;
|
||||
|
||||
patches = [ ./rdma-core.patch ./max-mem.patch ];
|
||||
|
||||
|
||||
@@ -40,19 +40,45 @@ let
|
||||
mpi = "2021.9.0";
|
||||
};
|
||||
|
||||
findMatch = name:
|
||||
let
|
||||
aptPackages = builtins.fromJSON (builtins.readFile ./packages.json);
|
||||
matches = lib.filter (x: name == x.pname) aptPackages;
|
||||
n = lib.length matches;
|
||||
match = builtins.traceVerbose (name + " -- ${builtins.toString n}") (builtins.head matches);
|
||||
aptPackageIndex = stdenv.mkDerivation {
|
||||
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
|
||||
'';
|
||||
};
|
||||
|
||||
apthost = "https://apt.repos.intel.com/oneapi/";
|
||||
aptPackages = import aptPackageIndex;
|
||||
|
||||
apthost = "https://apt.repos.intel.com/oneapi/";
|
||||
|
||||
getSum = pkgList: name:
|
||||
let
|
||||
matches = lib.filter (x: name == x.Package) pkgList;
|
||||
#n = lib.length matches;
|
||||
#match = builtins.trace (name + " -- ${builtins.toString n}") (lib.elemAt matches 0);
|
||||
match = lib.elemAt matches 0;
|
||||
in
|
||||
{
|
||||
url = apthost + match.filename;
|
||||
sha256 = match.sha256;
|
||||
};
|
||||
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;
|
||||
match =
|
||||
#builtins.trace (name + " -- n=${builtins.toString n}")
|
||||
(lib.elemAt matches 0);
|
||||
in
|
||||
apthost + match.Filename;
|
||||
|
||||
uncompressDebs = debs: name: stdenv.mkDerivation {
|
||||
name = name;
|
||||
@@ -72,7 +98,10 @@ let
|
||||
|
||||
joinDebs = name: names:
|
||||
let
|
||||
debs = builtins.map (x: builtins.fetchurl (findMatch x)) names;
|
||||
urls = builtins.map (x: getUrl aptPackages 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
|
||||
uncompressDebs debs "${name}-source";
|
||||
|
||||
@@ -99,6 +128,7 @@ let
|
||||
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,etc,lib,include}
|
||||
mkdir -p $out/share/man
|
||||
@@ -150,6 +180,7 @@ let
|
||||
];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
|
||||
|
||||
@@ -193,6 +224,7 @@ let
|
||||
];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
|
||||
|
||||
@@ -260,6 +292,7 @@ let
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,lib,include}
|
||||
@@ -348,6 +381,7 @@ let
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/{bin,lib}
|
||||
@@ -441,7 +475,7 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
ifort-wrapper = wrapIntel {
|
||||
ifort-wrapper = wrapIntel rec {
|
||||
cc = intel-compiler-fortran;
|
||||
mygcc = gcc;
|
||||
extraBuild = ''
|
||||
|
||||
8769
pkgs/intel-oneapi/all-packages
Normal file
8769
pkgs/intel-oneapi/all-packages
Normal file
File diff suppressed because it is too large
Load Diff
34075
pkgs/intel-oneapi/amd64-packages
Normal file
34075
pkgs/intel-oneapi/amd64-packages
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -1,297 +0,0 @@
|
||||
{
|
||||
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;
|
||||
}
|
||||
@@ -1,189 +0,0 @@
|
||||
{
|
||||
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
|
||||
|
||||
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 ];
|
||||
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.pname + "-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;
|
||||
};
|
||||
|
||||
})
|
||||
)
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/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]
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/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,11 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
out_64=$(mktemp intel-api.64.XXXXXX)
|
||||
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
|
||||
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages -o amd64-packages
|
||||
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages -o all-packages
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
llvmPackages_latest
|
||||
stdenv
|
||||
, llvmPackages_latest
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, bash
|
||||
, python3
|
||||
, perl
|
||||
, which
|
||||
@@ -11,7 +11,6 @@
|
||||
, libffi
|
||||
, zlib
|
||||
, pkg-config
|
||||
, gcc # needed to set the rpath of libstdc++ for clang-tblgen
|
||||
, enableDebug ? false
|
||||
, useGit ? false
|
||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/llvm-ompss/llvm-mono.git"
|
||||
@@ -20,7 +19,10 @@
|
||||
}:
|
||||
|
||||
let
|
||||
stdenv = llvmPackages_latest.stdenv;
|
||||
llvmPackages = llvmPackages_latest;
|
||||
llvmStdenv = llvmPackages.stdenv;
|
||||
# needed to set the rpath of libstdc++ for clang-tblgen
|
||||
gcc = stdenv.cc;
|
||||
|
||||
release = rec {
|
||||
version = "2025.11";
|
||||
@@ -43,11 +45,12 @@ let
|
||||
|
||||
source = if (useGit) then git else release;
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
in llvmStdenv.mkDerivation {
|
||||
pname = "clang-ompss2";
|
||||
inherit (source) src version;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
strictDeps = true;
|
||||
|
||||
passthru = {
|
||||
CC = "clang";
|
||||
@@ -60,13 +63,12 @@ in stdenv.mkDerivation {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
bash
|
||||
cmake
|
||||
elfutils
|
||||
llvmPackages_latest.lld
|
||||
llvmPackages.lld
|
||||
perl
|
||||
pkg-config
|
||||
python3
|
||||
perl
|
||||
which
|
||||
zlib
|
||||
];
|
||||
@@ -97,8 +99,13 @@ in stdenv.mkDerivation {
|
||||
cd build
|
||||
cmakeDir="../llvm"
|
||||
cmakeFlagsArray=(
|
||||
"-DLLVM_HOST_TRIPLE=${stdenv.targetPlatform.config}"
|
||||
"-DLLVM_HOST_TRIPLE=${llvmStdenv.targetPlatform.config}"
|
||||
'' + (if "${llvmStdenv.targetPlatform.config}" == "riscv64-unknown-linux-gnu" then ''
|
||||
"-DLLVM_DEFAULT_TARGET_TRIPLE=riscv64-unknown-linux-gnu"
|
||||
"-DLLVM_TARGETS_TO_BUILD=RISCV"
|
||||
'' else ''
|
||||
"-DLLVM_TARGETS_TO_BUILD=host"
|
||||
'') + ''
|
||||
"-DLLVM_BUILD_LLVM_DYLIB=ON"
|
||||
"-DLLVM_LINK_LLVM_DYLIB=ON"
|
||||
# Required to run clang-ast-dump and clang-tblgen during build
|
||||
@@ -107,7 +114,8 @@ in stdenv.mkDerivation {
|
||||
"-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames"
|
||||
"-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,--gdb-index"
|
||||
"-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml"
|
||||
"-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;lld"
|
||||
"-DLLVM_ENABLE_PROJECTS=clang;lld"
|
||||
"-DLLVM_ENABLE_RUNTIMES=compiler-rt"
|
||||
"-DLLVM_ENABLE_ASSERTIONS=ON"
|
||||
"-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
, lib
|
||||
, gcc
|
||||
, clangOmpss2Unwrapped
|
||||
, writeShellScript
|
||||
, openmp ? null
|
||||
, wrapCCWith
|
||||
, llvmPackages_latest
|
||||
@@ -38,7 +37,10 @@ let
|
||||
inherit gcc;
|
||||
cc = clangOmpss2Unwrapped;
|
||||
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 = ''
|
||||
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
||||
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags
|
||||
@@ -54,51 +56,15 @@ let
|
||||
|
||||
echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags
|
||||
|
||||
wrap clang++ $wrapper $ccPath/clang++
|
||||
wrap ${targetConfig}clang++ $wrapper $ccPath/clang++
|
||||
wrap ${targetConfig}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}" >> $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;
|
||||
};
|
||||
})
|
||||
}).overrideAttrs (prev: { passthru = (prev.passthru or {}) // { inherit ompss2rt; }; })
|
||||
|
||||
@@ -39,7 +39,9 @@ stdenv.mkDerivation rec {
|
||||
perl
|
||||
pkg-config
|
||||
python3
|
||||
] ++ lib.optionals enableNosv [
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals enableNosv [
|
||||
nosv
|
||||
] ++ lib.optionals enableOvni [
|
||||
ovni
|
||||
@@ -54,6 +56,7 @@ stdenv.mkDerivation rec {
|
||||
dontStrip = enableDebug;
|
||||
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLIBOMP_OMPD_SUPPORT=OFF"
|
||||
@@ -71,6 +74,28 @@ stdenv.mkDerivation rec {
|
||||
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 = {
|
||||
inherit nosv;
|
||||
};
|
||||
|
||||
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
enableParallelBuilding = false;
|
||||
strictDeps = true;
|
||||
|
||||
preBuild = ''
|
||||
makeFlagsArray+=(
|
||||
|
||||
@@ -9,6 +9,7 @@ python3Packages.buildPythonApplication {
|
||||
src = ./.;
|
||||
|
||||
doCheck = false;
|
||||
strictDeps = true;
|
||||
|
||||
build-system = with python3Packages; [
|
||||
setuptools
|
||||
|
||||
@@ -53,6 +53,7 @@ in mpich.overrideAttrs (old: {
|
||||
'';
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
strictDeps = true;
|
||||
|
||||
meta = old.meta // {
|
||||
maintainers = old.meta.maintainers ++ (with lib.maintainers.bsc; [ rarias ]);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
, jemallocNanos6 ? null
|
||||
, cachelineBytes ? 64
|
||||
, enableGlibcxxDebug ? false
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
, enablePapi ? true
|
||||
, useGit ? false
|
||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
|
||||
, gitBranch ? "master"
|
||||
@@ -80,7 +80,8 @@ in
|
||||
(optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG") ++
|
||||
# Most nanos6 api symbols are resolved at runtime, so prefer
|
||||
# ifunc by default
|
||||
(optional isCross "--with-symbol-resolution=ifunc");
|
||||
(optional isCross "--with-symbol-resolution=ifunc") ++
|
||||
(optional enablePapi "--with-papi=${papi}");
|
||||
|
||||
postConfigure = lib.optionalString (!enableDebug) ''
|
||||
# Disable debug
|
||||
@@ -95,16 +96,14 @@ in
|
||||
dontStrip = enableDebug;
|
||||
separateDebugInfo = true;
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
automake
|
||||
libtool
|
||||
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 = [
|
||||
boost
|
||||
|
||||
@@ -8,6 +8,7 @@ stdenv.mkDerivation {
|
||||
version = "0.0.1";
|
||||
src = ./nixgen;
|
||||
dontUnpack = true;
|
||||
strictDeps = true;
|
||||
phases = [ "installPhase" ];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
|
||||
makeFlags = [ "DESTDIR=$(out)" ];
|
||||
preBuild = "env";
|
||||
dontPatchShebangs = true;
|
||||
strictDeps = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://gitlab.pm.bsc.es/rarias/nixtools";
|
||||
|
||||
@@ -48,6 +48,7 @@ in
|
||||
enableParallelBuilding = true;
|
||||
dontStrip = true;
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
|
||||
configureFlags = [
|
||||
"--with-nosv=${nosv}"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
, numactl
|
||||
, hwloc
|
||||
, papi
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
, enablePapi ? true
|
||||
, cacheline ? 64 # bits
|
||||
, ovni ? null
|
||||
, useGit ? false
|
||||
@@ -40,16 +40,17 @@ let
|
||||
|
||||
source = if (useGit) then git else release;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "nosv";
|
||||
inherit (source) src version;
|
||||
hardeningDisable = [ "all" ];
|
||||
dontStrip = true;
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
configureFlags = [
|
||||
"--with-ovni=${ovni}"
|
||||
"CACHELINE_WIDTH=${toString cacheline}"
|
||||
];
|
||||
] ++ lib.optionals enablePapi [ "--with-papi=${papi}" ];
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
pkg-config
|
||||
@@ -59,6 +60,7 @@ in
|
||||
hwloc
|
||||
ovni
|
||||
] ++ lib.optionals enablePapi [ papi ];
|
||||
patches = [ ./fix-papi.patch ];
|
||||
|
||||
meta = {
|
||||
homepage = "https://gitlab.bsc.es/nos-v/nos-v";
|
||||
|
||||
136
pkgs/nosv/fix-papi.patch
Normal file
136
pkgs/nosv/fix-papi.patch
Normal file
@@ -0,0 +1,136 @@
|
||||
Commit ID: c09633f172ce4075e0a05a33f6dcbe8e03e1202a
|
||||
Change ID: onmwypnnrysktutwsvotqovzponvwrxs
|
||||
Bookmarks: fix/papi fix/papi@git fix/papi@origin
|
||||
Author : Aleix Boné <aleix.boneribo@bsc.es> (2025-12-10 11:14:14)
|
||||
Committer: Aleix Boné <aleix.boneribo@bsc.es> (2025-12-12 12:56:48)
|
||||
|
||||
Improve PAPI m4 module for cross compilation
|
||||
|
||||
diff --git a/m4/papi.m4 b/m4/papi.m4
|
||||
index de90584870..8398f856f5 100644
|
||||
--- a/m4/papi.m4
|
||||
+++ b/m4/papi.m4
|
||||
@@ -1,6 +1,6 @@
|
||||
# This file is part of Nanos6 and is licensed under the terms contained in the COPYING file.
|
||||
#
|
||||
-# Copyright (C) 2021-2022 Barcelona Supercomputing Center (BSC)
|
||||
+# Copyright (C) 2021-2025 Barcelona Supercomputing Center (BSC)
|
||||
|
||||
AC_DEFUN([AC_CHECK_PAPI],
|
||||
[
|
||||
@@ -8,34 +8,38 @@
|
||||
[papi],
|
||||
[AS_HELP_STRING([--with-papi=prefix], [specify the installation prefix of PAPI])],
|
||||
[ ac_cv_use_papi_prefix=$withval ],
|
||||
- [ ac_cv_use_papi_prefix="" ]
|
||||
+ [ ac_cv_use_papi_prefix="check" ]
|
||||
)
|
||||
|
||||
if test x"${ac_cv_use_papi_prefix}" = x"no"; then
|
||||
AC_MSG_CHECKING([the PAPI installation prefix])
|
||||
AC_MSG_RESULT([${ac_cv_use_papi_prefix}])
|
||||
ac_use_papi=no
|
||||
- elif test x"${ac_cv_use_papi_prefix}" != x"" ; then
|
||||
- AC_MSG_CHECKING([the PAPI installation prefix])
|
||||
- AC_MSG_RESULT([${ac_cv_use_papi_prefix}])
|
||||
- papi_LIBS="-L${ac_cv_use_papi_prefix}/lib -lpapi -Wl,-rpath,${ac_cv_use_papi_prefix}/lib"
|
||||
- papi_CFLAGS="-I$ac_cv_use_papi_prefix/include"
|
||||
- ac_use_papi=yes
|
||||
- else
|
||||
+ elif test x"${ac_cv_use_papi_prefix}" = x""; then
|
||||
+ AC_MSG_RESULT([invalid prefix])
|
||||
+ AC_MSG_ERROR([papi prefix specified but empty])
|
||||
+ elif test x"${ac_cv_use_papi_prefix}" = x"yes" -o x"${ac_cv_use_papi_prefix}" = x"check"; then
|
||||
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])
|
||||
ac_use_papi=no
|
||||
]
|
||||
)
|
||||
+ else
|
||||
+ AC_MSG_CHECKING([the PAPI installation prefix])
|
||||
+ AC_MSG_RESULT([${ac_cv_use_papi_prefix}])
|
||||
+ papi_LIBS="-L${ac_cv_use_papi_prefix}/lib -lpapi -Wl,-rpath,${ac_cv_use_papi_prefix}/lib"
|
||||
+ papi_CFLAGS="-I$ac_cv_use_papi_prefix/include"
|
||||
+ ac_use_papi=yes
|
||||
fi
|
||||
|
||||
if test x"${ac_use_papi}" = x"yes" ; then
|
||||
@@ -53,10 +57,10 @@
|
||||
ac_use_papi=yes
|
||||
],
|
||||
[
|
||||
- if test x"${ac_cv_use_papi_prefix}" != x"" ; then
|
||||
- AC_MSG_ERROR([PAPI cannot be found.])
|
||||
+ if test x"${ac_cv_use_papi_prefix}" = x"yes" ; then
|
||||
+ AC_MSG_ERROR([PAPI >= 5.6.0 cannot be found.])
|
||||
else
|
||||
- AC_MSG_WARN([PAPI cannot be found.])
|
||||
+ AC_MSG_WARN([PAPI >= 5.6.0 not available.])
|
||||
fi
|
||||
ac_use_papi=no
|
||||
]
|
||||
@@ -64,30 +68,38 @@
|
||||
|
||||
CFLAGS="${ac_save_CFLAGS}"
|
||||
LIBS="${ac_save_LIBS}"
|
||||
+ elif test x"${ac_cv_use_papi_prefix}" = x"yes" ; then
|
||||
+ AC_MSG_ERROR([PAPI >= 5.6.0 cannot be found.])
|
||||
fi
|
||||
|
||||
- if test x"${ac_use_papi}" = x"yes" ; then
|
||||
- if test x"${ac_cv_use_papi_prefix}" != x"" ; then
|
||||
+ if test x"${ac_use_papi}" = x"yes" -a x"${ac_papi_version_correct}" != x"yes" ; then
|
||||
+ if test x"${ac_cv_use_papi_prefix}" != x"yes" -a x"${ac_cv_use_papi_prefix}" != x"check" ; 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]]
|
||||
- )
|
||||
|
||||
- if test x"${ac_papi_version_correct}" != x"yes" ; then
|
||||
- AC_MSG_ERROR([PAPI version must be >= 5.6.0.])
|
||||
- ac_use_papi=no
|
||||
+ if test x"$cross_compiling" = x"yes" ; then
|
||||
+ AC_MSG_WARN([Cross-compiling detected, skipping PAPI version check])
|
||||
else
|
||||
- AC_MSG_CHECKING([if the PAPI version >= 5.6.0.])
|
||||
- AC_MSG_RESULT([${ac_papi_version_correct}])
|
||||
+ 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]]
|
||||
+ )
|
||||
+
|
||||
+ 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
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
{
|
||||
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;
|
||||
enableParallelBuilding = true;
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [ mpiAll ];
|
||||
buildInputs = [ mpiAll ];
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
@@ -40,6 +40,7 @@ in
|
||||
inherit (source) src version;
|
||||
dontStrip = true;
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
postPatch = ''
|
||||
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;
|
||||
enableParallelBuilding = true;
|
||||
strictDeps = true;
|
||||
|
||||
preConfigure = ''
|
||||
export CFLAGS="-O3"
|
||||
|
||||
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
|
||||
enableParallelBuilding = true;
|
||||
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
|
||||
preConfigure = ''
|
||||
export CFLAGS="-O3 -DPARALLEL_ENABLED"
|
||||
|
||||
@@ -13,6 +13,7 @@ buildGoModule rec {
|
||||
|
||||
vendorHash = "sha256-A1dd9T9SIEHDCiVT2UwV6T02BSLh9ej6LC/2l54hgwI=";
|
||||
doCheck = false;
|
||||
strictDeps = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Prometheus SLURM Exporter";
|
||||
|
||||
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
hardeningDisable = [ "all" ];
|
||||
dontStrip = true;
|
||||
strictDeps = true;
|
||||
configureFlags = [ "--with-ovni=${ovni}" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
|
||||
pname = "tagaspi";
|
||||
enableParallelBuilding = true;
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
|
||||
version = "2.0";
|
||||
src = fetchFromGitHub {
|
||||
|
||||
@@ -45,6 +45,7 @@ in stdenv.mkDerivation {
|
||||
inherit (source) src version;
|
||||
enableParallelBuilding = true;
|
||||
separateDebugInfo = true;
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
{
|
||||
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 = ./.;
|
||||
|
||||
doCheck = false;
|
||||
strictDeps = true;
|
||||
|
||||
build-system = with python3Packages; [
|
||||
setuptools
|
||||
|
||||
@@ -23,9 +23,6 @@ in stdenv.mkDerivation {
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
|
||||
# nOS-V requires access to /sys/devices to request NUMA information
|
||||
requiredSystemFeatures = [ "sys-devices" ];
|
||||
|
||||
buildInputs = [ openmp ];
|
||||
|
||||
buildPhase = ''
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
{
|
||||
intelPackages,
|
||||
writeText,
|
||||
strace,
|
||||
}:
|
||||
|
||||
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 expect to fail since no devices should be available;
|
||||
}
|
||||
'';
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
version = "0.0.1";
|
||||
name = "hello-sycl";
|
||||
buildInputs = [
|
||||
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
|
||||
set +x
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
touch $out
|
||||
'';
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
{
|
||||
writeText,
|
||||
intelPackages,
|
||||
nodes,
|
||||
nosv,
|
||||
clangOmpss2Nodes,
|
||||
strace,
|
||||
}:
|
||||
|
||||
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 {
|
||||
version = "0.0.1";
|
||||
name = "hello-syclompss";
|
||||
|
||||
src = hello_cpp;
|
||||
|
||||
nativeBuildInputs = [
|
||||
strace
|
||||
nodes
|
||||
nosv
|
||||
];
|
||||
|
||||
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
|
||||
set +x
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
touch $out
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user