Compare commits

..

12 Commits

64 changed files with 36 additions and 5399 deletions

View File

@@ -7,7 +7,6 @@
./base/august-shutdown.nix
./base/boot.nix
./base/env.nix
./base/fish.nix
./base/fs.nix
./base/hw.nix
./base/net.nix

View File

@@ -5,8 +5,6 @@
vim wget git htop tmux pciutils tcpdump ripgrep nix-index nixos-option
nix-diff ipmitool freeipmi ethtool lm_sensors cmake gnumake file tree
ncdu perf ldns pv
nix-output-monitor
nixfmt-tree
# From jungle overlay
osumb nixgen
];
@@ -30,22 +28,9 @@
VISUAL = "vim";
};
programs.bash.promptInit = # bash
''
if echo "$PATH" | grep -qc '/nix/store'; then
# Inside a nix shell, dumb prompt
PS1="\h\\$ "
elif [ "$TERM" != "dumb" ] ; then
PROMPT_COLOR="1;31m"
((UID)) && PROMPT_COLOR="1;32m"
PS1="\n\[\033[$PROMPT_COLOR\][\[\e]0;\u@\h: \w\a\]\u@\h:\w]\\$\[\033[0m\] "
if test "$TERM" = "xterm"; then
PS1="\[\033]2;\h:\u:\w\007\]$PS1"
fi
fi
'';
programs.bash.promptInit = ''
PS1="\h\\$ "
'';
time.timeZone = "Europe/Madrid";
i18n.defaultLocale = "en_DK.UTF-8";

View File

@@ -1,3 +0,0 @@
{
programs.fish.enable = true;
}

View File

@@ -87,13 +87,6 @@
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIIFiqXqt88VuUfyANkZyLJNiuroIITaGlOOTMhVDKjf abonerib@bsc"
];
shell = pkgs.fish;
packages = with pkgs; [
fzf
jujutsu
neovim
starship
];
};
vlopez = {

View File

@@ -1,10 +1,9 @@
{ lib, pkgs, ... }:
{ lib, ... }:
{
imports = [
../common/ssf.nix
../module/hut-substituter.nix
./hydra.nix
];
# Select this using the ID to avoid mismatches
@@ -31,22 +30,4 @@
prefixLength = 24;
} ];
};
services.nix-serve = {
enable = true;
bindAddress = "0.0.0.0";
port = 5000;
package = pkgs.haskell.lib.overrideSrc (pkgs.haskell.packages.ghc96.nix-serve-ng.override { nix = pkgs.nixVersions.nix_2_28; }) {
src = pkgs.fetchgit {
url = "https://jungle.bsc.es/git/abonerib/nix-serve-ng.git";
rev = "9c056641300a826db66b66d7e584b2541d38927a";
hash = "sha256-y69ZchFiZOU71eyeljcQgLxkLk5JUzZfanq8Yzw4MkI=";
};
version = "unstable";
};
secretKeyFile = "/var/cache-priv-key.pem";
# Public key:
# 10.0.40.6:8jBhIdXEBap+Qo+vc1/fnV9vj43A2oDk839EEheRr/U=
};
}

View File

@@ -1,57 +0,0 @@
{
config,
pkgs,
lib,
...
}:
{
services.hydra = {
enable = true;
# Wrap hydra so it puts quiet flag every time... This is dumb and annoying,
# but i can't override the systemd ExecStart without running into infinite
# recursion.
package = pkgs.symlinkJoin {
name = "hydra-quiet";
paths = [ pkgs.hydra ];
postBuild = ''
for prog in hydra-queue-runner hydra-evaluator ; do
prev=$(realpath $out/bin/$prog)
rm $out/bin/$prog
cat >$out/bin/$prog <<EOF
#!/bin/sh
args=()
for arg in "\$@"; do
if [ "\$arg" != "-v" ]; then
args+=("\$arg")
fi
done
exec $prev --quiet "\''${args[@]}"
EOF
chmod +x $out/bin/$prog
done
'';
};
hydraURL = "http://localhost:3001"; # externally visible URL
notificationSender = "hydra@jungle.bsc.es"; # e-mail of Hydra service
port = 3001;
# a standalone Hydra will require you to unset the buildMachinesFiles list to avoid using a nonexistant /etc/nix/machines
buildMachinesFiles = [ ];
# you will probably also want, otherwise *everything* will be built from scratch
useSubstitutes = true;
listenHost = "0.0.0.0"; # Force IPv4
};
systemd.services.hydra-send-stats.enable = lib.mkForce false;
networking.firewall.allowedTCPPorts = [ config.services.hydra.port ];
nix.settings.extra-allowed-uris = [
"git+ssh://git@bscpm04.bsc.es"
"git+ssh://git@gitlab-internal.bsc.es"
"https://github.com"
"git+ssh://github.com"
];
}

View File

@@ -9,9 +9,6 @@ let
bscPkgs = {
agenix = prev.callPackage ./pkgs/agenix/default.nix { };
amd-uprof = prev.callPackage ./pkgs/amd-uprof/default.nix { };
aoccUnwrapped = callPackage ./pkgs/aocc/unwrapped.nix { };
aocc = callPackage ./pkgs/aocc/default.nix { };
stdenvAocc = final.overrideCC final.stdenv final.aocc;
bench6 = callPackage ./pkgs/bench6/default.nix { };
bigotes = callPackage ./pkgs/bigotes/default.nix { };
clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { };
@@ -22,7 +19,6 @@ 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 { };
gromacs = callPackage ./pkgs/gromacs/default.nix { enableSYCL = true; };
intel-apt = callPackage ./pkgs/intel-oneapi/packages.nix { };
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
intelPackages_2024 = final.intel-apt.hpckit_2024;
@@ -37,7 +33,6 @@ let
linuxPackages_latest = prev.linuxPackages_latest.extend(_final: _prev: {
amd-uprof-driver = _prev.callPackage ./pkgs/amd-uprof/driver.nix { };
});
llvm-intel = callPackage ./pkgs/llvm-intel/default.nix { };
lmbench = callPackage ./pkgs/lmbench/default.nix { };
# Broken and unmantained
# mcxx = callPackage ./pkgs/mcxx/default.nix { };
@@ -59,22 +54,10 @@ let
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 { };
pertalde = callPackage ./pkgs/pertalde/default.nix { };
pocl = callPackage ./pkgs/pocl/default.nix { };
pocl-unpublished = callPackage ./pkgs/pocl/default.nix {
gitUrl = "git@github.com:pocl/unpublished.git";
gitBranch = "loopvec-next";
gitCommit = "74f7e2b5644b1c5598205c8cac1914bb4c5dadec";
enableNOSV = false;
enableOVNI = false;
};
pocl-noicd = callPackage ./pkgs/pocl/default.nix { enableICD = false; };
prometheus-slurm-exporter = prev.callPackage ./pkgs/slurm-exporter/default.nix { };
#pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned
#psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned
rodinia = callPackage ./pkgs/rodinia/default.nix { };
slurm = import ./pkgs/slurm/default.nix { slurm = prev.slurm; };
sonar = callPackage ./pkgs/sonar/default.nix { };
stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; };
@@ -85,16 +68,8 @@ let
tampi = callPackage ./pkgs/tampi/default.nix { };
tasycl = callPackage ./pkgs/tasycl/default.nix { };
tasycl-acpp = callPackage ./pkgs/tasycl/default.nix { useIntel = false; };
unified-runtime = callPackage ./pkgs/unified-runtime/default.nix { };
upc-qaire-exporter = prev.callPackage ./pkgs/upc-qaire-exporter/default.nix { };
taopencl = callPackage ./pkgs/taopencl/default.nix { };
wxparaver = callPackage ./pkgs/paraver/default.nix { };
_cuda = prev._cuda.extend (_: _prev: final.lib.recursiveUpdate _prev {
extensions = _prev.extensions ++ [(finalAttrs: _: {
tacuda = finalAttrs.callPackage ./pkgs/tacuda/default.nix { };
})];
});
};
tests = rec {
@@ -104,11 +79,6 @@ let
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
hello-sycl = callPackage ./test/compilers/hello-sycl.nix { };
hello-syclompss = callPackage ./test/compilers/icpx-ompss2.nix { };
hello-sycl-pocl = (callPackage ./test/compilers/hello-sycl.nix { }).withPocl;
hello-sycl-intel = (callPackage ./test/compilers/hello-sycl.nix { }).withIntel;
hello-syclompss-pocl = (callPackage ./test/compilers/icpx-ompss2.nix { }).withPocl;
hello-syclompss-intel = (callPackage ./test/compilers/icpx-ompss2.nix { }).withIntel;
lto = callPackage ./test/compilers/lto.nix { };
asan = callPackage ./test/compilers/asan.nix { };
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
@@ -142,15 +112,6 @@ let
clangNosvOmpv-ld = callPackage ./test/compilers/clang-openmp-ld.nix {
stdenv = final.stdenvClangOmpss2NodesOmpv;
};
ocl-build = callPackage ./test/compilers/opencl.nix { };
ocl-build-noicd = callPackage ./test/compilers/opencl.nix { ocl-icd = final.pocl-noicd; };
pocl = callPackage ./test/compilers/pocl.nix { };
ocl-run-pocl = ocl-build.test-icd;
ocl-run-pocl-noicd = ocl-build-noicd.test-noicd;
sycl-ls = callPackage ./test/compilers/sycl-ls.nix { };
};
# For now, only build toplevel packages in CI/Hydra

View File

@@ -47,7 +47,6 @@ in
inherit version;
src = uprofSrc;
dontStrip = true;
strictDeps = true;
phases = [ "installPhase" "fixupPhase" ];
nativeBuildInputs = [ autoPatchelfHook radare2 ];
buildInputs = [

View File

@@ -18,7 +18,6 @@ in stdenv.mkDerivation {
set +x
'';
hardeningDisable = [ "pic" "format" ];
strictDeps = true;
nativeBuildInputs = kernel.moduleBuildDependencies;
patches = [ ./makefile.patch ./hrtimer.patch ./remove-wr-rdmsrq.patch ];
makeFlags = [

View File

@@ -1,17 +0,0 @@
{
wrapCCWith,
aoccUnwrapped,
}:
let
cc = aoccUnwrapped;
in
wrapCCWith {
inherit cc;
nixSupport.cc-cflags = [ "-isystem ${cc}/include" ];
extraBuildCommands = ''
wrap aocc $wrapper $ccPath/clang
wrap aocc++ $wrapper $ccPath/clang++
'';
}

View File

@@ -1,52 +0,0 @@
{
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";
}

View File

@@ -59,7 +59,6 @@ stdenv.mkDerivation rec {
];
hardeningDisable = [ "all" ];
dontStrip = true;
strictDeps = true;
meta = {
homepage = "https://gitlab.pm.bsc.es/rarias/bench6";

View File

@@ -16,8 +16,6 @@ stdenv.mkDerivation {
};
nativeBuildInputs = [ cmake ];
strictDeps = true;
meta = {
homepage = "https://github.com/rodarima/bigotes";
description = "Versatile benchmark tool";

View File

@@ -10,13 +10,10 @@
stdenv.mkDerivation (finalAttrs: {
name = "cudainfo";
src = ./.;
strictDeps = true;
nativeBuildInputs = [
cudatoolkit # Required for nvcc
autoAddDriverRunpath
];
buildInputs = [
cudatoolkit # Required for nvcc
(lib.getOutput "static" cudaPackages.cuda_cudart) # Required for -lcudart_static
autoAddDriverRunpath
];
installPhase = ''
mkdir -p $out/bin
@@ -26,7 +23,6 @@ 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

View File

@@ -20,7 +20,7 @@
#, python3Packages
, installShellFiles
, symlinkJoin
, enablePapi ? true
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
}:
let

View File

@@ -33,7 +33,6 @@ stdenv.mkDerivation rec {
};
enableParallelBuilding = true;
strictDeps = true;
patches = [ ./rdma-core.patch ./max-mem.patch ];

View File

@@ -1,190 +0,0 @@
{
lib,
stdenv,
fetchurl,
cmake,
hwloc,
fftw,
perl,
blas,
lapack,
llvmPackages,
intelPackages ? null,
mpi,
cudaPackages,
plumed,
singlePrec ? true,
config,
enableSYCL ? false,
enableCuda ? config.cudaSupport,
enableMpi ? false,
enablePlumed ? false,
cpuAcceleration ? null,
}:
# CUDA is only implemented for single precission
assert enableCuda -> singlePrec;
assert !(enableSYCL && enableCuda);
assert enableSYCL -> intelPackages != null;
let
inherit (cudaPackages.flags) cmakeCudaArchitecturesString;
# Select reasonable defaults for all major platforms
# The possible values are defined in CMakeLists.txt:
# AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256
# AVX2_128 AVX_512 AVX_512_KNL MIC ARM_NEON ARM_NEON_ASIMD
SIMD =
x:
if (cpuAcceleration != null) then
x
else if stdenv.hostPlatform.system == "i686-linux" then
"SSE2"
else if stdenv.hostPlatform.system == "x86_64-linux" then
"SSE4.1"
else if stdenv.hostPlatform.system == "x86_64-darwin" then
"SSE4.1"
else if stdenv.hostPlatform.system == "aarch64-linux" then
"ARM_NEON_ASIMD"
else
"None";
source =
if enablePlumed then
{
version = "2024.2";
hash = "sha256-gCp+M18uiVdw9XsVnk7DaOuw/yzm2sz3BsboAlw2hSs=";
}
else
{
version = "2025.3";
hash = "sha256-i9/KAmjz8Qp8o8BuWbYvc+oCQgxnIRwP85EvMteDPGU=";
};
stdenv' = if enableSYCL then intelPackages.stdenv else stdenv;
in
stdenv'.mkDerivation rec {
pname = "gromacs";
version = source.version;
src = fetchurl {
url = "ftp://ftp.gromacs.org/pub/gromacs/gromacs-${version}.tar.gz";
inherit (source) hash;
};
patches = [ (if enablePlumed then ./pkgconfig-2024.patch else ./pkgconfig-2025.patch) ];
postPatch = lib.optionalString enablePlumed ''
plumed patch -p -e gromacs-${source.version}
'';
outputs = [
"out"
"dev"
"man"
];
nativeBuildInputs = [
cmake
]
++ lib.optional enablePlumed plumed
++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
env.MKLROOT = intelPackages.mkl;
buildInputs = [
fftw
perl
hwloc
blas
lapack
]
++ lib.optional enableMpi mpi
++ lib.optionals enableCuda [
cudaPackages.cuda_cccl
cudaPackages.cuda_cudart
cudaPackages.libcufft
cudaPackages.cuda_profiler_api
]
++ lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp;
propagatedBuildInputs = lib.optional enableMpi mpi;
propagatedUserEnvPkgs = lib.optional enableMpi mpi;
cmakeFlags = [
(lib.cmakeBool "GMX_HWLOC" true)
"-DGMX_SIMD:STRING=${SIMD cpuAcceleration}"
"-DGMX_OPENMP:BOOL=TRUE"
"-DBUILD_SHARED_LIBS=ON"
]
++ (
if singlePrec then
[
"-DGMX_DOUBLE=OFF"
]
else
[
"-DGMX_DOUBLE=ON"
"-DGMX_DEFAULT_SUFFIX=OFF"
]
)
++ (
if enableMpi then
[
"-DGMX_MPI:BOOL=TRUE"
"-DGMX_THREAD_MPI:BOOL=FALSE"
]
else
[
"-DGMX_MPI:BOOL=FALSE"
]
)
++ (lib.optionals enableSYCL [
"-DGMX_GPU=SYCL"
"-DGMX_OPENMP=OFF" # TODO: enable OpenMP with SYCL?
])
++ lib.optionals enableCuda [
"-DGMX_GPU=CUDA"
(lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cmakeCudaArchitecturesString)
# Gromacs seems to ignore and override the normal variables, so we add this ad hoc:
(lib.cmakeFeature "GMX_CUDA_TARGET_COMPUTE" cmakeCudaArchitecturesString)
];
postInstall = ''
moveToOutput share/cmake $dev
'';
meta = with lib; {
homepage = "https://www.gromacs.org";
license = licenses.lgpl21Plus;
description = "Molecular dynamics software package";
longDescription = ''
GROMACS is a versatile package to perform molecular dynamics,
i.e. simulate the Newtonian equations of motion for systems
with hundreds to millions of particles.
It is primarily designed for biochemical molecules like
proteins, lipids and nucleic acids that have a lot of
complicated bonded interactions, but since GROMACS is
extremely fast at calculating the nonbonded interactions (that
usually dominate simulations) many groups are also using it
for research on non-biological systems, e.g. polymers.
GROMACS supports all the usual algorithms you expect from a
modern molecular dynamics implementation, (check the online
reference or manual for details), but there are also quite a
few features that make it stand out from the competition.
See: https://www.gromacs.org/about.html for details.
'';
platforms = platforms.unix;
maintainers = with maintainers; [
sheepforce
markuskowa
];
};
}

View File

@@ -1,24 +0,0 @@
diff --git a/src/external/muparser/muparser.pc.in b/src/external/muparser/muparser.pc.in
index 646787cb53..9b97ad57f7 100644
--- a/src/external/muparser/muparser.pc.in
+++ b/src/external/muparser/muparser.pc.in
@@ -1,7 +1,5 @@
-prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=${prefix}
-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
Name: @PACKAGE_NAME@
Description: Mathematical expressions parser library
diff --git a/src/gromacs/libgromacs.pc.cmakein b/src/gromacs/libgromacs.pc.cmakein
index ec1ed6684e..ca1105474a 100644
--- a/src/gromacs/libgromacs.pc.cmakein
+++ b/src/gromacs/libgromacs.pc.cmakein
@@ -1,4 +1,4 @@
-libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
Name: libgromacs@GMX_LIBS_SUFFIX@
Description: Gromacs library

View File

@@ -1,36 +0,0 @@
diff --git a/src/external/muparser/muparser.pc.in b/src/external/muparser/muparser.pc.in
index 646787cb53..d26e84de8f 100644
--- a/src/external/muparser/muparser.pc.in
+++ b/src/external/muparser/muparser.pc.in
@@ -1,11 +1,9 @@
-prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=${prefix}
-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
-
-Name: @PACKAGE_NAME@
-Description: Mathematical expressions parser library
-Version: @MUPARSER_VERSION@
-Requires:
-Libs: -L${libdir} -lmuparser
-Cflags: -I${includedir} @PKG_CONFIG_FLAGS@
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
+
+Name: @PACKAGE_NAME@
+Description: Mathematical expressions parser library
+Version: @MUPARSER_VERSION@
+Requires:
+Libs: -L${libdir} -lmuparser
+Cflags: -I${includedir} @PKG_CONFIG_FLAGS@
diff --git a/src/gromacs/libgromacs.pc.cmakein b/src/gromacs/libgromacs.pc.cmakein
index af9b5a6dc0..5f58d549bf 100644
--- a/src/gromacs/libgromacs.pc.cmakein
+++ b/src/gromacs/libgromacs.pc.cmakein
@@ -1,5 +1,4 @@
-prefix=@CMAKE_INSTALL_PREFIX@
-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
Name: libgromacs@GMX_LIBS_SUFFIX@
Description: Gromacs library

View File

@@ -99,7 +99,6 @@ let
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
strictDeps = true;
installPhase = ''
mkdir -p $out/{bin,etc,lib,include}
mkdir -p $out/share/man
@@ -151,7 +150,6 @@ let
];
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
strictDeps = true;
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
@@ -195,7 +193,6 @@ let
];
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
strictDeps = true;
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
@@ -263,7 +260,6 @@ let
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
strictDeps = true;
installPhase = ''
mkdir -p $out/{bin,lib,include}
@@ -352,7 +348,6 @@ let
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
strictDeps = true;
installPhase = ''
mkdir -p $out/{bin,lib}

View File

@@ -20,7 +20,6 @@
rdma-core,
ucx,
zlib,
writeTextFile,
}:
lib.makeOverridable (
@@ -88,9 +87,6 @@ lib.makeOverridable (
ln -s $out/bin/icpx $out/bin/c++
ln -s $out/bin/icx $out/bin/cc
ln -s $ccPath/sycl-ls $out/bin/sycl-ls
ln -s $ccPath/sycl-trace $out/bin/sycl-trace
sed -i 's/.*isCxx=0/isCxx=1/' $out/bin/icpx
# Use this to detect when a compiler subprocess is called
@@ -158,19 +154,13 @@ lib.makeOverridable (
folder: version:
let
original = "${finalAttrs.finalPackage}/${folder}/${version}";
etc-vendors = writeTextFile {
name = "intel-ocl-icd";
text = "${original}/lib/libintelocl.so";
destination = "/etc/OpenCL/vendors/intel.icd";
};
in
symlinkJoin {
(symlinkJoin {
pname = "intel-${folder}";
inherit version;
paths = [ original ] ++ lib.optionals (folder == "compiler") [ etc-vendors ];
passthru = { inherit original; };
}
paths = [ original ];
}).overrideAttrs
{ passthru = { inherit original; }; }
) _components;
in
pkgs
@@ -185,7 +175,7 @@ lib.makeOverridable (
# NOTE: there are clashes with packages that have symlinks outside their
# scope (libtcm and env/vars.sh)
all = symlinkJoin {
pname = finalAttrs.finalPackage.pname + "-symlinked";
pname = finalAttrs.finalPackage + "-symlinked";
inherit (finalAttrs.finalPackage) version;
paths = filter lib.isDerivation (attrValues finalAttrs.finalPackage.pkgs);
};

View File

@@ -1,200 +0,0 @@
{
stdenv,
lib,
ninja,
addDriverRunpath,
cmake,
emhash,
fetchFromGitHub,
khronos-ocl-icd-loader,
libbacktrace,
opencl-headers,
parallel-hashmap,
perl,
pkg-config,
python3,
spirv-headers,
spirv-tools,
symlinkJoin,
zlib,
cudaPackages,
enableCuda ? true,
}:
let
version = "6.2.1";
src = fetchFromGitHub {
owner = "intel";
repo = "llvm";
tag = "v${version}";
sha256 = "sha256-j8+DmGKO0qDF5JjH+DlkLKs1kBz6dS7ukwySd/Crqv0=";
};
pinned = {
inherit parallel-hashmap;
vc-intrinsics.src = fetchFromGitHub {
owner = "intel";
repo = "vc-intrinsics";
rev = "4e51b2467104a257c22788e343dafbdde72e28bb";
sha256 = "sha256-AHXeKbih4bzmcuu+tx2TeS7Ixmk54uS1vKFVxI6ZP8g=";
};
unified-memory-framework.src = fetchFromGitHub {
owner = "oneapi-src";
repo = "unified-memory-framework";
tag = "v0.11.0";
sha256 = "sha256-k8QdP2u1QOoeCZ6ps4sM8+1iZq/H3q0lqCfVk8mz9KI=";
};
ocl-headers = opencl-headers.overrideAttrs {
version = "2024.10.24";
src = fetchFromGitHub {
owner = "KhronosGroup";
repo = "OpenCL-Headers";
tag = "v2024.10.24";
sha256 = "sha256-KDlruE0IG8d+lAChxYyc6dg5XOvqCMrMyO69sdAzejA=";
};
};
ocl-icd = khronos-ocl-icd-loader;
spirv-headers = spirv-headers.overrideAttrs {
version = "1.4.309.0";
src = fetchFromGitHub {
owner = "KhronosGroup";
repo = "SPIRV-Headers";
tag = "vulkan-sdk-1.4.309.0";
sha256 = "sha256-Q1i6i5XimULuGufP6mimwDW674anAETUiIEvDQwvg5Y=";
};
};
};
fetchcontent_cmakeFlags = lib.mapAttrsToList (
name: value: (lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_${lib.toUpper name}" (toString value.src))
) pinned;
# Hack to fix #include <emhash/...>
emhash' = symlinkJoin {
name = "emhash";
paths = [ emhash ];
postBuild = ''
pushd $out/include
ln -s . emhash
popd
'';
};
in
stdenv.mkDerivation {
pname = "intel-llvm";
inherit src version;
enableParallelBuilding = true;
strictDeps = true;
nativeBuildInputs = [
perl
cmake
ninja
pkg-config
python3
spirv-tools
addDriverRunpath
]
++ lib.optionals enableCuda [
cudaPackages.cuda_nvcc
];
buildInputs = [
emhash'
libbacktrace
zlib
pinned.ocl-icd
pinned.ocl-headers
pinned.spirv-headers
]
++ lib.optionals enableCuda [
cudaPackages.cudatoolkit
];
patches = [ ./fix-ur.patch ]; # Has been fixed in next release
preBuild = ''
chmod -R u+w /build/source
'';
cmakeDir = "../llvm";
cmakeFlags =
let
cmakeList = name: l: lib.cmakeOptionType "list" name (builtins.concatStringsSep ";" l);
LLVM_EXTERNAL_PROJECTS = [
"sycl"
"llvm-spirv"
"opencl"
"xpti"
"xptifw"
"compiler-rt"
"sycl-jit"
]
++ lib.optionals enableCuda [
"libclc"
];
in
[
(lib.cmakeBool "LLVM_ENABLE_ASSERTIONS" true)
(cmakeList "LLVM_TARGETS_TO_BUILD" (
[
"host"
"SPIRV"
]
++ lib.optionals enableCuda [ "NVPTX" ]
))
(cmakeList "LLVM_EXTERNAL_PROJECTS" LLVM_EXTERNAL_PROJECTS)
(cmakeList "LLVM_ENABLE_PROJECTS" ([ "clang" ] ++ LLVM_EXTERNAL_PROJECTS))
(lib.cmakeBool "UR_USE_EXTERNAL_UMF" false)
(lib.cmakeOptionType "path" "UR_OPENCL_INCLUDE_DIR" (toString pinned.ocl-headers))
(lib.cmakeOptionType "path" "UR_OPENCL_ICD_LOADER_LIBRARY" (toString pinned.ocl-icd))
(lib.cmakeFeature "UR_OPENCL_ICD_LOADER_LIBRARY" (toString pinned.ocl-icd))
(lib.cmakeBool "BUILD_SHARED_LIBS" false)
(lib.cmakeBool "LLVM_BUILD_TOOLS" true)
(lib.cmakeBool "LLVM_ENABLE_ZSTD" true)
(lib.cmakeBool "LLVM_USE_STATIC_ZSTD" true)
(lib.cmakeBool "LLVM_ENABLE_DOXYGEN" false)
(lib.cmakeBool "LLVM_ENABLE_LLD" false)
(lib.cmakeBool "LLVM_ENABLE_SPHINX" false)
(lib.cmakeBool "LLVM_SPIRV_ENABLE_LIBSPIRV_DIS" false)
(lib.cmakeBool "SYCL_ENABLE_WERROR" false)
(lib.cmakeBool "SYCL_INCLUDE_TESTS" false)
(lib.cmakeBool "SYCL_ENABLE_EXTENSION_JIT" true)
(lib.cmakeBool "SYCL_ENABLE_MAJOR_RELEASE_PREVIEW_LIB" false)
(lib.cmakeBool "SYCL_ENABLE_XPTI_TRACING" true)
(lib.cmakeBool "XPTI_ENABLE_WERROR" false)
(cmakeList "SYCL_ENABLE_BACKENDS" ([ "opencl" ] ++ lib.optionals enableCuda [ "cuda" ]))
]
++ fetchcontent_cmakeFlags
++ lib.optionals enableCuda [
(lib.cmakeOptionType "list" "LIBCLC_TARGETS_TO_BUILD" "nvptx64--nvidiacl")
(lib.cmakeBool "LIBCLC_GENERATE_REMANGLED_VARIANTS" true)
(lib.cmakeBool "LIBCLC_NATIVECPU_HOST_TARGET" false)
];
meta = {
homepage = "https://github.com/intel/llvm";
description = "Intel staging area for llvm.org contribution";
maintainers = with lib.maintainers.bsc; [ abonerib ];
platforms = lib.platforms.linux;
license = [
lib.licenses.asl20
lib.licenses.llvm-exception
];
};
}

View File

@@ -1,23 +0,0 @@
diff --git a/unified-runtime/source/adapters/cuda/CMakeLists.txt b/unified-runtime/source/adapters/cuda/CMakeLists.txt
index a8401c71a..2ab363926 100644
--- a/unified-runtime/source/adapters/cuda/CMakeLists.txt
+++ b/unified-runtime/source/adapters/cuda/CMakeLists.txt
@@ -62,14 +62,14 @@ add_library(cudadrv SHARED IMPORTED GLOBAL)
if (WIN32)
set_target_properties(
cudadrv PROPERTIES
- IMPORTED_IMPLIB ${CUDA_cuda_driver_LIBRARY}
- INTERFACE_INCLUDE_DIRECTORIES ${CUDAToolkit_INCLUDE_DIRS}
+ IMPORTED_IMPLIB "${CUDA_cuda_driver_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CUDAToolkit_INCLUDE_DIRS}"
)
else()
set_target_properties(
cudadrv PROPERTIES
- IMPORTED_LOCATION ${CUDA_cuda_driver_LIBRARY}
- INTERFACE_INCLUDE_DIRECTORIES ${CUDAToolkit_INCLUDE_DIRS}
+ IMPORTED_LOCATION "${CUDA_cuda_driver_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CUDAToolkit_INCLUDE_DIRS}"
)
endif()

View File

@@ -48,7 +48,6 @@ in stdenv.mkDerivation {
inherit (source) src version;
enableParallelBuilding = true;
strictDeps = true;
passthru = {
CC = "clang";

View File

@@ -39,9 +39,7 @@ stdenv.mkDerivation rec {
perl
pkg-config
python3
];
buildInputs = lib.optionals enableNosv [
] ++ lib.optionals enableNosv [
nosv
] ++ lib.optionals enableOvni [
ovni
@@ -56,7 +54,6 @@ stdenv.mkDerivation rec {
dontStrip = enableDebug;
separateDebugInfo = true;
strictDeps = true;
cmakeFlags = [
"-DLIBOMP_OMPD_SUPPORT=OFF"
@@ -74,28 +71,6 @@ 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;
};

View File

@@ -27,7 +27,6 @@ stdenv.mkDerivation rec {
hardeningDisable = [ "all" ];
enableParallelBuilding = false;
strictDeps = true;
preBuild = ''
makeFlagsArray+=(

View File

@@ -9,7 +9,6 @@ python3Packages.buildPythonApplication {
src = ./.;
doCheck = false;
strictDeps = true;
build-system = with python3Packages; [
setuptools

View File

@@ -53,7 +53,6 @@ in mpich.overrideAttrs (old: {
'';
hardeningDisable = [ "all" ];
strictDeps = true;
meta = old.meta // {
maintainers = old.meta.maintainers ++ (with lib.maintainers.bsc; [ rarias ]);

View File

@@ -16,7 +16,7 @@
, jemallocNanos6 ? null
, cachelineBytes ? 64
, enableGlibcxxDebug ? false
, enablePapi ? true
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
, useGit ? false
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
, gitBranch ? "master"
@@ -80,8 +80,7 @@ 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 enablePapi "--with-papi=${papi}");
(optional isCross "--with-symbol-resolution=ifunc");
postConfigure = lib.optionalString (!enableDebug) ''
# Disable debug
@@ -96,14 +95,16 @@ 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

View File

@@ -8,7 +8,6 @@ stdenv.mkDerivation {
version = "0.0.1";
src = ./nixgen;
dontUnpack = true;
strictDeps = true;
phases = [ "installPhase" ];
installPhase = ''
mkdir -p $out/bin

View File

@@ -16,7 +16,6 @@ stdenv.mkDerivation rec {
makeFlags = [ "DESTDIR=$(out)" ];
preBuild = "env";
dontPatchShebangs = true;
strictDeps = true;
meta = {
homepage = "https://gitlab.pm.bsc.es/rarias/nixtools";

View File

@@ -48,7 +48,6 @@ in
enableParallelBuilding = true;
dontStrip = true;
separateDebugInfo = true;
strictDeps = true;
configureFlags = [
"--with-nosv=${nosv}"

View File

@@ -7,7 +7,7 @@
, numactl
, hwloc
, papi
, enablePapi ? true
, enablePapi ? stdenv.hostPlatform == stdenv.buildPlatform # Disabled when cross-compiling
, cacheline ? 64 # bits
, ovni ? null
, useGit ? false
@@ -40,17 +40,16 @@ let
source = if (useGit) then git else release;
in
stdenv.mkDerivation {
stdenv.mkDerivation rec {
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
@@ -60,7 +59,6 @@ in
hwloc
ovni
] ++ lib.optionals enablePapi [ papi ];
patches = [ ./fix-papi.patch ];
meta = {
homepage = "https://gitlab.bsc.es/nos-v/nos-v";

View File

@@ -1,136 +0,0 @@
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

View File

@@ -24,7 +24,6 @@ stdenv.mkDerivation rec {
doCheck = true;
enableParallelBuilding = true;
strictDeps = true;
nativeBuildInputs = [ mpiAll ];
buildInputs = [ mpiAll ];
hardeningDisable = [ "all" ];

View File

@@ -40,7 +40,6 @@ in
inherit (source) src version;
dontStrip = true;
separateDebugInfo = true;
strictDeps = true;
postPatch = ''
patchShebangs --build test/
'';

View File

@@ -1,22 +0,0 @@
{
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 ];
})

View File

@@ -1,19 +0,0 @@
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:

View File

@@ -47,7 +47,6 @@ stdenv.mkDerivation rec {
dontStrip = true;
enableParallelBuilding = true;
strictDeps = true;
preConfigure = ''
export CFLAGS="-O3"

View File

@@ -34,7 +34,6 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
dontStrip = true;
strictDeps = true;
preConfigure = ''
export CFLAGS="-O3 -DPARALLEL_ENABLED"

View File

@@ -1,47 +0,0 @@
{
lib,
python3,
fetchPypi,
cargo,
rustPlatform,
rustc,
}:
let
pname = "pertalde";
version = "0.1.4";
src = fetchPypi {
inherit pname version;
hash = "sha256-KdS5yNYR+8z81hMBTl9oNiLi17cVLyoZBNNR88T/gOY=";
};
in
python3.pkgs.buildPythonApplication {
inherit pname version src;
pyproject = true;
strictDeps = true;
cargoDeps = rustPlatform.fetchCargoVendor {
inherit src;
name = "${pname}-${version}";
hash = "sha256-dQ8EKlYZq+Urtb+0zxRi/Vh/ormIGCNKHy/9entyb7g=";
};
# error[E0554]: `#![feature]` may not be used on the stable release channel
env.RUSTC_BOOTSTRAP = true;
build-system = [
cargo
rustPlatform.cargoSetupHook
rustPlatform.maturinBuildHook
rustc
];
meta = {
description = "Some command-line utilities on paraver traces";
homepage = "https://pypi.org/project/pertalde/";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers.bsc; [ abonerib ];
mainProgram = "ptd";
};
}

View File

@@ -1,26 +0,0 @@
From ccf301659caac9b5e973ba1f2d32352acf617a98 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aleix=20Bon=C3=A9?= <aleix.boneribo@bsc.es>
Date: Tue, 2 Jul 2024 16:45:05 +0200
Subject: [PATCH] cmake: do not use suffix
---
cmake/LLVM.cmake | 3 ++
1 files changed, 3 insertions(+)
diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake
index f4dbda065..e29144dce 100644
--- a/cmake/LLVM.cmake
+++ b/cmake/LLVM.cmake
@@ -65,6 +65,9 @@ else()
message(WARNING "Cannot determine llvm binary suffix from ${LLVM_CONFIG}")
endif()
message(STATUS "LLVM binaries suffix : ${LLVM_BINARY_SUFFIX}")
+
+ # We don't want suffixes in nix
+ set(LLVM_BINARY_SUFFIX "")
endif()
get_filename_component(LLVM_CONFIG_LOCATION "${LLVM_CONFIG}" DIRECTORY)
--
2.45.1

View File

@@ -1,33 +0,0 @@
From f24b456c50f587b05cc8f2699c94d8cdefc5b13e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aleix=20Bon=C3=A9?= <aleix.boneribo@bsc.es>
Date: Tue, 2 Jul 2024 17:11:11 +0200
Subject: [PATCH] cmake: native build tools
---
cmake/LLVM.cmake | 7 +-
1 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake
index e29144dce..b9f14ce6a 100644
--- a/cmake/LLVM.cmake
+++ b/cmake/LLVM.cmake
@@ -269,10 +269,15 @@ endforeach()
####################################################################
+if(DEFINED LLVM_NATIVE_TOOL_DIR)
+ set(TOOL_DIR "${LLVM_NATIVE_TOOL_DIR}")
+ message(STATUS "TOOL_DIR=${TOOL_DIR}")
+endif()
+
macro(find_program_or_die OUTPUT_VAR PROG_NAME DOCSTRING)
find_program(${OUTPUT_VAR}
NAMES "${PROG_NAME}${LLVM_BINARY_SUFFIX}${CMAKE_EXECUTABLE_SUFFIX}"
- HINTS "${LLVM_BINDIR}" "${LLVM_CONFIG_LOCATION}"
+ HINTS "${TOOL_DIR}" "${LLVM_BINDIR}" "${LLVM_CONFIG_LOCATION}"
DOC "${DOCSTRING}"
NO_CMAKE_PATH
NO_CMAKE_ENVIRONMENT_PATH
--
2.45.1

View File

@@ -1,48 +0,0 @@
From 4688b5ce895761c884ae15fc0234ed8d623b988b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aleix=20Bon=C3=A9?= <aleix.boneribo@bsc.es>
Date: Tue, 2 Jul 2024 15:41:47 +0200
Subject: [PATCH] cmake: use clang from cmake variable
---
cmake/LLVM.cmake | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake
index 71b786dc7..f4dbda065 100644
--- a/cmake/LLVM.cmake
+++ b/cmake/LLVM.cmake
@@ -281,11 +281,29 @@ macro(find_program_or_die OUTPUT_VAR PROG_NAME DOCSTRING)
endif()
endmacro()
-find_program_or_die( CLANG "clang" "clang binary")
+# -DCMAKE_C_COMPILER=riscv64-unknown-linux-gnu-clang -DCMAKE_CXX_COMPILER=riscv64-unknown-linux-gnu-clang++
+
+# if(DEFINED CLANG_EXECUTABLE)
+if(DEFINED CMAKE_C_COMPILER)
+ # set(CLANG "${CLANG_EXECUTABLE}")
+ set(CLANG "${CMAKE_C_COMPILER}")
+ message(STATUS "Using CLANG_EXECUTABLE: ${CLANG}")
+else()
+ find_program_or_die( CLANG "clang" "clang binary")
+endif()
execute_process(COMMAND "${CLANG}" "--version" OUTPUT_VARIABLE LLVM_CLANG_VERSION RESULT_VARIABLE CLANG_RES)
+
# TODO this should be optional
-find_program_or_die( CLANGXX "clang++" "clang++ binary")
+# if(DEFINED CLANGXX_EXECUTABLE)
+if(DEFINED CMAKE_CXX_COMPILER)
+ # set(CLANGXX "${CLANGXX_EXECUTABLE}")
+ set(CLANGXX "${CMAKE_CXX_COMPILER}")
+ message(STATUS "Using CLANGXX_EXECUTABLE: ${CLANGXX}")
+else()
+ find_program_or_die( CLANGXX "clang++" "clang++ binary")
+endif()
execute_process(COMMAND "${CLANGXX}" "--version" OUTPUT_VARIABLE LLVM_CLANGXX_VERSION RESULT_VARIABLE CLANGXX_RES)
+
if(CLANGXX_RES OR CLANG_RES)
message(FATAL_ERROR "Failed running clang/clang++ --version")
endif()
--
2.45.1

View File

@@ -1,255 +0,0 @@
{
lib,
llvmPackages,
ninja,
cmake,
hwloc,
ocl-icd,
opencl-headers,
getconf,
pkg-config,
spirv-llvm-translator,
spirv-tools,
libxml2, # required for statically linked llvm
python3,
writableTmpDirAsHomeHook,
writeText,
runCommand,
opencl-cts,
fetchFromGitHub,
useGit ? false,
gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/pocl/pocl.git",
gitBranch ? "new-device",
gitCommit ? "dd10c2221b31223cbb796182df6a07f11c7541f5",
staticLLVM ? true,
enableICD ? true,
enableSPIRV ? true,
enableHWLOC ? true,
enableRemoteServer ? false,
enableRemoteClient ? false,
enableDistroVariants ? false,
lttng-ust,
enableLTTNG ? false,
onetbb,
enableTBB ? false,
nosv ? null,
ovni ? null,
enableNOSV ? useGit,
enableOVNI ? useGit,
buildPackages,
targetPackages,
nix-update-script,
}:
assert (enableNOSV || enableOVNI) -> useGit;
let
release = rec {
version = "7.1";
src = fetchFromGitHub {
owner = "pocl";
repo = "pocl";
tag = "v${version}";
hash = "sha256-bS6vTIjLO7YLs7qYLKW0cYYbEJ/hRS/+IjjAKbkj8ac=";
};
};
git = rec {
version = src.shortRev;
src = builtins.fetchGit {
url = gitUrl;
ref = gitBranch;
rev = gitCommit;
};
};
source = if (useGit) then git else release;
stdenv = llvmPackages.stdenv;
buildLlvmPackages = buildPackages.llvmPackages;
isCross = stdenv.hostPlatform != stdenv.buildPlatform;
featureList = lib.concatStringsSep "+" (
(lib.optionals enableICD [ "icd" ])
++ (lib.optionals enableNOSV [ "nosv" ])
++ (lib.optionals enableOVNI [ "ovni" ])
++ (lib.optionals enableSPIRV [ "spirv" ])
++ (lib.optionals enableTBB [ "tbb" ])
++ (lib.optionals enableRemoteClient [ "server" ])
++ (lib.optionals enableRemoteServer [ "client" ])
);
in
stdenv.mkDerivation (finalAttrs: {
pname = "pocl";
version = featureList + "-" + source.version;
inherit (source) src;
patches = lib.optionals useGit [
./0001-cmake-use-clang-from-cmake-variable.patch
./0001-cmake-do-not-use-suffix.patch
./0001-cmake-native-build-tools.patch
];
cmakeFlags = [
# TODO: all these are broken when cross compiling. Upstream has refactored
# all the cmake infra for cross compilation, but it's not in a release yet
(lib.cmakeOptionType "filepath" "WITH_LLVM_CONFIG" (
lib.getExe' buildLlvmPackages.llvm.dev "llvm-config"
))
(lib.cmakeOptionType "filepath" "CLANG" (lib.getExe' buildLlvmPackages.clangUseLLVM "clang"))
(lib.cmakeOptionType "filepath" "CLANGXX" (lib.getExe' buildLlvmPackages.clangUseLLVM "clang++"))
(lib.cmakeOptionType "path" "CLANG_RESOURCE_DIR" "${llvmPackages.stdenv.cc}/resource-root")
(lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck)
(lib.cmakeBool "ENABLE_RELOCATION" true)
(lib.cmakeBool "ENABLE_POCL_BUILDING" true)
(lib.cmakeBool "POCL_ICD_ABSOLUTE_PATH" true)
(lib.cmakeBool "ENABLE_TBB_DEVICE" enableTBB)
(lib.cmakeBool "ENABLE_ICD" enableICD)
(lib.cmakeBool "ENABLE_HWLOC" enableHWLOC)
(lib.cmakeBool "ENABLE_LTTNG" enableLTTNG)
(lib.cmakeBool "ENABLE_REMOTE_CLIENT" enableRemoteClient)
(lib.cmakeBool "ENABLE_REMOTE_SERVER" enableRemoteServer)
# avoid the runtime linker pulling in a different llvm e.g. from graphics drivers
(lib.cmakeBool "STATIC_LLVM" staticLLVM)
]
++ lib.optionals (enableNOSV || enableOVNI) [
(lib.cmakeBool "ENABLE_NOSV" enableNOSV)
(lib.cmakeBool "ENABLE_OVNI" enableOVNI)
]
++ lib.optionals (!isCross && enableDistroVariants) [
(lib.cmakeFeature "KERNELLIB_HOST_CPU_VARIANTS" "distro") # TODO: check if we can do it when cross compiling
]
++ lib.optionals isCross [
(lib.cmakeFeature "CMAKE_SYSTEM_NAME" "Linux")
(lib.cmakeFeature "CMAKE_FIND_ROOT_PATH_MODE_PROGRAM" "NEVER")
(lib.cmakeFeature "CMAKE_FIND_ROOT_PATH_MODE_LIBRARY" "ONLY")
(lib.cmakeFeature "CMAKE_FIND_ROOT_PATH_MODE_INCLUDE" "ONLY")
(lib.cmakeFeature "CMAKE_FIND_ROOT_PATH_MODE_PACKAGE" "ONLY")
]
++ lib.optionals stdenv.hostPlatform.isRiscV [
(lib.cmakeFeature "LLC_TRIPLE" "riscv64-unknown-linux-gnu")
(lib.cmakeFeature "LLC_HOST_CPU" "rv64g")
(lib.cmakeFeature "CLANG_MARCH_FLAG" "-march=")
];
# Fixes error: ld: cannot find -lgcc / -lgcc_s when linking from libpocl on
# host
preConfigure = ''
cmakeFlagsArray+=(
-DEXTRA_HOST_LD_FLAGS="${lib.escapeShellArg (builtins.readFile "${targetPackages.stdenv.cc}/nix-support/cc-ldflags")}"
-DEXTRA_KERNEL_FLAGS="${lib.escapeShellArg (builtins.readFile "${targetPackages.stdenv.cc}/nix-support/cc-ldflags")}"
)
'';
nativeBuildInputs = [
cmake
getconf
ninja
pkg-config
python3
];
buildInputs = [
opencl-headers
llvmPackages.libclang
llvmPackages.llvm
]
++ lib.optionals staticLLVM [ libxml2 ]
++ lib.optionals enableNOSV [ nosv ]
++ lib.optionals enableOVNI [ ovni ]
++ lib.optionals enableHWLOC [ hwloc ]
++ lib.optionals enableTBB [ onetbb ]
++ lib.optionals enableICD [ ocl-icd ]
++ lib.optionals enableLTTNG [ lttng-ust ]
++ lib.optionals enableSPIRV [
(spirv-llvm-translator.override { inherit (llvmPackages) llvm; })
spirv-tools
];
nativeInstallCheckInputs = [
writableTmpDirAsHomeHook # needed for POCL_CACHE_DIR
];
doInstallCheck = true;
installCheckPhase = lib.optionalString enableICD ''
runHook preInstallCheck
export OCL_ICD_VENDORS=$out/etc/OpenCL/vendors
$out/bin/poclcc -o poclcc.cl.pocl $src/examples/poclcc/poclcc.cl
runHook postInstallCheck
'';
setupHook = lib.optionalDrvAttr enableICD (
writeText "setup-hook" ''
addToSearchPath OCL_ICD_VENDORS @out@/etc/OpenCL/vendors
''
);
passthru =
let
self = finalAttrs.finalPackage;
in
{
updateScript = nix-update-script { };
git = self.override { useGit = true; };
withICD = enableICD;
test = {
# Run builtin tests (causes a rebuild)
self = self.overrideAttrs { doCheck = true; };
# Run basic test from Khronos OpenCL Conformance Test Suite
# WARN: despite its name, test_basic is very exhaustive, and can take more
# than 1 hour in a marenostrum5 node.
cts =
assert enableICD;
lib.genAttrs [ "api" "basic" "c11_atomics" "printf" "svm" ] (
name:
runCommand "pocl-cts-test_${name}" {
nativeBuildInputs = [ self ];
requiredSystemFeatures = [ "sys-devices" ];
env = {
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
};
} "${opencl-cts}/bin/Release/test_${name} | tee $out"
);
};
};
env.HWLOC_SYNTHETIC = lib.optionalDrvAttr enableHWLOC "node:1 core:1 pu:1";
propagatedBuildInputs = [ stdenv.cc.cc ];
meta = with lib; {
description = "A portable open source (MIT-licensed) implementation of the OpenCL standard";
homepage = "http://portablecl.org";
license = licenses.mit;
maintainers = with maintainers; [
leixb
jansol
xddxdd
bsc.maintainers.leixb
];
platforms = platforms.linux ++ platforms.darwin;
};
})

View File

@@ -1,58 +0,0 @@
{
stdenv,
lib,
fetchurl,
ocl-icd,
opencl-headers,
}:
stdenv.mkDerivation {
pname = "rodinia-opencl";
version = "3.1";
src = fetchurl {
url = "http://www.cs.virginia.edu/~skadron/lava/Rodinia/Packages/rodinia_3.1.tar.bz2";
hash = "sha256-+uusfBHtj4/Pa/LX6FwwhvwtEfciBNbfwo3FsujyrP0=";
};
patches = [
./rodinia-fixes.patch
./rodinia-rm.patch
];
buildInputs = [
opencl-headers
ocl-icd
];
buildFlags = [
"OPENCL"
"--always-make"
];
preBuild = ''
mkdir -p bin/linux/{cuda,omp,opencl}
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share
cp -r bin data opencl $out
cp LICENSE README $out/share
runHook postInstall
'';
meta = {
homepage = "https://rodinia.cs.virginia.edu/";
description = "Test Suite of Compute-Intensive Applications with Accelerators";
maintainers = with lib.maintainers.bsc; [ abonerib ];
platforms = lib.platforms.linux;
license = {
deprecated = false;
free = false;
fullName = "Rodinia License";
redistributable = true;
shortName = "rodinia";
url = "https://www.cs.virginia.edu/~skadron/lava/rodinia/license.htm";
};
};
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,6 @@ buildGoModule rec {
vendorHash = "sha256-A1dd9T9SIEHDCiVT2UwV6T02BSLh9ej6LC/2l54hgwI=";
doCheck = false;
strictDeps = true;
meta = with lib; {
description = "Prometheus SLURM Exporter";

View File

@@ -18,7 +18,6 @@ stdenv.mkDerivation rec {
};
hardeningDisable = [ "all" ];
dontStrip = true;
strictDeps = true;
configureFlags = [ "--with-ovni=${ovni}" ];
nativeBuildInputs = [

View File

@@ -1,72 +0,0 @@
{
backendStdenv,
fetchFromGitHub,
automake,
autoconf,
libtool,
gnumake,
autoreconfHook,
boost,
cudatoolkit,
libcublas,
cuda_cudart,
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
backendStdenv.mkDerivation {
pname = "tacuda";
inherit (source) src version;
enableParallelBuilding = true;
separateDebugInfo = true;
strictDeps = true;
nativeBuildInputs = [
autoreconfHook
automake
autoconf
libtool
gnumake
];
patches = [ ./fix_config.patch ];
configureFlags = [ "--with-cuda-include=${cudatoolkit}/include" ];
buildInputs = [
boost
libcublas
cuda_cudart
];
}

View File

@@ -1,13 +0,0 @@
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,

View File

@@ -17,7 +17,6 @@ stdenv.mkDerivation rec {
pname = "tagaspi";
enableParallelBuilding = true;
separateDebugInfo = true;
strictDeps = true;
version = "2.0";
src = fetchFromGitHub {

View File

@@ -45,7 +45,6 @@ in stdenv.mkDerivation {
inherit (source) src version;
enableParallelBuilding = true;
separateDebugInfo = true;
strictDeps = true;
nativeBuildInputs = [
autoconf

View File

@@ -1,48 +0,0 @@
{
stdenv,
automake,
autoconf,
libtool,
gnumake,
boost,
mpi,
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;
strictDeps = true;
configureFlags = [
"--with-opencl-lib=${ocl-icd}/lib"
"--with-opencl-include=${opencl-headers}/include"
];
nativeBuildInputs = [
autoreconfHook
automake
autoconf
libtool
gnumake
];
buildInputs = [
boost
mpi
];
dontDisableStatic = true;
hardeningDisable = [ "all" ];
})

View File

@@ -1,63 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
python3,
cudatoolkit,
libbacktrace,
intel-compute-runtime,
level-zero,
unified-memory-framework,
autoAddDriverRunpath,
enableL0 ? false,
}:
stdenv.mkDerivation rec {
pname = "unified-runtime";
version = "2025-WW45";
src = fetchFromGitHub {
owner = "intel";
repo = "llvm";
tag = version;
sha256 = "sha256-yf8pFEeNEWf9LpEhAy4vMdFDlA08x5XaCegnq+5aXRw=";
};
sourceRoot = "${src.name}/unified-runtime";
nativeBuildInputs = [
cmake
python3
libbacktrace
(python3.withPackages (
python-pkgs: with python-pkgs; [
lit
filecheck
]
))
autoAddDriverRunpath
];
buildInputs = [
unified-memory-framework
cudatoolkit
]
++ lib.optionals enableL0 [
intel-compute-runtime
level-zero
];
cmakeFlags = [
(lib.cmakeBool "UR_USE_EXTERNAL_UMF" true)
(lib.cmakeBool "UR_BUILD_TESTS" false)
(lib.cmakeBool "UR_BUILD_ADAPTER_CUDA" true)
(lib.cmakeBool "UR_BUILD_ADAPTER_L0" enableL0)
(lib.cmakeBool "UR_BUILD_ADAPTER_OPENCL" false)
(lib.cmakeBool "UR_BUILD_ADAPTER_HIP" false)
(lib.cmakeBool "UR_BUILD_ADAPTER_NATIVE_CPU" false)
];
}

View File

@@ -9,7 +9,6 @@ python3Packages.buildPythonApplication {
src = ./.;
doCheck = false;
strictDeps = true;
build-system = with python3Packages; [
setuptools

View File

@@ -23,6 +23,9 @@ in stdenv.mkDerivation {
dontUnpack = true;
dontConfigure = true;
# nOS-V requires access to /sys/devices to request NUMA information
requiredSystemFeatures = [ "sys-devices" ];
buildInputs = [ openmp ];
buildPhase = ''

View File

@@ -2,7 +2,6 @@
intelPackages,
writeText,
strace,
pocl,
}:
let
@@ -31,15 +30,15 @@ let
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;
return 0; // we excpect to fail since no devices should be available;
}
'';
in
stdenv.mkDerivation (finalAttrs: {
stdenv.mkDerivation {
version = "0.0.1";
name = "hello-sycl";
nativeBuildInputs = [
buildInputs = [
stdenv
strace
];
@@ -53,39 +52,11 @@ stdenv.mkDerivation (finalAttrs: {
echo CXX=$CXX
command -v $CXX
$CXX -fsycl hello.cpp -o hello
./hello | tee test-output
./hello
set +x
'';
installPhase = ''
cp test-output $out
touch $out
'';
passthru = {
withPocl = finalAttrs.finalPackage.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ pocl ];
env = (old.env or { }) // {
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
# Make PoCL report Intel vendor id so oneapi SYCL works
POCL_DRIVER_VERSION_OVERRIDE = "2024.18.6.0.02_160000";
POCL_CPU_VENDOR_ID_OVERRIDE = 32902;
};
doInstallCheck = true;
installCheckPhase = ''
grep "Hello World! (on device)" $out
'';
});
withIntel = finalAttrs.finalPackage.overrideAttrs (old: {
env = (old.env or { }) // {
OCL_ICD_VENDORS = intelPackages.compiler + "/etc/OpenCL/vendors";
};
doInstallCheck = true;
installCheckPhase = ''
grep "Hello World! (on device)" $out
'';
});
};
})
}

View File

@@ -5,7 +5,6 @@
nosv,
clangOmpss2Nodes,
strace,
pocl,
}:
let
@@ -37,7 +36,7 @@ let
'';
in
intelPackages.stdenv.mkDerivation (finalAttrs: {
intelPackages.stdenv.mkDerivation {
version = "0.0.1";
name = "hello-syclompss";
@@ -49,34 +48,6 @@ intelPackages.stdenv.mkDerivation (finalAttrs: {
nosv
];
passthru = {
withPocl = finalAttrs.finalPackage.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ pocl ];
env = (old.env or { }) // {
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
# Make PoCL report Intel vendor id so oneapi SYCL works
POCL_DRIVER_VERSION_OVERRIDE = "2024.18.6.0.02_160000";
POCL_CPU_VENDOR_ID_OVERRIDE = 32902;
};
doInstallCheck = true;
installCheckPhase = ''
grep "Hello World! (on device)" $out
'';
});
withIntel = finalAttrs.finalPackage.overrideAttrs (old: {
env = (old.env or { }) // {
OCL_ICD_VENDORS = intelPackages.compiler + "/etc/OpenCL/vendors";
};
doInstallCheck = true;
installCheckPhase = ''
grep "Hello World! (on device)" $out
'';
});
};
dontUnpack = true;
dontConfigure = true;
@@ -100,11 +71,11 @@ intelPackages.stdenv.mkDerivation (finalAttrs: {
$NODES_HOME/lib/nodes-main-wrapper.o \
hello.cpp -o hello
./hello | tee test-output
./hello
set +x
'';
installPhase = ''
cp test-output $out
touch $out
'';
})
}

View File

@@ -1,127 +0,0 @@
#include <CL/cl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_LEN 128
cl_int exit_err = CL_SUCCESS;
#define CHECK(cmd) \
do { \
cl_int err = cmd; \
if (err != CL_SUCCESS) { \
printf("[ERROR] " #cmd " (Error code: %d)\n" \
"@ "__FILE__ \
":%d", \
err, __LINE__); \
exit_err = err; \
goto cleanup; \
} \
} while (0)
const char *kernel_source = "__kernel void vector_add(__global const float *a, "
"__global const float *b, __global float *c) {\n"
" int gid = get_global_id(0);\n"
" c[gid] = a[gid] + b[gid];\n"
"}\n";
cl_int test_kernel_compilation(cl_platform_id platform) {
cl_device_id device = NULL;
cl_context context = NULL;
cl_program program = NULL;
cl_int err = CL_SUCCESS;
char device_name[BUF_LEN];
// Get first device for this platform
CHECK(clGetDeviceIDs(platform, CL_DEVICE_TYPE_ALL, 1, &device, NULL));
// Get device name
CHECK(clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(device_name),
device_name, NULL));
printf(" Device: %s\n", device_name);
context = clCreateContext(NULL, 1, &device, NULL, NULL, &err);
CHECK(err);
program = clCreateProgramWithSource(context, 1, &kernel_source, NULL, &err);
CHECK(err);
err = clBuildProgram(program, 1, &device, NULL, NULL, NULL);
if (err != CL_SUCCESS) {
printf(" [ERROR] Kernel compilation failed (Error code: %d)\n", err);
// Build log
size_t log_size;
CHECK(clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_LOG, 0, NULL,
&log_size));
char *log = (char *)malloc(log_size);
CHECK(clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_LOG, log_size,
log, NULL));
printf(" Build log:\n%s\n", log);
free(log);
goto cleanup;
}
printf(" [OK] Kernel compiled successfully!\n");
cleanup:
if (program)
clReleaseProgram(program);
if (context)
clReleaseContext(context);
printf("\n");
return exit_err;
}
int main() {
cl_uint num_platforms;
cl_platform_id *platforms = NULL;
// Get number of platforms
CHECK(clGetPlatformIDs(0, NULL, &num_platforms));
printf("Found %d OpenCL platform(s)\n\n", num_platforms);
if (num_platforms == 0) {
printf("No OpenCL platforms found!\n");
return EXIT_FAILURE;
}
// Allocate memory for platforms
platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms);
// Get platform IDs
CHECK(clGetPlatformIDs(num_platforms, platforms, NULL));
// Query each platform and test kernel compilation
for (cl_uint i = 0; i < num_platforms; i++) {
char platform_name[BUF_LEN];
char platform_vendor[BUF_LEN];
char platform_version[BUF_LEN];
CHECK(clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME,
sizeof(platform_name), platform_name, NULL));
CHECK(clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR,
sizeof(platform_vendor), platform_vendor, NULL));
CHECK(clGetPlatformInfo(platforms[i], CL_PLATFORM_VERSION,
sizeof(platform_version), platform_version, NULL));
printf("Platform %d: %s\n", i, platform_name);
printf(" Vendor: %s\n", platform_vendor);
printf(" Version: %s\n", platform_version);
// Test kernel compilation
CHECK(test_kernel_compilation(platforms[i]));
}
cleanup:
if (platforms)
free(platforms);
if (exit_err == CL_SUCCESS)
return EXIT_SUCCESS;
return EXIT_FAILURE;
}

View File

@@ -1,104 +0,0 @@
{
stdenv,
ocl-icd,
opencl-headers,
pocl,
clinfo,
runCommand,
lib,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "opencl-pocl-test";
version = "1.0.0";
src = ./opencl.c;
dontUnpack = true;
dontConfigure = true;
buildInputs = [
ocl-icd
opencl-headers
];
buildPhase = ''
runHook preBuild
$CC -Wall -Wextra -D CL_TARGET_OPENCL_VERSION=100 $src -o ocl-hello -lOpenCL
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp ocl-hello $out/bin
runHook postInstall
'';
passthru = {
test-icd =
runCommand "custom-clinfo"
{
nativeBuildInputs =
assert !(lib.hasPrefix "pocl" ocl-icd.pname);
[
clinfo
finalAttrs.finalPackage
pocl
];
env = {
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
};
requiredSystemFeatures = [ "sys-devices" ];
}
''
set -x
mkdir $out
clinfo -l >$out/clinfo
clinfo >$out/clinfo-full
ocl-hello >$out/hello
for i in $out/*; do
grep "Portable Computing Language" $i
done
echo $OCL_ICD_VENDORS >$out/env
grep "pocl.*/etc/OpenCL/vendors" $out/env
set +x
'';
# this needs: ocl-icd = pocl-noicd
test-noicd =
runCommand "custom-clinfo"
{
nativeBuildInputs = [
finalAttrs.finalPackage
];
env = {
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
};
requiredSystemFeatures = [ "sys-devices" ];
}
''
ocl-hello >$out
grep "Portable Computing Language" $out
'';
};
})

View File

@@ -1,27 +0,0 @@
{
runCommand,
pocl,
clinfo,
}:
runCommand "clinfo-pocl"
{
nativeBuildInputs = [
clinfo
pocl
];
requiredSystemFeatures = [ "sys-devices" ];
env = {
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
};
}
''
echo $OCL_ICD_VENDORS
clinfo >$out
# check that we have PoCL:
grep "Portable Computing Language" $out
''

View File

@@ -1,40 +0,0 @@
{
intelPackages,
pocl,
runCommandWith,
symlinkJoin,
clinfo,
}:
runCommandWith
{
name = "sycl-ls";
inherit (intelPackages) stdenv;
runLocal = true;
derivationArgs = {
nativeBuildInputs = [ clinfo ];
env = {
OCL_ICD_VENDORS = symlinkJoin {
name = "vendors";
paths = builtins.map (p: p + "/etc/OpenCL/vendors") [
intelPackages.compiler
pocl
];
};
POCL_DRIVER_VERSION_OVERRIDE = "2024.18.6.0.02_160000";
POCL_CPU_VENDOR_ID_OVERRIDE = 32902;
POCL_DEBUG = "error,warn";
POCL_CACHE_DIR = "/build/pocl_cache";
HWLOC_SYNTHETIC = "node:1 core:1 pu:1";
};
};
}
# bash
''
clinfo -l | tee -a $out
sycl-ls | tee -a $out
test x6 = x"$(cat $out | wc -l)" # 2 lines per clinfo entry and 1 per sycl-ls
''