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
|
||||
bscOverlay = import ./overlay.nix;
|
||||
|
||||
# read flake.lock and determine revision from there
|
||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||
inherit (lock.nodes.nixpkgs.locked) rev narHash;
|
||||
fetchedNixpkgs = builtins.fetchTarball {
|
||||
url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz";
|
||||
sha256 = narHash;
|
||||
# Pin the nixpkgs
|
||||
nixpkgsPath = import ./nixpkgs.nix;
|
||||
|
||||
pkgs = import nixpkgsPath {
|
||||
overlays = [ bscOverlay ];
|
||||
};
|
||||
in
|
||||
{ overlays ? [ ]
|
||||
, nixpkgs ? fetchedNixpkgs
|
||||
, ...
|
||||
}@attrs:
|
||||
import nixpkgs (
|
||||
(builtins.removeAttrs attrs [ "overlays" "nixpkgs" ]) //
|
||||
{ overlays = [ bscOverlay ] ++ overlays; }
|
||||
)
|
||||
|
||||
in pkgs
|
||||
|
||||
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;
|
||||
oneMath = callPackage ./pkgs/onemath/default.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 { };
|
||||
nanos6 = callPackage ./pkgs/nanos6/default.nix { };
|
||||
nanos6Debug = final.nanos6.override { enableDebug = true; };
|
||||
@@ -68,7 +68,6 @@ in bscPkgs // {
|
||||
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; };
|
||||
|
||||
@@ -10,14 +10,12 @@
|
||||
, ompss2rt ? null
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes");
|
||||
sameNosv = openmp.nosv == ompss2rt.nosv;
|
||||
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
|
||||
homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME";
|
||||
@@ -37,7 +35,6 @@ let
|
||||
targetConfig = stdenv.targetPlatform.config;
|
||||
inherit gcc;
|
||||
cc = clangOmpss2Unwrapped;
|
||||
gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
|
||||
|
||||
resetIntelCCFlags = let tconf = builtins.replaceStrings ["-"] ["_"] targetConfig;
|
||||
in writeShellScript "remove-intel.sh" ''
|
||||
@@ -57,11 +54,11 @@ let
|
||||
in wrapCCWith {
|
||||
inherit cc bintools;
|
||||
# extraPackages adds packages to depsTargetTargetPropagated
|
||||
extraPackages = optional (openmp != null) openmp;
|
||||
extraPackages = lib.optional (openmp != null) openmp;
|
||||
extraBuildCommands = ''
|
||||
echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags
|
||||
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags
|
||||
echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-ldflags
|
||||
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 "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
|
||||
|
||||
for dir in ${gcc.cc}/lib/gcc/${targetConfig}/*/include; do
|
||||
@@ -85,10 +82,10 @@ in wrapCCWith {
|
||||
|
||||
'' + lib.optionalString (openmp != null) ''
|
||||
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 ${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
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -68,7 +68,6 @@ stdenv.mkDerivation rec {
|
||||
rm -f $out/lib/libiomp*
|
||||
'' + lib.optionalString enableNosv ''
|
||||
rm -f $out/lib/libomp.*
|
||||
rm -f $out/libllvmrt/libomp.*
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
libtirpc,
|
||||
fetchFromGitHub
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lmbench";
|
||||
version = "941a0dcc";
|
||||
version = "701c6c35";
|
||||
|
||||
# We use the intel repo as they have fixed some problems
|
||||
src = fetchFromGitHub {
|
||||
owner = "intel";
|
||||
repo = pname;
|
||||
rev = "941a0dcc0e7bdd9bb0dee05d7f620e77da8c43af";
|
||||
sha256 = "sha256-SzwplRBO3V0R3m3p15n71ivYBMGoLsajFK2TapYxdqk=";
|
||||
rev = "701c6c35b0270d4634fb1dc5272721340322b8ed";
|
||||
sha256 = "0sf6zk03knkardsfd6qx7drpm56nhg53n885cylkggk83r38idyr";
|
||||
};
|
||||
|
||||
postUnpack = ''
|
||||
@@ -25,19 +24,12 @@ stdenv.mkDerivation rec {
|
||||
sed -i "s@/bin/rm@rm@g" $(find . -name Makefile)
|
||||
'';
|
||||
|
||||
buildInputs = [ libtirpc ];
|
||||
patches = [ ./fix-install.patch ];
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
enableParallelBuilding = false;
|
||||
|
||||
preBuild = ''
|
||||
makeFlagsArray+=(
|
||||
BASE=$out
|
||||
CPPFLAGS=-I${libtirpc.dev}/include/tirpc
|
||||
LDFLAGS=-ltirpc
|
||||
)
|
||||
makeFlagsArray+=(BASE=$out)
|
||||
'';
|
||||
|
||||
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
|
||||
, adaptivecpp ? null
|
||||
, useIntel ? true
|
||||
|
||||
, useGit ? false
|
||||
# TODO: move back to main branch and release
|
||||
, useGit ? true
|
||||
, gitUrl ? "git@gitlab-internal.bsc.es:task-awareness/tasycl/tasycl.git"
|
||||
, gitBranch ? "main"
|
||||
, gitCommit ? "78f98dcf60a66e0eaa3b4ebcf55be076bec64825"
|
||||
, gitBranch ? "fix/various"
|
||||
, gitCommit ? "8be4729ded0ef64f028e98eb2b2baf2ccba7ff42"
|
||||
}:
|
||||
|
||||
assert (useIntel || opensycl != null || adaptivecpp != null);
|
||||
@@ -42,12 +42,12 @@ let
|
||||
;
|
||||
|
||||
release = rec {
|
||||
version = "2.1.0";
|
||||
version = "2.0.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bsc-pm";
|
||||
repo = "tasycl";
|
||||
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