forked from rarias/bscpkgs
Compare commits
19 Commits
pkgs/tasyc
...
1320a2dd59
| Author | SHA1 | Date | |
|---|---|---|---|
|
1320a2dd59
|
|||
|
8e3d29d101
|
|||
|
0efc78f6ed
|
|||
|
c3e215d2f7
|
|||
|
1d3efc690c
|
|||
|
6bcc2e9a52
|
|||
|
bbb421a340
|
|||
|
105a80c8b5
|
|||
|
3d9331eed3
|
|||
|
5c2d9fe67c
|
|||
|
edf1424aef
|
|||
|
000271b03d
|
|||
|
68ac18673e
|
|||
|
29983ce4ee
|
|||
|
6276999d48
|
|||
|
adc6fedd0f
|
|||
|
53a2f12d0c
|
|||
|
f03794ff16
|
|||
|
7469a80f3a
|
22
default.nix
22
default.nix
@@ -1,19 +1,11 @@
|
|||||||
let
|
let
|
||||||
bscOverlay = import ./overlay.nix;
|
bscOverlay = import ./overlay.nix;
|
||||||
|
|
||||||
# read flake.lock and determine revision from there
|
# Pin the nixpkgs
|
||||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
nixpkgsPath = import ./nixpkgs.nix;
|
||||||
inherit (lock.nodes.nixpkgs.locked) rev narHash;
|
|
||||||
fetchedNixpkgs = builtins.fetchTarball {
|
pkgs = import nixpkgsPath {
|
||||||
url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz";
|
overlays = [ bscOverlay ];
|
||||||
sha256 = narHash;
|
|
||||||
};
|
};
|
||||||
in
|
|
||||||
{ overlays ? [ ]
|
in pkgs
|
||||||
, nixpkgs ? fetchedNixpkgs
|
|
||||||
, ...
|
|
||||||
}@attrs:
|
|
||||||
import nixpkgs (
|
|
||||||
(builtins.removeAttrs attrs [ "overlays" "nixpkgs" ]) //
|
|
||||||
{ overlays = [ bscOverlay ] ++ overlays; }
|
|
||||||
)
|
|
||||||
|
|||||||
9
nixpkgs.nix
Normal file
9
nixpkgs.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
let
|
||||||
|
commit = "e4ad989506ec7d71f7302cc3067abd82730a4beb";
|
||||||
|
in builtins.fetchTarball {
|
||||||
|
# Descriptive name to make the store path easier to identify
|
||||||
|
name = "nixpkgs-${commit}";
|
||||||
|
url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz";
|
||||||
|
# Hash obtained using `nix-prefetch-url --unpack <url>`
|
||||||
|
sha256 = "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=";
|
||||||
|
}
|
||||||
@@ -26,7 +26,7 @@ let
|
|||||||
intelPackages = final.intelPackages_2025;
|
intelPackages = final.intelPackages_2025;
|
||||||
oneMath = callPackage ./pkgs/onemath/default.nix { };
|
oneMath = callPackage ./pkgs/onemath/default.nix { };
|
||||||
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
|
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
|
||||||
lmbench = callPackage ./pkgs/lmbench/default.nix { };
|
#lmbench = callPackage ./pkgs/lmbench/default.nix { }; # Broken
|
||||||
mcxx = callPackage ./pkgs/mcxx/default.nix { };
|
mcxx = callPackage ./pkgs/mcxx/default.nix { };
|
||||||
nanos6 = callPackage ./pkgs/nanos6/default.nix { };
|
nanos6 = callPackage ./pkgs/nanos6/default.nix { };
|
||||||
nanos6Debug = final.nanos6.override { enableDebug = true; };
|
nanos6Debug = final.nanos6.override { enableDebug = true; };
|
||||||
@@ -68,7 +68,6 @@ in bscPkgs // {
|
|||||||
hello-c = callPackage ./test/compilers/hello-c.nix { };
|
hello-c = callPackage ./test/compilers/hello-c.nix { };
|
||||||
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
|
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
|
||||||
hello-sycl = callPackage ./test/compilers/hello-sycl.nix { };
|
hello-sycl = callPackage ./test/compilers/hello-sycl.nix { };
|
||||||
hello-syclompss = callPackage ./test/compilers/icpx-ompss2.nix { };
|
|
||||||
lto = callPackage ./test/compilers/lto.nix { };
|
lto = callPackage ./test/compilers/lto.nix { };
|
||||||
asan = callPackage ./test/compilers/asan.nix { };
|
asan = callPackage ./test/compilers/asan.nix { };
|
||||||
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
|
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
|
||||||
|
|||||||
@@ -10,14 +10,12 @@
|
|||||||
, ompss2rt ? null
|
, ompss2rt ? null
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes");
|
usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes");
|
||||||
sameNosv = openmp.nosv == ompss2rt.nosv;
|
sameNosv = openmp.nosv == ompss2rt.nosv;
|
||||||
in
|
in
|
||||||
|
|
||||||
assert assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V";
|
assert lib.assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V";
|
||||||
|
|
||||||
let
|
let
|
||||||
homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME";
|
homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME";
|
||||||
@@ -37,7 +35,6 @@ let
|
|||||||
targetConfig = stdenv.targetPlatform.config;
|
targetConfig = stdenv.targetPlatform.config;
|
||||||
inherit gcc;
|
inherit gcc;
|
||||||
cc = clangOmpss2Unwrapped;
|
cc = clangOmpss2Unwrapped;
|
||||||
gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
|
|
||||||
|
|
||||||
resetIntelCCFlags = let tconf = builtins.replaceStrings ["-"] ["_"] targetConfig;
|
resetIntelCCFlags = let tconf = builtins.replaceStrings ["-"] ["_"] targetConfig;
|
||||||
in writeShellScript "remove-intel.sh" ''
|
in writeShellScript "remove-intel.sh" ''
|
||||||
@@ -57,11 +54,11 @@ let
|
|||||||
in wrapCCWith {
|
in wrapCCWith {
|
||||||
inherit cc bintools;
|
inherit cc bintools;
|
||||||
# extraPackages adds packages to depsTargetTargetPropagated
|
# extraPackages adds packages to depsTargetTargetPropagated
|
||||||
extraPackages = optional (openmp != null) openmp;
|
extraPackages = lib.optional (openmp != null) openmp;
|
||||||
extraBuildCommands = ''
|
extraBuildCommands = ''
|
||||||
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
||||||
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags
|
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags
|
||||||
echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-ldflags
|
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${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
|
||||||
|
|
||||||
for dir in ${gcc.cc}/lib/gcc/${targetConfig}/*/include; do
|
for dir in ${gcc.cc}/lib/gcc/${targetConfig}/*/include; do
|
||||||
@@ -85,10 +82,10 @@ in wrapCCWith {
|
|||||||
|
|
||||||
'' + lib.optionalString (openmp != null) ''
|
'' + lib.optionalString (openmp != null) ''
|
||||||
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
|
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
|
||||||
'' + optionalString (ompss2rt != null) ''
|
'' + lib.optionalString (ompss2rt != null) ''
|
||||||
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
|
echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook
|
||||||
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
|
echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook
|
||||||
'' + optionalString (ompss2rt != null && ompss2rt.pname == "nodes") ''
|
'' + lib.optionalString (ompss2rt != null && ompss2rt.pname == "nodes") ''
|
||||||
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
|
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,6 @@ stdenv.mkDerivation rec {
|
|||||||
rm -f $out/lib/libiomp*
|
rm -f $out/lib/libiomp*
|
||||||
'' + lib.optionalString enableNosv ''
|
'' + lib.optionalString enableNosv ''
|
||||||
rm -f $out/lib/libomp.*
|
rm -f $out/lib/libomp.*
|
||||||
rm -f $out/libllvmrt/libomp.*
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
|
|||||||
@@ -1,20 +1,19 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
libtirpc,
|
|
||||||
fetchFromGitHub
|
fetchFromGitHub
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "lmbench";
|
pname = "lmbench";
|
||||||
version = "941a0dcc";
|
version = "701c6c35";
|
||||||
|
|
||||||
# We use the intel repo as they have fixed some problems
|
# We use the intel repo as they have fixed some problems
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "intel";
|
owner = "intel";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "941a0dcc0e7bdd9bb0dee05d7f620e77da8c43af";
|
rev = "701c6c35b0270d4634fb1dc5272721340322b8ed";
|
||||||
sha256 = "sha256-SzwplRBO3V0R3m3p15n71ivYBMGoLsajFK2TapYxdqk=";
|
sha256 = "0sf6zk03knkardsfd6qx7drpm56nhg53n885cylkggk83r38idyr";
|
||||||
};
|
};
|
||||||
|
|
||||||
postUnpack = ''
|
postUnpack = ''
|
||||||
@@ -25,19 +24,12 @@ stdenv.mkDerivation rec {
|
|||||||
sed -i "s@/bin/rm@rm@g" $(find . -name Makefile)
|
sed -i "s@/bin/rm@rm@g" $(find . -name Makefile)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildInputs = [ libtirpc ];
|
|
||||||
patches = [ ./fix-install.patch ];
|
|
||||||
|
|
||||||
hardeningDisable = [ "all" ];
|
hardeningDisable = [ "all" ];
|
||||||
|
|
||||||
enableParallelBuilding = false;
|
enableParallelBuilding = false;
|
||||||
|
|
||||||
preBuild = ''
|
preBuild = ''
|
||||||
makeFlagsArray+=(
|
makeFlagsArray+=(BASE=$out)
|
||||||
BASE=$out
|
|
||||||
CPPFLAGS=-I${libtirpc.dev}/include/tirpc
|
|
||||||
LDFLAGS=-ltirpc
|
|
||||||
)
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
--- a/Makefile
|
|
||||||
+++ b/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
|
|
||||||
@@ -12,11 +12,11 @@
|
|||||||
, opensycl ? null
|
, opensycl ? null
|
||||||
, adaptivecpp ? null
|
, adaptivecpp ? null
|
||||||
, useIntel ? true
|
, useIntel ? true
|
||||||
|
# TODO: move back to main branch and release
|
||||||
, useGit ? false
|
, useGit ? true
|
||||||
, gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tasycl/tasycl.git"
|
, gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tasycl/tasycl.git"
|
||||||
, gitBranch ? "main"
|
, gitBranch ? "fix/various"
|
||||||
, gitCommit ? "78f98dcf60a66e0eaa3b4ebcf55be076bec64825"
|
, gitCommit ? "8be4729ded0ef64f028e98eb2b2baf2ccba7ff42"
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert (useIntel || opensycl != null || adaptivecpp != null);
|
assert (useIntel || opensycl != null || adaptivecpp != null);
|
||||||
@@ -42,12 +42,12 @@ let
|
|||||||
;
|
;
|
||||||
|
|
||||||
release = rec {
|
release = rec {
|
||||||
version = "2.1.0";
|
version = "2.0.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "bsc-pm";
|
owner = "bsc-pm";
|
||||||
repo = "tasycl";
|
repo = "tasycl";
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-0kXnb0lHeQNHR27GTLbJ8xbiICLU8k2+FqEnnFSrzzo=";
|
hash = "sha256-Z4d45baVBhE9NW8Ww948M78TJx7BpxTr9pGJvJO9hdI=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
{ writeText, intelPackages, nodes, nosv, clangOmpss2Nodes, clangOmpss2Unwrapped, clangOmpss2, 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;
|
|
||||||
|
|
||||||
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 -fsycl \
|
|
||||||
-fsycl-host-compiler=${clangOmpss2Nodes}/bin/clang++ \
|
|
||||||
-fsycl-host-compiler-options='-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