diff --git a/overlay.nix b/overlay.nix index f7d22fa..3979fa7 100644 --- a/overlay.nix +++ b/overlay.nix @@ -75,6 +75,9 @@ in bscPkgs // { clangNodes-task = callPackage ./test/compilers/ompss2.nix { stdenv = final.stdenvClangOmpss2Nodes; }; + clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix { + stdenv = final.stdenvClangOmpss2OpenmpNodes; + }; }; pkgs = final.runCommand "ci-pkgs" { } diff --git a/test/compilers/clang-openmp.nix b/test/compilers/clang-openmp.nix new file mode 100644 index 0000000..42044c7 --- /dev/null +++ b/test/compilers/clang-openmp.nix @@ -0,0 +1,46 @@ +{ + stdenv +, writeText +}: + +let + hello_c = writeText "hello.c" '' + int main(int argc, char *argv[]) + { + int test = 1; + #pragma omp parallel + #pragma omp single + #pragma omp task + test = 0; + + return test; + } + ''; + +in stdenv.mkDerivation { + pname = "openmp-test"; + version = "1.0.0"; + + dontUnpack = true; + dontConfigure = true; + + # nOS-V 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; + + buildPhase = '' + set -x + + cp ${hello_c} hello.c + clang -fopenmp ./hello.c -o hello + ./hello + + set +x + ''; + + installPhase = '' + touch $out + ''; + +} +