forked from rarias/bscpkgs
Compare commits
69 Commits
feat/hydra
...
mega-merge
| Author | SHA1 | Date | |
|---|---|---|---|
|
e595995fb3
|
|||
|
5a7cb55c77
|
|||
|
a2f265bc16
|
|||
|
2ffd3be93d
|
|||
|
958af15b7a
|
|||
|
f43cd5a35c
|
|||
|
85d50f346c
|
|||
|
63aad2bbe5
|
|||
|
b37f28a631
|
|||
|
fbcce1a137
|
|||
|
bbd9ec944b
|
|||
|
5ff58ed90e
|
|||
|
5f46bff2ca
|
|||
|
6dd25cd8ff
|
|||
|
7b59ad8e65
|
|||
|
9f72c57bdd
|
|||
|
affc80cd87
|
|||
|
148fae48ee
|
|||
|
672b84359f
|
|||
|
d0d26ccee7
|
|||
|
49b490876e
|
|||
|
92f40d2594
|
|||
|
e78fb55e48
|
|||
|
db60f992d2
|
|||
|
e0f1ef3475
|
|||
|
4292109ae0
|
|||
|
ce131fc169
|
|||
|
107952ead9
|
|||
|
cf3543690d
|
|||
|
907797dbf7
|
|||
|
46524cd2ec
|
|||
|
c9442e9859
|
|||
|
1b4b039faf
|
|||
|
e3faa29477
|
|||
|
4eb8e2bada
|
|||
|
1462d25b9b
|
|||
|
61b6de195e
|
|||
|
cb6d770992
|
|||
|
6454ff6712
|
|||
|
d40ce4fe79
|
|||
|
0bbb13d952
|
|||
| 2ffdd53d86 | |||
| c7b5ec13b8 | |||
| 00dfe801f4 | |||
| 2c8d7ed855 | |||
| 1666c14a35 | |||
| b29f03ba6e | |||
| ae2ef1d2df | |||
| 9a48ae45bb | |||
| 974bb56dc3 | |||
| 88d4d8e317 | |||
| 885e04e446 | |||
| 26f52aa27d | |||
| 52fe43bfe1 | |||
| f0637b4569 | |||
| 6ddfea0a3a | |||
| e7adef1ffa | |||
| e82d3c3b9f | |||
| 4442b6a706 | |||
| 2d0b014dc7 | |||
| 867ba3ec5a | |||
| 2cacc2b265 | |||
| e4abd8d8f6 | |||
| a87b99d0a4 | |||
| 43d32ac16d | |||
| 9d1944c658 | |||
| 8e5b2dc5cc | |||
| f89cd4d7e2 | |||
| f962816eab |
8
flake.lock
generated
8
flake.lock
generated
@@ -2,10 +2,10 @@
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1736867362,
|
||||
"narHash": "sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8=",
|
||||
"path": "/nix/store/2csx2kkb2hxyxhhmg2xs9jfyypikwwk6-source",
|
||||
"rev": "9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc",
|
||||
"lastModified": 1752436162,
|
||||
"narHash": "sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw=",
|
||||
"path": "/nix/store/zk8v61cpk1wprp9ld5ayc1g5fq4pdkwv-source",
|
||||
"rev": "dfcd5b901dbab46c9c6e80b265648481aafb01f8",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
|
||||
19
flake.nix
19
flake.nix
@@ -2,20 +2,25 @@
|
||||
inputs.nixpkgs.url = "nixpkgs";
|
||||
|
||||
outputs = { self, nixpkgs, ...}:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
let
|
||||
# For now we only support x86
|
||||
system = "x86_64-linux";
|
||||
overlays = [ self.overlays.default ];
|
||||
};
|
||||
in
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [ self.overlays.default ];
|
||||
};
|
||||
in
|
||||
{
|
||||
bscOverlay = import ./overlay.nix;
|
||||
overlays.default = self.bscOverlay;
|
||||
legacyPackages.x86_64-linux = pkgs;
|
||||
# full nixpkgs with our overlay applied
|
||||
legacyPackages.${system} = pkgs;
|
||||
|
||||
hydraJobs = {
|
||||
inherit (pkgs) bsc-ci;
|
||||
inherit (self.legacyPackages.${system}.bsc-ci) test pkgs cross;
|
||||
};
|
||||
|
||||
# propagate nixpkgs lib, so we can do bscpkgs.lib
|
||||
inherit (nixpkgs) lib;
|
||||
};
|
||||
}
|
||||
|
||||
58
overlay.nix
58
overlay.nix
@@ -1,15 +1,22 @@
|
||||
final: /* Future last stage */
|
||||
prev: /* Previous stage */
|
||||
|
||||
with final.lib;
|
||||
|
||||
let
|
||||
callPackage = final.callPackage;
|
||||
inherit (prev.lib) collect isDerivation mapAttrs filterAttrs;
|
||||
|
||||
inherit (final) callPackage;
|
||||
|
||||
mkDeps = name: pkgs: final.runCommand name { }
|
||||
"printf '%s\n' ${toString (collect (x: x ? outPath) pkgs)} > $out";
|
||||
|
||||
bscPkgs = {
|
||||
mkStrict = drv: if (isDerivation drv && drv ? overrideAttrs && !(drv ? strictDeps))
|
||||
then drv.overrideAttrs { strictDeps = true; }
|
||||
else drv;
|
||||
|
||||
bscPkgs = mapAttrs (_: mkStrict) {
|
||||
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 { };
|
||||
bigotes = callPackage ./pkgs/bigotes/default.nix { };
|
||||
clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { };
|
||||
@@ -17,11 +24,17 @@ let
|
||||
clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmp; };
|
||||
clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; };
|
||||
clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { };
|
||||
clsparse = callPackage ./pkgs/clsparse/package.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;
|
||||
oneMath = callPackage ./pkgs/onemath/default.nix { };
|
||||
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
|
||||
#lmbench = callPackage ./pkgs/lmbench/default.nix { }; # Broken
|
||||
lmbench = callPackage ./pkgs/lmbench/default.nix { };
|
||||
mcxx = callPackage ./pkgs/mcxx/default.nix { };
|
||||
nanos6 = callPackage ./pkgs/nanos6/default.nix { };
|
||||
nanos6Debug = final.nanos6.override { enableDebug = true; };
|
||||
@@ -46,7 +59,21 @@ let
|
||||
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; };
|
||||
tagaspi = callPackage ./pkgs/tagaspi/default.nix { };
|
||||
tampi = callPackage ./pkgs/tampi/default.nix { };
|
||||
tacuda = callPackage ./pkgs/tacuda/default.nix { };
|
||||
taopencl = callPackage ./pkgs/taopencl/default.nix { };
|
||||
tasycl = callPackage ./pkgs/tasycl/default.nix { };
|
||||
tasycl-acpp = callPackage ./pkgs/tasycl/default.nix { useIntel = false; };
|
||||
wxparaver = callPackage ./pkgs/paraver/default.nix { };
|
||||
|
||||
# Fix for RISC-V cross compilation
|
||||
# TODO: remove once we update to 25.11
|
||||
# https://github.com/NixOS/nixpkgs/commit/d9c222c81435b
|
||||
prrte = prev.prrte.overrideAttrs (prevAttrs: {
|
||||
configureFlags = (prevAttrs.configureFlags or []) ++ [
|
||||
"--with-pmix=${prev.lib.getDev final.pmix}"
|
||||
"--with-pmix-libdir=${prev.lib.getLib final.pmix}/lib"
|
||||
];
|
||||
});
|
||||
};
|
||||
|
||||
in bscPkgs // {
|
||||
@@ -60,6 +87,8 @@ in bscPkgs // {
|
||||
#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; };
|
||||
@@ -69,6 +98,15 @@ in bscPkgs // {
|
||||
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; };
|
||||
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 {
|
||||
@@ -88,15 +126,21 @@ in bscPkgs // {
|
||||
};
|
||||
};
|
||||
|
||||
pkgs = final.runCommand "ci-pkgs" { }
|
||||
pkgs = filterAttrs (_: isDerivation) bscPkgs;
|
||||
|
||||
pkgsList = final.runCommand "ci-pkgs" { }
|
||||
"printf '%s\n' ${toString (collect isDerivation bscPkgs)} > $out";
|
||||
|
||||
tests = final.runCommand "ci-tests" { }
|
||||
"printf '%s\n' ${toString (collect isDerivation final.bsc-ci.test)} > $out";
|
||||
|
||||
cross = prev.lib.genAttrs [ "riscv64" ] (target:
|
||||
final.pkgsCross.${target}.bsc-ci.pkgs
|
||||
);
|
||||
|
||||
all = final.runCommand "ci-all" { }
|
||||
''
|
||||
deps="${toString [ final.bsc-ci.pkgs final.bsc-ci.tests ]}"
|
||||
deps="${toString [ final.bsc-ci.pkgsList final.bsc-ci.tests ]}"
|
||||
cat $deps
|
||||
printf '%s\n' $deps > $out
|
||||
'';
|
||||
|
||||
16
pkgs/aocc/default.nix
Normal file
16
pkgs/aocc/default.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
{ wrapCCWith
|
||||
, aoccUnwrapped
|
||||
}:
|
||||
|
||||
let
|
||||
cc = aoccUnwrapped;
|
||||
in wrapCCWith {
|
||||
inherit cc;
|
||||
|
||||
extraBuildCommands = ''
|
||||
echo "-isystem ${cc}/include" >> $out/nix-support/cc-cflags
|
||||
|
||||
wrap aocc $wrapper $ccPath/clang
|
||||
wrap aocc++ $wrapper $ccPath/clang++
|
||||
'';
|
||||
}
|
||||
51
pkgs/aocc/unwrapped.nix
Normal file
51
pkgs/aocc/unwrapped.nix
Normal file
@@ -0,0 +1,51 @@
|
||||
{ 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";
|
||||
}
|
||||
@@ -1,14 +1,20 @@
|
||||
{
|
||||
stdenv
|
||||
, bigotes
|
||||
, cmake
|
||||
, clangOmpss2
|
||||
, openmp
|
||||
, openmpv
|
||||
, nanos6
|
||||
, nodes
|
||||
, nosv
|
||||
, mpi
|
||||
, tampi
|
||||
, openblas
|
||||
, ovni
|
||||
, gitBranch ? "master"
|
||||
, gitURL ? "ssh://git@bscpm04.bsc.es/rarias/bench6.git"
|
||||
, gitCommit ? "1e6ce2aa8ad7b4eef38df1581d7ec48a8815f85d"
|
||||
, gitCommit ? "bf29a53113737c3aa74d2fe3d55f59868faea7b4"
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@@ -21,9 +27,31 @@ stdenv.mkDerivation rec {
|
||||
rev = gitCommit;
|
||||
};
|
||||
|
||||
buildInputs = [ cmake clangOmpss2 nanos6 nodes mpi tampi ];
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
clangOmpss2
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
bigotes
|
||||
openmp
|
||||
openmpv
|
||||
nanos6
|
||||
nodes
|
||||
nosv
|
||||
mpi
|
||||
tampi
|
||||
openblas
|
||||
openblas.dev
|
||||
ovni
|
||||
];
|
||||
|
||||
env = {
|
||||
NANOS6_HOME = nanos6;
|
||||
NODES_HOME = nodes;
|
||||
NOSV_HOME = nosv;
|
||||
};
|
||||
|
||||
enableParallelBuilding = false;
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=clang"
|
||||
"-DCMAKE_CXX_COMPILER=clang++"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
, cmake
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "bigotes";
|
||||
version = "9dce13";
|
||||
src = fetchFromGitHub {
|
||||
@@ -13,5 +13,5 @@ stdenv.mkDerivation rec {
|
||||
rev = "9dce13446a8da30bea552d569d260d54e0188518";
|
||||
sha256 = "sha256-ktxM3pXiL8YXSK+/IKWYadijhYXqGoLY6adLk36iigE=";
|
||||
};
|
||||
buildInputs = [ cmake ];
|
||||
nativeBuildInputs = [ cmake ];
|
||||
}
|
||||
|
||||
53
pkgs/clsparse/install_target.patch
Normal file
53
pkgs/clsparse/install_target.patch
Normal file
@@ -0,0 +1,53 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 3d139ed..15ffc14 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -176,32 +179,22 @@ if( BUILD_clSPARSE OR BUILD_SAMPLES )
|
||||
if( BUILD_clSPARSE )
|
||||
message( STATUS "Setting up clSPARSE external..." )
|
||||
|
||||
- if ( BUILD_SAMPLES )
|
||||
- # If the user elects to build samples, then we must build and install clSPARSE
|
||||
- # The install location is set as a subdirectory of the SuperBuild
|
||||
- ExternalProject_Add(
|
||||
- clSPARSE
|
||||
- DEPENDS ${clSPARSE.Dependencies}
|
||||
- SOURCE_DIR ${PROJECT_SOURCE_DIR}/src
|
||||
- BINARY_DIR clSPARSE-build
|
||||
- INSTALL_DIR clSPARSE-package
|
||||
- CMAKE_ARGS ${clSPARSE.Cmake.Args} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
- -DBUILD_CLVERSION=${BUILD_CLVERSION} -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||
- -DUSE_SYSTEM_CL2HPP:BOOL=${USE_SYSTEM_CL2HPP}
|
||||
- )
|
||||
- else( )
|
||||
- # If the user does not want to build samples, then build clSPARSE but don't automatically
|
||||
- # install it
|
||||
- ExternalProject_Add(
|
||||
- clSPARSE
|
||||
- DEPENDS ${clSPARSE.Dependencies}
|
||||
- SOURCE_DIR ${PROJECT_SOURCE_DIR}/src
|
||||
- BINARY_DIR clSPARSE-build
|
||||
- CMAKE_ARGS ${clSPARSE.Cmake.Args} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
- -DBUILD_CLVERSION=${BUILD_CLVERSION} -DUSE_SYSTEM_CL2HPP:BOOL=${USE_SYSTEM_CL2HPP}
|
||||
- INSTALL_COMMAND ""
|
||||
- )
|
||||
- endif( )
|
||||
+ ExternalProject_Add(
|
||||
+ clSPARSE
|
||||
+ DEPENDS ${clSPARSE.Dependencies}
|
||||
+ SOURCE_DIR ${PROJECT_SOURCE_DIR}/src
|
||||
+ BINARY_DIR clSPARSE-build
|
||||
+ INSTALL_DIR clSPARSE-package
|
||||
+ CMAKE_ARGS ${clSPARSE.Cmake.Args} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
+ -DBUILD_CLVERSION=${BUILD_CLVERSION} -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||
+ -DUSE_SYSTEM_CL2HPP:BOOL=${USE_SYSTEM_CL2HPP}
|
||||
+ )
|
||||
+
|
||||
+ install(
|
||||
+ DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/clSPARSE-package/
|
||||
+ DESTINATION ${CMAKE_INSTALL_PREFIX}
|
||||
+ USE_SOURCE_PERMISSIONS
|
||||
+ )
|
||||
|
||||
endif( )
|
||||
|
||||
70
pkgs/clsparse/package.nix
Normal file
70
pkgs/clsparse/package.nix
Normal file
@@ -0,0 +1,70 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
boost,
|
||||
gtest,
|
||||
ocl-icd,
|
||||
opencl-headers,
|
||||
opencl-clhpp,
|
||||
cmake,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "clsparse";
|
||||
version = "0.10.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "clMathLibraries";
|
||||
repo = "clSPARSE";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-jIauCtUyPEIx7pFI3qH0WagV+t/fvro0OsGgONBJm0s=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./pass_include_dir.patch
|
||||
./install_target.patch
|
||||
(fetchpatch {
|
||||
name = "remove-gettypecode.patch";
|
||||
url = "https://patch-diff.githubusercontent.com/raw/clMathLibraries/clSPARSE/pull/210.patch";
|
||||
hash = "sha256-9Q+tk7RMdWE4MCnbvWlsI0MIgBYKIWR2jIC1bICtIjU=";
|
||||
})
|
||||
];
|
||||
|
||||
postInstallPhase = ''
|
||||
mv $installDir/lib64 lib
|
||||
ln -s lib/ lib64
|
||||
'';
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = "-std=c++17";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
ocl-icd
|
||||
opencl-headers
|
||||
opencl-clhpp
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_Boost=OFF"
|
||||
"-DBUILD_gMock=OFF"
|
||||
"-DBUILD_MTX=OFF"
|
||||
"-DBUILD_SAMPLES=OFF"
|
||||
"-DUSE_SYSTEM_CL2HPP=ON"
|
||||
"-DGMOCK_ROOT=${gtest}"
|
||||
"-DGTEST_INCLUDE_DIR=${gtest.src}/googletest/include"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "A software library containing Sparse functions written in OpenCL";
|
||||
homepage = "https://github.com/clMathLibraries/clSPARSE";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ leixb ];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
||||
14
pkgs/clsparse/pass_include_dir.patch
Normal file
14
pkgs/clsparse/pass_include_dir.patch
Normal file
@@ -0,0 +1,14 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 3d139ed..b7ea2d3 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -132,6 +132,9 @@ else( )
|
||||
set( GMOCK_ROOT "$ENV{GMOCK_ROOT}" )
|
||||
endif( )
|
||||
list( APPEND clSPARSE.Cmake.Args -DGTEST_ROOT=${GMOCK_ROOT} )
|
||||
+ if( DEFINED GTEST_INCLUDE_DIR )
|
||||
+ list( APPEND clSPARSE.Cmake.Args -DGTEST_INCLUDE_DIR=${GTEST_INCLUDE_DIR} )
|
||||
+ endif( )
|
||||
endif( )
|
||||
endif( )
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#, python3Packages
|
||||
, installShellFiles
|
||||
, symlinkJoin
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -87,7 +88,7 @@ stdenv.mkDerivation rec {
|
||||
--enable-sampling
|
||||
--with-unwind=${libunwind.dev}
|
||||
--with-xml-prefix=${libxml2.dev}
|
||||
--with-papi=${papi}
|
||||
${lib.optionalString enablePapi "--with-papi=${papi}"}
|
||||
${if (mpi != null) then ''--with-mpi=${mpi}''
|
||||
else ''--without-mpi''}
|
||||
--without-dyninst)
|
||||
|
||||
@@ -34,6 +34,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
patches = [ ./rdma-core.patch ./max-mem.patch ];
|
||||
|
||||
preConfigure = ''
|
||||
patchShebangs autogen.sh
|
||||
./autogen.sh
|
||||
|
||||
10
pkgs/gpi-2/max-mem.patch
Normal file
10
pkgs/gpi-2/max-mem.patch
Normal file
@@ -0,0 +1,10 @@
|
||||
--- a/tests/tests/segments/max_mem.c 2025-09-12 13:30:53.449353591 +0200
|
||||
+++ b/tests/tests/segments/max_mem.c 2025-09-12 13:33:49.750352401 +0200
|
||||
@@ -1,5 +1,7 @@
|
||||
#include <test_utils.h>
|
||||
|
||||
+gaspi_size_t gaspi_get_system_mem (void);
|
||||
+
|
||||
/* Test allocates 45% of system memory and creates a segment that
|
||||
large or if several ranks per node exist, divided among that
|
||||
number */
|
||||
12
pkgs/gpi-2/rdma-core.patch
Normal file
12
pkgs/gpi-2/rdma-core.patch
Normal file
@@ -0,0 +1,12 @@
|
||||
--- a/src/devices/ib/GPI2_IB.h 2025-09-12 13:25:31.564181121 +0200
|
||||
+++ b/src/devices/ib/GPI2_IB.h 2025-09-12 13:24:49.105422150 +0200
|
||||
@@ -26,6 +26,9 @@ along with GPI-2. If not, see <http://ww
|
||||
|
||||
#include "GPI2_Dev.h"
|
||||
|
||||
+/* Missing prototype as driver.h is now private */
|
||||
+int ibv_read_sysfs_file(const char *dir, const char *file, char *buf, size_t size);
|
||||
+
|
||||
#define GASPI_GID_INDEX (0)
|
||||
#define PORT_LINK_UP (5)
|
||||
#define MAX_INLINE_BYTES (128)
|
||||
@@ -1,6 +1,5 @@
|
||||
{ stdenv
|
||||
, fetchurl
|
||||
, ncurses
|
||||
, lib
|
||||
, dpkg
|
||||
, rsync
|
||||
@@ -10,12 +9,9 @@
|
||||
, hwloc
|
||||
, zlib
|
||||
, autoPatchelfHook
|
||||
, symlinkJoin
|
||||
, libfabric
|
||||
, gcc
|
||||
, gcc7
|
||||
, gcc13
|
||||
, wrapCCWith
|
||||
, linuxHeaders
|
||||
}:
|
||||
|
||||
# The distribution of intel packages is a mess. We are doing the installation
|
||||
@@ -30,6 +26,8 @@
|
||||
|
||||
let
|
||||
|
||||
gcc = gcc13;
|
||||
|
||||
v = {
|
||||
hpckit = "2023.1.0";
|
||||
compiler = "2023.1.0";
|
||||
@@ -47,40 +45,31 @@ let
|
||||
installPhase = ''
|
||||
awk -F': ' '\
|
||||
BEGIN { print "[ {" } \
|
||||
NR>1 && /^Package: / { print "} {"; } \
|
||||
NF==0 { empty=1; } \
|
||||
NF && empty { print "} {"; empty=0; } \
|
||||
/: / { printf "%s = \"%s\";\n", $1, $2 } \
|
||||
END { print "} ]" }' $srcs > $out
|
||||
'';
|
||||
};
|
||||
|
||||
aptPackages = import aptPackageIndex;
|
||||
|
||||
apthost = "https://apt.repos.intel.com/oneapi/";
|
||||
|
||||
getSum = pkgList: name:
|
||||
findMatch = 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
|
||||
match.SHA256;
|
||||
|
||||
getUrl = pkgList: name:
|
||||
let
|
||||
matches = lib.filter (x: name == x.Package) pkgList;
|
||||
#match = assert lib.length matches == 1; lib.elemAt matches 0;
|
||||
aptPackages = import aptPackageIndex;
|
||||
matches = lib.filter (x: name == x.Package) aptPackages;
|
||||
n = lib.length matches;
|
||||
match =
|
||||
#builtins.trace (name + " -- n=${builtins.toString n}")
|
||||
(lib.elemAt matches 0);
|
||||
match = builtins.traceVerbose (name + " -- ${builtins.toString n}") (builtins.head matches);
|
||||
|
||||
apthost = "https://apt.repos.intel.com/oneapi/";
|
||||
in
|
||||
apthost + match.Filename;
|
||||
{
|
||||
url = apthost + match.Filename;
|
||||
sha256 = match.SHA256;
|
||||
};
|
||||
|
||||
uncompressDebs = debs: name: stdenv.mkDerivation {
|
||||
name = name;
|
||||
srcs = debs;
|
||||
buildInputs = [ dpkg ];
|
||||
nativeBuildInputs = [ dpkg ];
|
||||
phases = [ "installPhase" ];
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
@@ -93,10 +82,7 @@ let
|
||||
|
||||
joinDebs = name: names:
|
||||
let
|
||||
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;
|
||||
debs = builtins.map (x: builtins.fetchurl (findMatch x)) names;
|
||||
in
|
||||
uncompressDebs debs "${name}-source";
|
||||
|
||||
@@ -110,14 +96,17 @@ let
|
||||
"intel-oneapi-mpi-${version}"
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libfabric
|
||||
zlib
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
installPhase = ''
|
||||
@@ -156,7 +145,6 @@ let
|
||||
|
||||
buildInputs = [
|
||||
intel-mpi
|
||||
rsync
|
||||
libffi_3_3
|
||||
libelf
|
||||
libxml2
|
||||
@@ -164,7 +152,10 @@ let
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
|
||||
@@ -194,7 +185,6 @@ let
|
||||
buildInputs = [
|
||||
intel-mpi
|
||||
intel-tbb
|
||||
rsync
|
||||
libffi_3_3
|
||||
libelf
|
||||
libxml2
|
||||
@@ -203,7 +193,10 @@ let
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
dontStrip = true;
|
||||
|
||||
@@ -256,7 +249,6 @@ let
|
||||
buildInputs = [
|
||||
intel-mpi
|
||||
intel-compiler-shared
|
||||
rsync
|
||||
libffi_3_3
|
||||
libelf
|
||||
libxml2
|
||||
@@ -264,7 +256,10 @@ let
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
|
||||
@@ -314,6 +309,7 @@ let
|
||||
"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${version}"
|
||||
"intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-${version}"
|
||||
];
|
||||
dontCheckForBrokenSymlinks = true;
|
||||
# From https://aur.archlinux.org/packages/intel-oneapi-compiler:
|
||||
# - intel-oneapi-compiler-cpp-eclipse-cfg-2023.0.0-25370_all.deb
|
||||
# + intel-oneapi-compiler-dpcpp-cpp-2023.0.0-2023.0.0-25370_amd64.deb
|
||||
@@ -338,7 +334,6 @@ let
|
||||
|
||||
buildInputs = [
|
||||
intel-compiler-shared
|
||||
rsync
|
||||
libffi_3_3
|
||||
libelf
|
||||
libxml2
|
||||
@@ -346,7 +341,10 @@ let
|
||||
stdenv.cc.cc.lib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
rsync
|
||||
];
|
||||
autoPatchelfIgnoreMissingDeps = [ "libtbb.so.12" "libtbbmalloc.so.2" "libze_loader.so.1" ];
|
||||
|
||||
phases = [ "installPhase" "fixupPhase" ];
|
||||
@@ -399,7 +397,9 @@ let
|
||||
echo "-L${cc}/lib" >> $out/nix-support/cc-ldflags
|
||||
|
||||
# Need the gcc in the path
|
||||
echo 'export "PATH=${mygcc}/bin:$PATH"' >> $out/nix-support/cc-wrapper-hook
|
||||
# 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="${mygcc}/bin:$path_backup"' >> $out/nix-support/cc-wrapper-hook
|
||||
|
||||
# Disable hardening by default
|
||||
echo "" > $out/nix-support/add-hardening.sh
|
||||
@@ -441,7 +441,7 @@ let
|
||||
'';
|
||||
};
|
||||
|
||||
ifort-wrapper = wrapIntel rec {
|
||||
ifort-wrapper = wrapIntel {
|
||||
cc = intel-compiler-fortran;
|
||||
mygcc = gcc;
|
||||
extraBuild = ''
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
112674
pkgs/intel-oneapi/packages.json
Normal file
112674
pkgs/intel-oneapi/packages.json
Normal file
File diff suppressed because it is too large
Load Diff
205
pkgs/intel-oneapi/packages.nix
Normal file
205
pkgs/intel-oneapi/packages.nix
Normal file
@@ -0,0 +1,205 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, dpkg
|
||||
, fetchurl
|
||||
, recurseIntoAttrs
|
||||
|
||||
, sqlite
|
||||
, elfutils
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (builtins)
|
||||
elem attrNames attrValues concatMap 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.3";
|
||||
pti = "0.12";
|
||||
tcm = "1.3";
|
||||
umf = "0.10";
|
||||
|
||||
ccl = "2021.15";
|
||||
compiler = "2025.1";
|
||||
dal = "2025.5";
|
||||
debugger = "2025.1";
|
||||
dev-utilities = "2025.1";
|
||||
dnnl = "2025.1";
|
||||
dpcpp-ct = "2025.1";
|
||||
dpl = "2022.8";
|
||||
ipp = "2022.1";
|
||||
ippcp = "2025.1";
|
||||
mkl = "2025.1";
|
||||
mpi = "2021.15";
|
||||
tbb = "2022.1";
|
||||
};
|
||||
"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 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;
|
||||
}
|
||||
177
pkgs/intel-oneapi/patch_intel.nix
Normal file
177
pkgs/intel-oneapi/patch_intel.nix
Normal file
@@ -0,0 +1,177 @@
|
||||
{ stdenv
|
||||
, stdenvNoCC
|
||||
, lib
|
||||
, symlinkJoin
|
||||
, autoPatchelfHook
|
||||
, wrapCCWith
|
||||
, overrideCC
|
||||
, gcc13
|
||||
, hwloc
|
||||
, libelf
|
||||
, libffi_3_3
|
||||
, libpsm2
|
||||
, libuuid
|
||||
, libxml2
|
||||
, numactl
|
||||
, ocl-icd
|
||||
, openssl
|
||||
, python3
|
||||
, rdma-core
|
||||
, ucx
|
||||
, zlib
|
||||
, makeOverridable
|
||||
, recurseIntoAttrs
|
||||
}:
|
||||
|
||||
makeOverridable (
|
||||
{
|
||||
unpatched,
|
||||
components ? { },
|
||||
extraPackages ? components.extraPackages or []
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (builtins) attrValues filter mapAttrs removeAttrs;
|
||||
|
||||
gcc = gcc13;
|
||||
|
||||
__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, extraBuildCommands ? "", extraInstall ? "", ... }@args:
|
||||
let
|
||||
targetConfig = stdenv.targetPlatform.config;
|
||||
in (wrapCCWith {
|
||||
inherit cc;
|
||||
extraBuildCommands = ''
|
||||
echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags
|
||||
echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
|
||||
echo "-L${cc}/lib" >> $out/nix-support/cc-ldflags
|
||||
|
||||
# echo "--gcc-toolchain=${gcc.cc}" >> $out/nix-support/libcxx-cxxflags
|
||||
echo "--gcc-toolchain=${gcc.cc}" >> $out/nix-support/cc-cflags
|
||||
|
||||
# For some reason, If we don't resolve the realpath things go wrong
|
||||
for stddef in ${cc}/lib/clang/*/include/stddef.h ; do
|
||||
dir=$(dirname $(realpath "$stddef"))
|
||||
echo "-isystem $dir" >> $out/nix-support/cc-cflags
|
||||
done
|
||||
|
||||
echo "-isystem ${cc}/include" >> $out/nix-support/cc-cflags
|
||||
echo "-isystem ${cc}/include/intel64" >> $out/nix-support/cc-cflags
|
||||
|
||||
for dir in ${gcc.cc}/lib/gcc/${targetConfig}/*/include; do
|
||||
echo "-isystem $dir" >> $out/nix-support/cc-cflags
|
||||
done
|
||||
|
||||
for dir in ${gcc.cc}/include/c++/*; do
|
||||
echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags
|
||||
done
|
||||
for dir in ${gcc.cc}/include/c++/*/${targetConfig}; do
|
||||
echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags
|
||||
done
|
||||
|
||||
# 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
|
||||
'' + extraBuildCommands;
|
||||
} // (removeAttrs args ["cc" "extraBuildCommands" "extraInstall"])
|
||||
).overrideAttrs (old: {
|
||||
installPhase = old.installPhase + extraInstall;
|
||||
});
|
||||
|
||||
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" ];
|
||||
|
||||
dontCheckForBrokenSymlinks = true;
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
installPhase = ''
|
||||
cp -r $src/opt/intel/oneapi/ $out
|
||||
'';
|
||||
|
||||
passthru = let
|
||||
pkgs = mapAttrs
|
||||
(folder: version: symlinkJoin {
|
||||
pname = "intel-${folder}";
|
||||
inherit version;
|
||||
paths = ["${finalAttrs.finalPackage}/${folder}/${version}"];
|
||||
})
|
||||
_components;
|
||||
in pkgs // {
|
||||
inherit unpatched;
|
||||
pkgs = 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 {
|
||||
cc = finalAttrs.finalPackage.pkgs.compiler;
|
||||
extraBuildCommands = ''
|
||||
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
|
||||
|
||||
# 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
|
||||
|
||||
sed -i 's/.*isCxx=0/isCxx=1/' $out/bin/icpx
|
||||
|
||||
# oneMath looks for sycl libraries in bin/../lib
|
||||
ln -s ${finalAttrs.finalPackage.pkgs.compiler}/lib $out/lib
|
||||
ln -s ${finalAttrs.finalPackage.pkgs.compiler}/include $out/include
|
||||
'';
|
||||
extraInstall = ''
|
||||
export named_cc="icx"
|
||||
export named_cxx="icpx"
|
||||
export named_fc="ifx"
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
}))
|
||||
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, version = 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 "} ]" }
|
||||
@@ -2,3 +2,5 @@
|
||||
|
||||
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
|
||||
|
||||
cat amd64-packages all-packages | ./toJson.awk | ./process.jq >packages.json
|
||||
|
||||
@@ -16,19 +16,19 @@
|
||||
, useGit ? false
|
||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/llvm-ompss/llvm-mono.git"
|
||||
, gitBranch ? "master"
|
||||
, gitCommit ? "8c0d267c04d7fc3fb923078f510fcd5f4719a6cc"
|
||||
, gitCommit ? "880e2341c56bad1dc14e8c369fb3356bec19018e"
|
||||
}:
|
||||
|
||||
let
|
||||
stdenv = llvmPackages_latest.stdenv;
|
||||
|
||||
release = rec {
|
||||
version = "2024.11";
|
||||
version = "2025.06";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bsc-pm";
|
||||
repo = "llvm";
|
||||
rev = "refs/tags/github-release-${version}";
|
||||
hash = "sha256-pF0qa987nLkIJPUrXh1srzBkLPfb31skIegD0bl34Kg=";
|
||||
hash = "sha256-ww9PpRmtz/M9IyLiZ8rAehx2UW4VpQt+svf4XfKBzKo=";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -43,32 +43,36 @@ let
|
||||
|
||||
source = if (useGit) then git else release;
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
in stdenv.mkDerivation {
|
||||
pname = "clang-ompss2";
|
||||
inherit (source) src version;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
isClang = true;
|
||||
|
||||
passthru = {
|
||||
CC = "clang";
|
||||
CXX = "clang++";
|
||||
|
||||
isClang = true;
|
||||
isClangWithOmpss = true;
|
||||
|
||||
inherit gcc zlib;
|
||||
};
|
||||
|
||||
isClangWithOmpss = true;
|
||||
|
||||
nativeBuildInputs = [ zlib ];
|
||||
|
||||
buildInputs = [
|
||||
which
|
||||
nativeBuildInputs = [
|
||||
bash
|
||||
cmake
|
||||
elfutils
|
||||
llvmPackages_latest.lld
|
||||
pkg-config
|
||||
python3
|
||||
perl
|
||||
cmake
|
||||
llvmPackages_latest.lld
|
||||
elfutils
|
||||
which
|
||||
zlib
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libffi
|
||||
pkg-config
|
||||
zlib
|
||||
gcc.cc.lib # Required for libstdc++.so.6
|
||||
];
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
stdenv
|
||||
, lib
|
||||
, gcc
|
||||
, gcc13
|
||||
, clangOmpss2Unwrapped
|
||||
, writeShellScript
|
||||
, openmp ? null
|
||||
, wrapCCWith
|
||||
, llvmPackages_latest
|
||||
@@ -10,11 +12,13 @@
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib) assertMsg optional optionalString;
|
||||
|
||||
usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes");
|
||||
sameNosv = openmp.nosv == ompss2rt.nosv;
|
||||
in
|
||||
|
||||
assert lib.assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V";
|
||||
assert assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V";
|
||||
|
||||
let
|
||||
homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME";
|
||||
@@ -34,14 +38,13 @@ let
|
||||
targetConfig = stdenv.targetPlatform.config;
|
||||
inherit gcc;
|
||||
cc = clangOmpss2Unwrapped;
|
||||
in wrapCCWith {
|
||||
inherit cc bintools;
|
||||
# extraPackages adds packages to depsTargetTargetPropagated
|
||||
extraPackages = lib.optional (openmp != null) openmp;
|
||||
|
||||
gccVersion = with lib.versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
|
||||
|
||||
extraBuildCommands = ''
|
||||
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
||||
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags
|
||||
echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags
|
||||
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags
|
||||
echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-ldflags
|
||||
echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
|
||||
|
||||
for dir in ${gcc.cc}/include/c++/*; do
|
||||
@@ -54,14 +57,51 @@ in wrapCCWith {
|
||||
echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags
|
||||
|
||||
wrap clang++ $wrapper $ccPath/clang++
|
||||
|
||||
'' + lib.optionalString (openmp != null) ''
|
||||
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
|
||||
'' + lib.optionalString (ompss2rt != null) ''
|
||||
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
|
||||
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
|
||||
'' + lib.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 bintools extraPackages;
|
||||
cc = cc.override { gcc = gcc13; }; # Intel uses gcc13, so we have to match it
|
||||
# extraPackages adds packages to depsTargetTargetPropagated
|
||||
extraBuildCommands = intelExtraBuildCommands + envExports;
|
||||
};
|
||||
|
||||
in wrappedCC.overrideAttrs (oldAttrs: {
|
||||
passthru = oldAttrs.passthru // {
|
||||
forIcpx = wrappedCCIntel;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -68,6 +68,7 @@ stdenv.mkDerivation rec {
|
||||
rm -f $out/lib/libiomp*
|
||||
'' + lib.optionalString enableNosv ''
|
||||
rm -f $out/lib/libomp.*
|
||||
rm -f $out/libllvmrt/libomp.*
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
|
||||
@@ -1,35 +1,47 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
libtirpc,
|
||||
fetchFromGitHub
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lmbench";
|
||||
version = "701c6c35";
|
||||
version = "941a0dcc";
|
||||
|
||||
# We use the intel repo as they have fixed some problems
|
||||
src = fetchFromGitHub {
|
||||
owner = "intel";
|
||||
repo = pname;
|
||||
rev = "701c6c35b0270d4634fb1dc5272721340322b8ed";
|
||||
sha256 = "0sf6zk03knkardsfd6qx7drpm56nhg53n885cylkggk83r38idyr";
|
||||
rev = "941a0dcc0e7bdd9bb0dee05d7f620e77da8c43af";
|
||||
sha256 = "sha256-SzwplRBO3V0R3m3p15n71ivYBMGoLsajFK2TapYxdqk=";
|
||||
};
|
||||
|
||||
postUnpack = ''
|
||||
export sourceRoot="$sourceRoot/src"
|
||||
'';
|
||||
|
||||
postPatch = ''
|
||||
sed -i "s@/bin/rm@rm@g" $(find . -name Makefile)
|
||||
'';
|
||||
|
||||
buildInputs = [ libtirpc ];
|
||||
patches = [
|
||||
./fix-install.patch
|
||||
./gcc-14.patch
|
||||
./fix-cross.patch
|
||||
];
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
enableParallelBuilding = false;
|
||||
|
||||
preBuild = ''
|
||||
makeFlagsArray+=(BASE=$out)
|
||||
makeFlagsArray+=(
|
||||
-C src
|
||||
BASE=$out
|
||||
CFLAGS=-Wno-implicit-int
|
||||
CPPFLAGS=-I${libtirpc.dev}/include/tirpc
|
||||
LDFLAGS=-ltirpc
|
||||
CC=${stdenv.cc.targetPrefix}cc
|
||||
AR=${stdenv.cc.targetPrefix}ar
|
||||
)
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
||||
13
pkgs/lmbench/fix-cross.patch
Normal file
13
pkgs/lmbench/fix-cross.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/src/Makefile b/src/Makefile
|
||||
index 2555014..356eeb3 100644
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -36,7 +36,7 @@ SHELL=/bin/sh
|
||||
|
||||
CC=`../scripts/compiler`
|
||||
MAKE=`../scripts/make`
|
||||
-AR=ar
|
||||
+AR?=ar
|
||||
ARCREATE=cr
|
||||
|
||||
# base of installation location
|
||||
10
pkgs/lmbench/fix-install.patch
Normal file
10
pkgs/lmbench/fix-install.patch
Normal file
@@ -0,0 +1,10 @@
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -144,6 +144,7 @@ install-target:
|
||||
if [ ! -d $(BASE)/include ]; then mkdir $(BASE)/include; fi
|
||||
if [ ! -d $(BASE)/lib ]; then mkdir $(BASE)/lib; fi
|
||||
cp $(EXES) $(BASE)/bin
|
||||
+ cp $(OPT_EXES) $(BASE)/bin
|
||||
cp $(INCS) $(BASE)/include
|
||||
cp $O/lmbench.a $(BASE)/lib/libmbench.a
|
||||
cd ../doc; env MAKEFLAGS="$(MAKEFLAGS)" make CC="${CC}" OS="${OS}" BASE="$(BASE)" install
|
||||
77
pkgs/lmbench/gcc-14.patch
Normal file
77
pkgs/lmbench/gcc-14.patch
Normal file
@@ -0,0 +1,77 @@
|
||||
From a3c6e7d303cd8368e8d4e35be7cbc1997e801257 Mon Sep 17 00:00:00 2001
|
||||
From: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
|
||||
Date: Mon, 21 Jul 2025 17:38:58 +0200
|
||||
Subject: [PATCH] Misc fixes to build with gcc 14
|
||||
|
||||
---
|
||||
src/bench.h | 2 ++
|
||||
src/lat_select.c | 2 +-
|
||||
src/lib_debug.c | 1 +
|
||||
src/lib_sched.c | 2 +-
|
||||
src/lib_timing.c | 2 +-
|
||||
5 files changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/bench.h b/src/bench.h
|
||||
index 8166408..4da9079 100644
|
||||
--- a/src/bench.h
|
||||
+++ b/src/bench.h
|
||||
@@ -320,4 +320,6 @@ extern int handle_scheduler(int childno, int benchproc, int nbenchprocs);
|
||||
extern char *rpc_xact_1();
|
||||
extern char *client_rpc_xact_1();
|
||||
|
||||
+void lmbench_usage(int argc, char *argv[], char* usage);
|
||||
+
|
||||
#endif /* _BENCH_H */
|
||||
diff --git a/src/lat_select.c b/src/lat_select.c
|
||||
index 583b505..39df369 100644
|
||||
--- a/src/lat_select.c
|
||||
+++ b/src/lat_select.c
|
||||
@@ -164,7 +164,7 @@ doit(iter_t iterations, void * cookie)
|
||||
state_t * state = (state_t *)cookie;
|
||||
fd_set nosave;
|
||||
static struct timeval tv;
|
||||
- static count = 0;
|
||||
+ static int count = 0;
|
||||
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 0;
|
||||
diff --git a/src/lib_debug.c b/src/lib_debug.c
|
||||
index e8347dd..cf65312 100644
|
||||
--- a/src/lib_debug.c
|
||||
+++ b/src/lib_debug.c
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "bench.h"
|
||||
#include "lib_debug.h"
|
||||
+#include <math.h>
|
||||
|
||||
/*
|
||||
* return micro-seconds / iteration at the the fraction point.
|
||||
diff --git a/src/lib_sched.c b/src/lib_sched.c
|
||||
index aa83ae0..4f16bbf 100644
|
||||
--- a/src/lib_sched.c
|
||||
+++ b/src/lib_sched.c
|
||||
@@ -91,7 +91,7 @@ handle_scheduler(int childno, int benchproc, int nbenchprocs)
|
||||
childno * (nbenchprocs + 1) + benchproc);
|
||||
} else {
|
||||
/* default action: do nothing */
|
||||
- return;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
return sched_pin(cpu % sched_ncpus());
|
||||
diff --git a/src/lib_timing.c b/src/lib_timing.c
|
||||
index af8cf68..7ec9652 100644
|
||||
--- a/src/lib_timing.c
|
||||
+++ b/src/lib_timing.c
|
||||
@@ -1623,7 +1623,7 @@ bread(void* buf, long nbytes)
|
||||
void
|
||||
touch(char *buf, int nbytes)
|
||||
{
|
||||
- static psize;
|
||||
+ static int psize;
|
||||
|
||||
if (!psize) {
|
||||
psize = getpagesize();
|
||||
--
|
||||
2.49.0
|
||||
|
||||
@@ -32,19 +32,22 @@ stdenv.mkDerivation rec {
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
buildInputs = [
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
nanos6
|
||||
gperf
|
||||
bison
|
||||
flex
|
||||
python3
|
||||
gfortran
|
||||
pkg-config
|
||||
sqlite.dev
|
||||
bison
|
||||
flex
|
||||
gperf
|
||||
gcc
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
nanos6
|
||||
sqlite.dev
|
||||
];
|
||||
|
||||
patches = [ ./intel.patch ];
|
||||
|
||||
preConfigure = ''
|
||||
|
||||
@@ -16,10 +16,11 @@
|
||||
, jemallocNanos6 ? null
|
||||
, cachelineBytes ? 64
|
||||
, enableGlibcxxDebug ? false
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
, useGit ? false
|
||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
|
||||
, gitBranch ? "master"
|
||||
, gitCommit ? "9f54c988e0a8b9c011d9d526acdb8d76f18fcae4"
|
||||
, gitCommit ? "f82762b66c82b5174a8eaad33f6c2f335ac759b4"
|
||||
}:
|
||||
|
||||
assert enableJemalloc -> (jemallocNanos6 != null);
|
||||
@@ -28,12 +29,12 @@ with lib;
|
||||
|
||||
let
|
||||
release = rec {
|
||||
version = "4.2";
|
||||
version = "4.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bsc-pm";
|
||||
repo = "nanos6";
|
||||
rev = "version-${version}";
|
||||
hash = "sha256-tBrRGLCjSFYdmVGPAC2DzYY6HJyZGUOMeykujafn7+4=";
|
||||
hash = "sha256-/c6WiKBsAo/01uvMRmjv0PMucbrgvaGmbxlPE6q+dfE=";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -47,6 +48,8 @@ let
|
||||
};
|
||||
|
||||
source = if (useGit) then git else release;
|
||||
|
||||
isCross = stdenv.hostPlatform != stdenv.buildPlatform;
|
||||
in
|
||||
stdenv.mkDerivation (source // {
|
||||
pname = "nanos6";
|
||||
@@ -71,9 +74,11 @@ in
|
||||
"--disable-all-instrumentations"
|
||||
"--enable-ovni-instrumentation"
|
||||
"--with-ovni=${ovni}"
|
||||
"--with-boost=${boost.dev}"
|
||||
] ++
|
||||
(optional enableJemalloc "--with-jemalloc=${jemallocNanos6}") ++
|
||||
(optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG");
|
||||
(optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG") ++
|
||||
(optional isCross "--with-symbol-resolution=ifunc");
|
||||
|
||||
postConfigure = lib.optionalString (!enableDebug) ''
|
||||
# Disable debug
|
||||
@@ -88,23 +93,29 @@ in
|
||||
dontStrip = enableDebug;
|
||||
separateDebugInfo = true;
|
||||
|
||||
buildInputs = [
|
||||
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
|
||||
numactl
|
||||
hwloc
|
||||
papi
|
||||
ovni
|
||||
];
|
||||
] ++ lib.optionals enablePapi [ papi ];
|
||||
|
||||
# Create a script that sets NANOS6_HOME
|
||||
postInstall = ''
|
||||
mkdir -p $out/nix-support
|
||||
echo "export NANOS6_HOME=$out" >> $out/nix-support/setup-hook
|
||||
'';
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/bsc-pm/nanos6";
|
||||
|
||||
@@ -6,24 +6,26 @@
|
||||
, pkg-config
|
||||
, numactl
|
||||
, hwloc
|
||||
, papi
|
||||
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
|
||||
, cacheline ? 64 # bits
|
||||
, ovni ? null
|
||||
, useGit ? false
|
||||
, gitUrl ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git"
|
||||
, gitBranch ? "master"
|
||||
, gitCommit ? "cfd361bd1dd30c96da405e6bbaa7e78f5f93dfda"
|
||||
, gitCommit ? "9f47063873c3aa9d6a47482a82c5000a8c813dd8"
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
release = rec {
|
||||
version = "3.1.0";
|
||||
version = "3.2.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bsc-pm";
|
||||
repo = "nos-v";
|
||||
rev = "${version}";
|
||||
hash = "sha256-Pkre+ZZsREDxJLCoIoPN1HQDuUa2H1IQyKB3omg6qaU=";
|
||||
hash = "sha256-yaz92426EM8trdkBJlISmAoG9KJCDTvoAW/HKrasvOw=";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -56,5 +58,5 @@ in
|
||||
numactl
|
||||
hwloc
|
||||
ovni
|
||||
];
|
||||
] ++ lib.optionals enablePapi [ papi ];
|
||||
}
|
||||
|
||||
84
pkgs/onemath/default.nix
Normal file
84
pkgs/onemath/default.nix
Normal file
@@ -0,0 +1,84 @@
|
||||
{ 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,9 +24,10 @@ stdenv.mkDerivation rec {
|
||||
|
||||
doCheck = true;
|
||||
enableParallelBuilding = true;
|
||||
nativeBuildInputs = [ mpiAll ];
|
||||
buildInputs = [ mpiAll ];
|
||||
hardeningDisable = [ "all" ];
|
||||
configureFlags = [
|
||||
configureFlags = [
|
||||
"CC=mpicc"
|
||||
"CXX=mpicxx"
|
||||
];
|
||||
@@ -40,7 +41,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = {
|
||||
description = "OSU Micro-Benchmarks";
|
||||
homepage = http://mvapich.cse.ohio-state.edu/benchmarks/;
|
||||
homepage = "http://mvapich.cse.ohio-state.edu/benchmarks/";
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
|
||||
@@ -7,23 +7,21 @@
|
||||
, useGit ? false
|
||||
, gitBranch ? "master"
|
||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/rarias/ovni.git"
|
||||
, gitCommit ? "a7103f8510d1ec124c3e01ceb47d1e443e98bbf4"
|
||||
, gitCommit ? "e4f62382076f0cf0b1d08175cf57cc0bc51abc61"
|
||||
, enableDebug ? false
|
||||
# Only enable MPI if the build is native (fails on cross-compilation)
|
||||
, useMpi ? (stdenv.buildPlatform.canExecute stdenv.hostPlatform)
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
release = rec {
|
||||
version = "1.11.0";
|
||||
version = "1.12.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bsc-pm";
|
||||
repo = "ovni";
|
||||
rev = "${version}";
|
||||
hash = "sha256-DEZUK1dvbPGH5WYkZ2hpP5PShkMxXkHOqMwgYUHHxeM=";
|
||||
} // { shortRev = "a7103f8"; };
|
||||
hash = "sha256-H04JvsVKrdqr3ON7JhU0g17jjlg/jzQ7eTfx9vUNd3E=";
|
||||
} // { shortRev = "a73afcf"; };
|
||||
};
|
||||
|
||||
git = rec {
|
||||
@@ -45,7 +43,7 @@ in
|
||||
postPatch = ''
|
||||
patchShebangs --build test/
|
||||
'';
|
||||
nativeBuildInputs = [ cmake ];
|
||||
nativeBuildInputs = [ cmake ] ++ lib.optionals (useMpi) [ mpi ];
|
||||
buildInputs = lib.optionals (useMpi) [ mpi ];
|
||||
cmakeBuildType = if (enableDebug) then "Debug" else "Release";
|
||||
cmakeFlags = [
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
stdenv
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, boost
|
||||
, libxml2
|
||||
@@ -11,22 +11,32 @@
|
||||
, openssl
|
||||
, glibcLocales
|
||||
, wrapGAppsHook
|
||||
|
||||
, enableDebug ? false
|
||||
}:
|
||||
|
||||
let
|
||||
wx = wxGTK32;
|
||||
version = "4.12.0";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "wxparaver";
|
||||
version = "4.11.2";
|
||||
inherit version;
|
||||
|
||||
src = builtins.fetchGit {
|
||||
url = "https://github.com/bsc-performance-tools/wxparaver.git";
|
||||
rev = "129e6b4a4f061e5a319049db8db1620f5de3bd70"; # v4.11.2 (missing tag)
|
||||
ref = "master";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bsc-performance-tools";
|
||||
repo = "wxparaver";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-YsO5gsuEFQdki3lQudEqgo5WXOt/fPdvNw5OxZQ86Zo=";
|
||||
};
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
patches = [
|
||||
./do-not-steal-focus-on-redraw.patch
|
||||
|
||||
# Fix for boost >=1.87 (thanks to gamezelda)
|
||||
# https://aur.archlinux.org/cgit/aur.git/commit/?h=wxparaver&id=b0dcd08c472536e0a1a3cc1dfbc4c77d9f5e0d47
|
||||
./fix-boost-87.patch
|
||||
];
|
||||
|
||||
# Fix the PARAVER_HOME variable
|
||||
postPatch = ''
|
||||
@@ -34,13 +44,20 @@ stdenv.mkDerivation rec {
|
||||
sed -i '1aexport LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"' docs/wxparaver
|
||||
'';
|
||||
|
||||
dontStrip = true;
|
||||
enableParallelBuilding = true;
|
||||
|
||||
preConfigure = ''
|
||||
export CFLAGS="-O3"
|
||||
export CXXFLAGS="-O3"
|
||||
'';
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
env =
|
||||
let
|
||||
flags = if enableDebug then "-ggdb -Og" else "-O3";
|
||||
in
|
||||
{
|
||||
CFLAGS = flags;
|
||||
CXXFLAGS = flags;
|
||||
};
|
||||
|
||||
configureFlags = [
|
||||
"--with-boost=${boost}"
|
||||
@@ -50,19 +67,19 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
automake
|
||||
autoreconfHook
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
autoreconfHook
|
||||
boost
|
||||
libxml2.dev
|
||||
libxml2
|
||||
xml2
|
||||
wx
|
||||
autoconf
|
||||
automake
|
||||
paraverKernel
|
||||
openssl.dev
|
||||
openssl
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
|
||||
26
pkgs/paraver/do-not-steal-focus-on-redraw.patch
Normal file
26
pkgs/paraver/do-not-steal-focus-on-redraw.patch
Normal file
@@ -0,0 +1,26 @@
|
||||
From 2b185e1b5ce52808b3026334851dbcd5a640ed4d Mon Sep 17 00:00:00 2001
|
||||
From: aleixbonerib <aleix.boneribo@bsc.es>
|
||||
Date: Mon, 10 Jun 2024 20:59:45 +0200
|
||||
Subject: [PATCH] fix: do not set focus on redraw
|
||||
|
||||
Some wm can change the window size without focusing. Right now, when the
|
||||
plot is resized it takes back focus.
|
||||
---
|
||||
src/gtimeline.cpp | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/src/gtimeline.cpp b/src/gtimeline.cpp
|
||||
index 23ebef2..a896066 100644
|
||||
--- a/src/gtimeline.cpp
|
||||
+++ b/src/gtimeline.cpp
|
||||
@@ -899,7 +899,6 @@ void gTimeline::redraw()
|
||||
|
||||
drawZone->Refresh();
|
||||
|
||||
- SetFocus();
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.44.1
|
||||
|
||||
@@ -11,7 +11,7 @@ diff --git a/api/semanticcolor.cpp b/api/semanticcolor.cpp
|
||||
index 9f86960..22859eb 100644
|
||||
--- a/api/semanticcolor.cpp
|
||||
+++ b/api/semanticcolor.cpp
|
||||
@@ -232,8 +232,9 @@ rgb CodeColor::getColor( PRV_UINT32 pos ) const
|
||||
@@ -295,8 +295,9 @@ rgb SemanticColor::getColor( PRV_UINT32 pos ) const
|
||||
{
|
||||
if( pos == 0 && ParaverConfig::getInstance()->getColorsTimelineUseZero() )
|
||||
return ParaverConfig::getInstance()->getColorsTimelineColorZero();
|
||||
@@ -22,26 +22,26 @@ index 9f86960..22859eb 100644
|
||||
+ return colors[ pos + 1 ];
|
||||
}
|
||||
|
||||
void CodeColor::setColor( PRV_UINT32 whichPos, rgb whichColor )
|
||||
@@ -250,6 +251,12 @@ void CodeColor::setColor( PRV_UINT32 whichPos, rgb whichColor )
|
||||
void SemanticColor::setColor( PRV_UINT32 whichPos, rgb whichColor )
|
||||
@@ -314,6 +315,12 @@ void SemanticColor::setColor( PRV_UINT32 whichPos, rgb whichColor )
|
||||
colors[ whichPos ] = whichColor;
|
||||
}
|
||||
|
||||
+void CodeColor::cutAfter( PRV_UINT32 pos )
|
||||
+void SemanticColor::cutAfter( PRV_UINT32 pos )
|
||||
+{
|
||||
+ if ( pos < colors.size() )
|
||||
+ colors.erase( colors.begin() + pos, colors.end() );
|
||||
+}
|
||||
+
|
||||
void CodeColor::setCustomColor( TSemanticValue whichValue, rgb color )
|
||||
void SemanticColor::setCustomColor( TSemanticValue whichValue, rgb color )
|
||||
{
|
||||
customPalette[ whichValue ] = color;
|
||||
diff --git a/api/semanticcolor.h b/api/semanticcolor.h
|
||||
index a079556..bddf3d8 100644
|
||||
--- a/api/semanticcolor.h
|
||||
+++ b/api/semanticcolor.h
|
||||
@@ -98,6 +98,7 @@ class CodeColor: public SemanticColor
|
||||
|
||||
@@ -114,6 +114,7 @@ class SemanticColor
|
||||
// Code Color methods
|
||||
PRV_UINT32 getNumColors() const;
|
||||
void setColor( PRV_UINT32 pos, rgb color );
|
||||
+ void cutAfter( PRV_UINT32 pos );
|
||||
@@ -61,7 +61,7 @@ index b0d2050..ee2ab69 100644
|
||||
for ( auto it : semanticColors )
|
||||
{
|
||||
std::tie( tmpColor.red, tmpColor.green, tmpColor.blue ) = it.second;
|
||||
myCodeColor.setColor( it.first, tmpColor );
|
||||
mySemanticColor.setColor( it.first, tmpColor );
|
||||
+ if (it.first > maxValue)
|
||||
+ maxValue = it.first;
|
||||
}
|
||||
@@ -69,7 +69,7 @@ index b0d2050..ee2ab69 100644
|
||||
+ // Cut the palette after the highest defined value, so there are no
|
||||
+ // extra expanded values
|
||||
+ if ( !pcfParser.expandColors )
|
||||
+ myCodeColor.cutAfter(maxValue);
|
||||
+ mySemanticColor.cutAfter(maxValue);
|
||||
+
|
||||
myEventLabels = EventLabels( pcfParser );
|
||||
myStateLabels = StateLabels( pcfParser );
|
||||
|
||||
87
pkgs/paraver/fix-boost-87.patch
Normal file
87
pkgs/paraver/fix-boost-87.patch
Normal file
@@ -0,0 +1,87 @@
|
||||
From 7ecd888e2ebb9e8c5582851d3c50bff61022708e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram@gmail.com>
|
||||
Date: Sat, 29 Mar 2025 18:14:25 +0000
|
||||
Subject: [PATCH] tutorialsdownload: Fix Boost ASIO 1.87.0 removals
|
||||
|
||||
---
|
||||
src/tutorialsdownload.cpp | 25 ++++++++++++-------------
|
||||
1 file changed, 12 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/src/tutorialsdownload.cpp b/src/tutorialsdownload.cpp
|
||||
index a1921fd..6ce9dc2 100644
|
||||
--- a/src/tutorialsdownload.cpp
|
||||
+++ b/src/tutorialsdownload.cpp
|
||||
@@ -121,13 +121,13 @@ void TutorialsProgress::updateInstall( int whichValue )
|
||||
class client
|
||||
{
|
||||
public:
|
||||
- client( boost::asio::io_service& io_service,
|
||||
+ client( boost::asio::io_context& io_context,
|
||||
boost::asio::ssl::context& context,
|
||||
const std::string& server, const std::string& path,
|
||||
ofstream& storeFile,
|
||||
TutorialsProgress *progress )
|
||||
- : resolver_( io_service ),
|
||||
- socket_( io_service, context ),
|
||||
+ : resolver_( io_context ),
|
||||
+ socket_( io_context, context ),
|
||||
store_( storeFile ),
|
||||
progress_( progress )
|
||||
{
|
||||
@@ -143,8 +143,7 @@ class client
|
||||
|
||||
// Start an asynchronous resolve to translate the server and service names
|
||||
// into a list of endpoints.
|
||||
- tcp::resolver::query query( server, "https" );
|
||||
- resolver_.async_resolve( query,
|
||||
+ resolver_.async_resolve( server, "https",
|
||||
boost::bind( &client::handle_resolve,
|
||||
this,
|
||||
boost::asio::placeholders::error,
|
||||
@@ -154,7 +153,7 @@ class client
|
||||
private:
|
||||
|
||||
void handle_resolve( const boost::system::error_code& err,
|
||||
- tcp::resolver::iterator endpoint_iterator )
|
||||
+ const tcp::resolver::results_type& endpoints )
|
||||
{
|
||||
if ( !err )
|
||||
{
|
||||
@@ -162,7 +161,7 @@ class client
|
||||
socket_.set_verify_callback( boost::bind( &client::verify_certificate, this, _1, _2 ) );
|
||||
|
||||
boost::asio::async_connect( socket_.lowest_layer(),
|
||||
- endpoint_iterator,
|
||||
+ endpoints,
|
||||
boost::bind( &client::handle_connect,
|
||||
this,
|
||||
boost::asio::placeholders::error ) );
|
||||
@@ -536,9 +535,9 @@ bool TutorialsDownload::downloadTutorialsList() const
|
||||
boost::asio::ssl::context ctx( boost::asio::ssl::context::sslv23 );
|
||||
ctx.set_default_verify_paths();
|
||||
|
||||
- boost::asio::io_service io_service;
|
||||
- client c( io_service, ctx, server, path, storeFile, nullptr );
|
||||
- io_service.run();
|
||||
+ boost::asio::io_context io_context;
|
||||
+ client c( io_context, ctx, server, path, storeFile, nullptr );
|
||||
+ io_context.run();
|
||||
|
||||
doneDownload = true;
|
||||
}
|
||||
@@ -580,9 +579,9 @@ bool TutorialsDownload::download( const TutorialData& whichTutorial, string& tut
|
||||
boost::asio::ssl::context ctx( boost::asio::ssl::context::sslv23 );
|
||||
ctx.set_default_verify_paths();
|
||||
|
||||
- boost::asio::io_service io_service;
|
||||
- client c( io_service, ctx, std::string( server.mb_str() ), std::string( path.mb_str() ), storeFile, &progress );
|
||||
- io_service.run();
|
||||
+ boost::asio::io_context io_context;
|
||||
+ client c( io_context, ctx, std::string( server.mb_str() ), std::string( path.mb_str() ), storeFile, &progress );
|
||||
+ io_context.run();
|
||||
}
|
||||
catch ( ParaverKernelException& e )
|
||||
{
|
||||
--
|
||||
2.49.0
|
||||
|
||||
23
pkgs/paraver/fix-libxml2-deprecation.patch
Normal file
23
pkgs/paraver/fix-libxml2-deprecation.patch
Normal file
@@ -0,0 +1,23 @@
|
||||
commit 60aa3ffa05f6b40db191a880e9e622d608744c1f
|
||||
Author: Aleix Boné <aleix.boneribo@bsc.es>
|
||||
Date: Sun Jul 21 12:11:30 2025 +0200
|
||||
|
||||
fix libxml2 deprecated macro
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 7fe1876..3ce1091 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -46,7 +46,10 @@ AC_PROG_CPP
|
||||
AC_PROG_CXXCPP
|
||||
AC_PROG_SED
|
||||
|
||||
-AM_PATH_XML2
|
||||
+PKG_PROG_PKG_CONFIG
|
||||
+PKG_CHECK_MODULES([XML], [libxml-2.0])
|
||||
+
|
||||
+AC_SUBST(XML_CPPFLAGS, $XML_CFLAGS)
|
||||
|
||||
AX_BOOST_BASE(1.36)
|
||||
AX_BOOST_SERIALIZATION
|
||||
|
||||
@@ -1,32 +1,36 @@
|
||||
{
|
||||
stdenv
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, boost
|
||||
, libxml2
|
||||
, xml2
|
||||
, wxGTK32
|
||||
, autoconf
|
||||
, automake
|
||||
, pkg-config
|
||||
, zlib
|
||||
|
||||
, enableDebug ? false
|
||||
}:
|
||||
|
||||
let
|
||||
wx = wxGTK32;
|
||||
version = "4.12.0";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "paraver-kernel";
|
||||
version = "${src.shortRev}";
|
||||
inherit version;
|
||||
|
||||
src = builtins.fetchGit {
|
||||
url = "https://github.com/bsc-performance-tools/paraver-kernel.git";
|
||||
rev = "2e167da3cee78ca11e31b74faefb23f12bac2b8c"; # master (missing tag)
|
||||
ref = "master";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bsc-performance-tools";
|
||||
repo = "paraver-kernel";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-Xs7g8ITZhPt00v7o2WlTddbou8C8Rc9kBMFpl2WsCS4=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/bsc-performance-tools/paraver-kernel/pull/11
|
||||
./dont-expand-colors.patch
|
||||
# TODO: add this back if it's still relevant
|
||||
# ./dont-expand-colors.patch
|
||||
./fix-libxml2-deprecation.patch
|
||||
];
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
@@ -34,24 +38,31 @@ stdenv.mkDerivation rec {
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
preConfigure = ''
|
||||
export CFLAGS="-O3 -DPARALLEL_ENABLED"
|
||||
export CXXFLAGS="-O3 -DPARALLEL_ENABLED"
|
||||
'';
|
||||
env =
|
||||
let
|
||||
flags = "-DPARALLEL_ENABLED " + (if enableDebug then "-ggdb -Og" else "-O3");
|
||||
in
|
||||
{
|
||||
CFLAGS = flags;
|
||||
CXXFLAGS = flags;
|
||||
};
|
||||
|
||||
configureFlags = [
|
||||
"--with-boost=${boost}"
|
||||
"--enable-openmp"
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
boost
|
||||
libxml2.dev
|
||||
xml2
|
||||
autoconf
|
||||
automake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
libxml2.dev
|
||||
xml2
|
||||
zlib
|
||||
];
|
||||
}
|
||||
|
||||
@@ -61,13 +61,16 @@ stdenv.mkDerivation rec {
|
||||
"--with-wx-config=${wx}/bin/wx-config"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
automake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
xml2
|
||||
libxml2.dev
|
||||
wx
|
||||
autoconf
|
||||
automake
|
||||
openssl.dev
|
||||
];
|
||||
|
||||
|
||||
@@ -18,8 +18,12 @@ stdenv.mkDerivation rec {
|
||||
hardeningDisable = [ "all" ];
|
||||
dontStrip = true;
|
||||
configureFlags = [ "--with-ovni=${ovni}" ];
|
||||
buildInputs = [
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
ovni
|
||||
mpi
|
||||
];
|
||||
|
||||
68
pkgs/tacuda/default.nix
Normal file
68
pkgs/tacuda/default.nix
Normal file
@@ -0,0 +1,68 @@
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, automake
|
||||
, autoconf
|
||||
, libtool
|
||||
, gnumake
|
||||
, autoreconfHook
|
||||
, boost
|
||||
, cudaPackages
|
||||
|
||||
, useGit ? false
|
||||
, gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tacuda/tacuda.git"
|
||||
, gitBranch ? "main"
|
||||
, gitCommit ? "35234f9445e6149a2bd38d119841e2485d6ee05e"
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
release_ver = "2.1.0";
|
||||
release = {
|
||||
version = release_ver;
|
||||
src = fetchFromGitHub {
|
||||
owner = "bsc-pm";
|
||||
repo = "tacuda";
|
||||
rev = release_ver;
|
||||
hash = "sha256-Cj3EiLVJSLvRv0ydeg7Vp4SpkniEqHkcWF+YOJQ8EcM=";
|
||||
};
|
||||
};
|
||||
|
||||
git = rec {
|
||||
version = src.shortRev;
|
||||
src = builtins.fetchGit {
|
||||
url = gitUrl;
|
||||
ref = gitBranch;
|
||||
rev = gitCommit;
|
||||
};
|
||||
};
|
||||
|
||||
source = if (useGit) then git else release;
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "tacuda";
|
||||
inherit (source) src version;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
separateDebugInfo = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
automake
|
||||
autoconf
|
||||
libtool
|
||||
gnumake
|
||||
];
|
||||
|
||||
patches = [ ./fix_config.patch ];
|
||||
|
||||
configureFlags = [ "--with-cuda-include=${cudaPackages.cudatoolkit}/include" ];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
cudaPackages.libcublas
|
||||
cudaPackages.cuda_cudart
|
||||
];
|
||||
|
||||
}
|
||||
13
pkgs/tacuda/fix_config.patch
Normal file
13
pkgs/tacuda/fix_config.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/m4/cuda.m4 b/m4/cuda.m4
|
||||
index 23f5c94..8f9b534 100644
|
||||
--- a/m4/cuda.m4
|
||||
+++ b/m4/cuda.m4
|
||||
@@ -40,7 +40,7 @@ search_libs="cuda cublas cudart"
|
||||
required_libs=""
|
||||
|
||||
m4_foreach([function],
|
||||
- [cuInit,
|
||||
+ [
|
||||
cublasSgemm,
|
||||
cudaStreamCreate,
|
||||
cudaLaunchKernel,
|
||||
@@ -8,14 +8,13 @@
|
||||
, gnumake
|
||||
, boost
|
||||
, mpi
|
||||
, gcc
|
||||
, autoreconfHook
|
||||
, enableOvni ? true
|
||||
, ovni ? null
|
||||
, useGit ? false
|
||||
, gitUrl ? "ssh://git@bscpm04.bsc.es/interoperability/tampi.git"
|
||||
, gitBranch ? "master"
|
||||
, gitCommit ? "a5c93bf8ab045b71ad4a8d5e2c991ce774db5cbc"
|
||||
, gitCommit ? "f6455db9d3124ae36e715a4874fd49720e79f20a"
|
||||
}:
|
||||
|
||||
with lib;
|
||||
@@ -24,12 +23,12 @@ assert enableOvni -> (ovni != null);
|
||||
|
||||
let
|
||||
release = rec {
|
||||
version = "4.0";
|
||||
version = "4.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bsc-pm";
|
||||
repo = "tampi";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-R7ew5tsrxGReTvOeeZe1FD0oThBhOHoDGv6Mo2sbmDg=";
|
||||
hash = "sha256-SwfPSnwcZnRnSgNvCD5sFSUJRpWINqI5I4adj5Hh+XY=";
|
||||
};
|
||||
};
|
||||
git = rec {
|
||||
@@ -41,20 +40,23 @@ let
|
||||
};
|
||||
};
|
||||
source = if (useGit) then git else release;
|
||||
in stdenv.mkDerivation rec {
|
||||
in stdenv.mkDerivation {
|
||||
pname = "tampi";
|
||||
inherit (source) src version;
|
||||
enableParallelBuilding = true;
|
||||
separateDebugInfo = true;
|
||||
buildInputs = [
|
||||
autoreconfHook
|
||||
automake
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
libtool
|
||||
automake
|
||||
autoreconfHook
|
||||
gnumake
|
||||
libtool
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
mpi
|
||||
gcc
|
||||
] ++ optional (enableOvni) ovni;
|
||||
configureFlags = optional (enableOvni) "--with-ovni=${ovni}";
|
||||
dontDisableStatic = true;
|
||||
|
||||
46
pkgs/taopencl/default.nix
Normal file
46
pkgs/taopencl/default.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
stdenv
|
||||
, automake
|
||||
, autoconf
|
||||
, libtool
|
||||
, gnumake
|
||||
, boost
|
||||
, mpi
|
||||
, gcc
|
||||
, autoreconfHook
|
||||
, ocl-icd
|
||||
, opencl-headers
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "taopencl";
|
||||
version = finalAttrs.src.shortRev;
|
||||
|
||||
src = builtins.fetchGit {
|
||||
url = "git@gitlab-internal.bsc.es:task-awareness/taopencl/taopencl.git";
|
||||
ref = "master";
|
||||
rev = "c3b7b32ae8fa4af7ceff598532a881f8f1490aaf";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
separateDebugInfo = true;
|
||||
|
||||
configureFlags = [
|
||||
"--with-opencl-lib=${ocl-icd}/lib"
|
||||
"--with-opencl-include=${opencl-headers}/include"
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
autoreconfHook
|
||||
automake
|
||||
autoconf
|
||||
libtool
|
||||
gnumake
|
||||
boost
|
||||
mpi
|
||||
gcc
|
||||
];
|
||||
|
||||
dontDisableStatic = true;
|
||||
hardeningDisable = [ "all" ];
|
||||
})
|
||||
94
pkgs/tasycl/default.nix
Normal file
94
pkgs/tasycl/default.nix
Normal file
@@ -0,0 +1,94 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, withCFlags
|
||||
, intelPackages
|
||||
, fetchFromGitHub
|
||||
, automake
|
||||
, autoconf
|
||||
, libtool
|
||||
, gnumake
|
||||
, autoreconfHook
|
||||
, boost
|
||||
, adaptivecpp ? null
|
||||
, useIntel ? true
|
||||
|
||||
, useGit ? false
|
||||
, gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tasycl/tasycl.git"
|
||||
, gitBranch ? "main"
|
||||
, gitCommit ? "78f98dcf60a66e0eaa3b4ebcf55be076bec64825"
|
||||
}:
|
||||
|
||||
assert (useIntel || adaptivecpp != null);
|
||||
|
||||
let
|
||||
variant = if useIntel then "intel" else "acpp";
|
||||
|
||||
syclStdenv =
|
||||
if useIntel then
|
||||
# If we don't set optimization level, separateDebugInfo sets ggdb and
|
||||
# intel disables all optimizations
|
||||
withCFlags ["-O3"] intelPackages.stdenv
|
||||
else
|
||||
withCFlags [ "-L${adaptivecpp}/lib" "-lacpp-rt" "-I${adaptivecpp}/include" ] 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;
|
||||
|
||||
isOldRelease = (!useGit && (builtins.compareVersions source.version "2.0.0" <= 0));
|
||||
|
||||
in
|
||||
|
||||
assert !isOldRelease || useIntel; # old releases only work with intel
|
||||
|
||||
syclStdenv.mkDerivation {
|
||||
pname = "tasycl";
|
||||
inherit (source) src version;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
separateDebugInfo = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
automake
|
||||
autoconf
|
||||
libtool
|
||||
gnumake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
];
|
||||
|
||||
# only needed for release versions prior or equal to 2.0.0
|
||||
configureFlags = lib.optionals isOldRelease [ "--with-sycl-include=${intelPackages.icx.cc}/include/sycl" ];
|
||||
|
||||
# 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" ];
|
||||
}
|
||||
55
test/compilers/hello-sycl.nix
Normal file
55
test/compilers/hello-sycl.nix
Normal file
@@ -0,0 +1,55 @@
|
||||
{ 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 excpect 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
|
||||
'';
|
||||
}
|
||||
75
test/compilers/icpx-ompss2.nix
Normal file
75
test/compilers/icpx-ompss2.nix
Normal file
@@ -0,0 +1,75 @@
|
||||
{ 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. It will
|
||||
# fail to run otherwise, so we disable the sandbox for this test.
|
||||
__noChroot = true;
|
||||
|
||||
env.NODES_HOME = nodes;
|
||||
|
||||
NIX_DEBUG = 0;
|
||||
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