Enable CI runtime tests for Nanos6
These require a runner with nix available.
This commit is contained in:
parent
3d39b8cc54
commit
999862e530
@ -1,5 +1,7 @@
|
|||||||
build:debian-latest:
|
build:debian-testing:
|
||||||
image: debian:latest
|
image: debian:testing
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
stage: build
|
stage: build
|
||||||
before_script:
|
before_script:
|
||||||
- apt update && apt -y install make autoconf gfortran libopenmpi-dev cmake
|
- apt update && apt -y install make autoconf gfortran libopenmpi-dev cmake
|
||||||
@ -12,22 +14,9 @@ build:debian-latest:
|
|||||||
paths:
|
paths:
|
||||||
- install/
|
- install/
|
||||||
|
|
||||||
build:old-glibc:
|
build:rt-tests:
|
||||||
image: nixos/nix:2.9.2
|
|
||||||
stage: build
|
stage: build
|
||||||
|
tags:
|
||||||
|
- nix
|
||||||
script:
|
script:
|
||||||
- nix-build nix/old-glibc.nix
|
- nix build -L --file nix/rt.nix
|
||||||
|
|
||||||
build:nosv-tests:
|
|
||||||
image:
|
|
||||||
name: nixos/nix:2.9.2
|
|
||||||
stage: build
|
|
||||||
before_script:
|
|
||||||
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
|
|
||||||
- eval $(ssh-agent -s)
|
|
||||||
- echo "$SSH_PRIVATE_KEY" | ssh-add /dev/fd/0
|
|
||||||
- mkdir -p ~/.ssh
|
|
||||||
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
|
|
||||||
- cat /proc/sys/user/max_user_namespaces || true
|
|
||||||
script:
|
|
||||||
- nix --extra-experimental-features "nix-command impure-derivations ca-derivations" --option sandbox false build -L --impure --file nix/nosv.nix
|
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
From abeed615777690ba748f64bdb72a35fe5311259b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rodrigo Arias <rodrigo.arias@bsc.es>
|
|
||||||
Date: Thu, 25 Aug 2022 16:36:38 +0200
|
|
||||||
Subject: [PATCH] Emit a fill event at shutdown
|
|
||||||
|
|
||||||
---
|
|
||||||
src/instrument/ovni/InstrumentThreadManagement.cpp | 6 ++++++
|
|
||||||
1 file changed, 6 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/instrument/ovni/InstrumentThreadManagement.cpp b/src/instrument/ovni/InstrumentThreadManagement.cpp
|
|
||||||
index c79a9750..4872b2d9 100644
|
|
||||||
--- a/src/instrument/ovni/InstrumentThreadManagement.cpp
|
|
||||||
+++ b/src/instrument/ovni/InstrumentThreadManagement.cpp
|
|
||||||
@@ -92,6 +92,12 @@ void Instrument::threadHasResumed(__attribute__((unused)) external_thread_id_t t
|
|
||||||
|
|
||||||
void Instrument::threadWillShutdown()
|
|
||||||
{
|
|
||||||
+ ThreadLocalData &tld = getThreadLocalData();
|
|
||||||
+ if (tld._hungry) {
|
|
||||||
+ tld._hungry = false;
|
|
||||||
+ Ovni::schedFill();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
Ovni::threadEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.36.1
|
|
||||||
|
|
102
nix/nanos6.nix
102
nix/nanos6.nix
@ -1,102 +0,0 @@
|
|||||||
let
|
|
||||||
pkgs = import (builtins.fetchTarball
|
|
||||||
"https://pm.bsc.es/gitlab/rarias/bscpkgs/-/archive/master/bscpkgs-master.tar.gz");
|
|
||||||
|
|
||||||
rWrapper = pkgs.rWrapper.override {
|
|
||||||
packages = with pkgs.rPackages; [ tidyverse rjson jsonlite egg viridis ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Recursively set MPI
|
|
||||||
bsc = pkgs.bsc.extend (last: prev: {
|
|
||||||
mpi = last.impi;
|
|
||||||
#mpi = last.openmpi;
|
|
||||||
|
|
||||||
#nanos6 = (prev.nanos6Git.override {
|
|
||||||
# gitUrl = "ssh://git@bscpm03.bsc.es/nanos6/forks/nanos6-extern-001.git";
|
|
||||||
# gitBranch = "ovni_instr";
|
|
||||||
# extrae = null;
|
|
||||||
#}).overrideAttrs (old: {
|
|
||||||
# buildInputs = old.buildInputs ++ [ last.ovni ];
|
|
||||||
# patches = [ ./0001-Emit-a-fill-event-at-shutdown.patch ];
|
|
||||||
# configureFlags = old.configureFlags ++ [
|
|
||||||
# "--with-ovni=${last.ovni}"
|
|
||||||
# ];
|
|
||||||
#});
|
|
||||||
|
|
||||||
nanos6 = prev.nanos6Git.overrideAttrs (old: {
|
|
||||||
src = ~/bsc/nanos6;
|
|
||||||
version = "local";
|
|
||||||
buildInputs = old.buildInputs ++ [ last.ovni ];
|
|
||||||
configureFlags = old.configureFlags ++ [
|
|
||||||
"--with-ovni=${last.ovni}"
|
|
||||||
];
|
|
||||||
});
|
|
||||||
|
|
||||||
# Quick hack, as we only need the libovni runtime to match ours
|
|
||||||
nanos6' = /nix/store/zg989jl3mgdps7amdskna43hipb6snsq-nanos6-60fc5f2;
|
|
||||||
|
|
||||||
ompss2 = {
|
|
||||||
clangUnwrapped = prev.clangOmpss2Unwrapped.overrideAttrs (
|
|
||||||
old:
|
|
||||||
rec {
|
|
||||||
src = ../../ovni-misc/kk2/llvm-mono-d3d4f2bf231b9461a5881c5bf56659516d45e670.tar.bz2;
|
|
||||||
#src = fetchTarball {
|
|
||||||
# url = ../kk/llvm-mono-d3d4f2bf231b9461a5881c5bf56659516d45e670.tar.bz2;
|
|
||||||
#};
|
|
||||||
#builtins.fetchTree {
|
|
||||||
# type = "git";
|
|
||||||
# url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git";
|
|
||||||
# ref = "master";
|
|
||||||
# # Master at 2022-07-26
|
|
||||||
# rev = "d3d4f2bf231b9461a5881c5bf56659516d45e670";
|
|
||||||
# shallow = true;
|
|
||||||
#};
|
|
||||||
version = "d3d4f2bf";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
#clangUnwrapped = /nix/store/fg621rqj50x85gnsbh1pj304049yqlaq-clang-ompss2-d3d4f2b;
|
|
||||||
|
|
||||||
clang = prev.clangOmpss2.override {
|
|
||||||
clangOmpss2Unwrapped = last.ompss2.clangUnwrapped;
|
|
||||||
};
|
|
||||||
|
|
||||||
#clang = /nix/store/qva7b665inxgg8wrfl2jf9dwzdp69sxq-clang-ompss2-wrapper-d3d4f2b;
|
|
||||||
|
|
||||||
stdenv = pkgs.overrideCC pkgs.llvmPackages_11.stdenv bsc.ompss2.clang;
|
|
||||||
};
|
|
||||||
|
|
||||||
nosv = pkgs.stdenv.mkDerivation rec {
|
|
||||||
pname = "nosv";
|
|
||||||
version = src.shortRev;
|
|
||||||
buildInputs = with pkgs; [ autoreconfHook pkg-config numactl last.ovni ];
|
|
||||||
configureFlags = [ "--with-ovni=${last.ovni}" ];
|
|
||||||
dontStrip = true;
|
|
||||||
src = builtins.fetchGit {
|
|
||||||
url = "ssh://git@gitlab-internal.bsc.es/nos-v/nos-v.git";
|
|
||||||
ref = "master";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Quick fix to avoid rebuilding every time the ovni source changes.
|
|
||||||
# Use this nosv' version below as dependency of ovni-rt
|
|
||||||
nosv' = /nix/store/rvnrbc7ibpw06jdilz6mha7szzxcr2mi-nosv-8936f3e;
|
|
||||||
|
|
||||||
ovni = last.callPackage ./ovni.nix { };
|
|
||||||
|
|
||||||
ovni-rt = (last.ovni.override {
|
|
||||||
stdenv = last.ompss2.stdenv;
|
|
||||||
}).overrideAttrs (old: {
|
|
||||||
__impure = true;
|
|
||||||
__noChroot = true;
|
|
||||||
buildInputs = old.buildInputs ++ [
|
|
||||||
last.nosv'
|
|
||||||
pkgs.strace
|
|
||||||
];
|
|
||||||
cmakeFlags = old.cmakeFlags ++ [ "-DBUILD_RT_TESTING=ON" ];
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
in
|
|
||||||
#bsc.ovni-rt
|
|
||||||
bsc.ompss2.clang
|
|
92
nix/rt.nix
Normal file
92
nix/rt.nix
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
let
|
||||||
|
pkgs = import (builtins.fetchTarball
|
||||||
|
"https://pm.bsc.es/gitlab/rarias/bscpkgs/-/archive/update-bscpkgs/bscpkgs-master.tar.gz");
|
||||||
|
|
||||||
|
rWrapper = pkgs.rWrapper.override {
|
||||||
|
packages = with pkgs.rPackages; [ tidyverse rjson jsonlite egg viridis ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Recursively set MPI
|
||||||
|
bsc = pkgs.bsc.extend (last: prev: {
|
||||||
|
mpi = last.impi;
|
||||||
|
#mpi = last.openmpi;
|
||||||
|
|
||||||
|
ovni = last.callPackage ./ovni.nix { };
|
||||||
|
|
||||||
|
# Use a fixed version to compile Nanos6 and nOS-V, so we don't need to
|
||||||
|
# rebuild them when ovni changes. We only need to maintain the
|
||||||
|
# compatibility in the versions of ovni traces, which will be
|
||||||
|
# checked by the emulator anyway.
|
||||||
|
ovniFixed = last.ovni.overrideAttrs (old: {
|
||||||
|
src = builtins.fetchGit {
|
||||||
|
url = "ssh://git@bscpm03.bsc.es/rarias/ovni.git";
|
||||||
|
ref = "nanos6-emu-with-tests";
|
||||||
|
rev = "3d39b8cc544140727c83a066a8fca785aff21965";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
nanos6 = (prev.nanos6Git.override {
|
||||||
|
gitUrl = "ssh://git@bscpm03.bsc.es/nanos6/forks/nanos6-extern-001.git";
|
||||||
|
gitBranch = "ovni_instr";
|
||||||
|
extrae = null;
|
||||||
|
}).overrideAttrs (old: {
|
||||||
|
buildInputs = old.buildInputs ++ [ last.ovniFixed ];
|
||||||
|
configureFlags = old.configureFlags ++ [
|
||||||
|
"--with-ovni=${last.ovniFixed}"
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
ompss2 = {
|
||||||
|
# We need a recent clang to avoid silent ABI incompatible changes...
|
||||||
|
clangUnwrapped = prev.clangOmpss2Unwrapped.overrideAttrs (
|
||||||
|
old:
|
||||||
|
rec {
|
||||||
|
src = builtins.fetchTree {
|
||||||
|
type = "git";
|
||||||
|
url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git";
|
||||||
|
ref = "master";
|
||||||
|
# Master at 2022-07-26
|
||||||
|
rev = "d3d4f2bf231b9461a5881c5bf56659516d45e670";
|
||||||
|
shallow = true;
|
||||||
|
};
|
||||||
|
version = "d3d4f2bf";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
clang = prev.clangOmpss2.override {
|
||||||
|
clangOmpss2Unwrapped = last.ompss2.clangUnwrapped;
|
||||||
|
};
|
||||||
|
|
||||||
|
stdenv = pkgs.overrideCC pkgs.llvmPackages_11.stdenv bsc.ompss2.clang;
|
||||||
|
};
|
||||||
|
|
||||||
|
nosv = pkgs.stdenv.mkDerivation rec {
|
||||||
|
pname = "nosv";
|
||||||
|
version = src.shortRev;
|
||||||
|
buildInputs = with pkgs; [ autoreconfHook pkg-config numactl last.ovniFixed ];
|
||||||
|
configureFlags = [ "--with-ovni=${last.ovniFixed}" ];
|
||||||
|
dontStrip = true;
|
||||||
|
src = builtins.fetchGit {
|
||||||
|
url = "ssh://git@gitlab-internal.bsc.es/nos-v/nos-v.git";
|
||||||
|
ref = "master";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Now we rebuild ovni with the Nanos6 and nOS-V versions, which were
|
||||||
|
# linked to the previous ovni. We need to be able to exit the chroot
|
||||||
|
# to run Nanos6 tests, as they require access to /sys for hwloc
|
||||||
|
ovni-rt = (last.ovni.override {
|
||||||
|
stdenv = last.ompss2.stdenv;
|
||||||
|
}).overrideAttrs (old: {
|
||||||
|
__noChroot = true;
|
||||||
|
buildInputs = old.buildInputs ++ [
|
||||||
|
pkgs.gdb
|
||||||
|
last.nosv
|
||||||
|
pkgs.strace
|
||||||
|
];
|
||||||
|
cmakeFlags = old.cmakeFlags ++ [ "-DENABLE_TEST_RT=ON" ];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
in
|
||||||
|
bsc.ovni-rt
|
Loading…
Reference in New Issue
Block a user