Compare commits

...

3 Commits

Author SHA1 Message Date
1cf55785f2 Add README.md 2026-02-04 12:00:19 +01:00
7e55e255f9 Add OmpSs-2 simple example 2026-02-04 11:54:30 +01:00
150bdae46e Move personal shells to a custom directory 2026-02-04 10:25:22 +01:00
16 changed files with 178 additions and 0 deletions

15
README.md Normal file
View File

@@ -0,0 +1,15 @@
# Nix development shells
This repository collects several examples of development environments to be used
with `nix develop`.
The definition of the environment is located in the `flake.nix` file and the
precise version of the commit is stored in the `flake.lock` file. These two
files provide all the required information to reproduce the environment by any
user.
Make sure they are tracked by git so that you can see what changes you do
in your environment over time.
To enter an environment, go to the directory with the `flake.nix` file and run
`nix develop`.

2
ompss2/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
hello
ovni/

13
ompss2/Makefile Normal file
View File

@@ -0,0 +1,13 @@
CC=clang
CFLAGS=-fompss-2
hello: hello.c
trace: hello
rm -rf ovni/
NOSV_CONFIG_OVERRIDE="instrumentation.version=ovni" NOSV_APPID=1 ./hello
ovniemu ovni/
ls -l ovni/*.prv
clean:
rm -rf hello ovni/

57
ompss2/README.md Normal file
View File

@@ -0,0 +1,57 @@
# OmpSs-2 environment
This example shows how to include the LLVM compiler to build OmpSs-2 programs
with the new NODES and nOS-V runtime. The package `clangOmpss2Nodes` already
sets all the needed variables to locate the right runtime.
Run `nix develop` then `make` to build the `hello` program:
apex% nix develop
apex$ make
clang -fompss-2 hello.c -o hello
apex$ ./hello
hello from task 1
hello from task 0
hello from task 2
hello from task 3
hello from task 4
hello from task 7
hello from task 8
hello from task 6
hello from task 9
hello from task 5
You can use `make trace` to run the hello program with instrumentation and
generate an ovni trace that is then converted to paraver:
apex$ make trace
rm -rf ovni/
NOSV_CONFIG_OVERRIDE="instrumentation.version=ovni" NOSV_APPID=1 ./hello
hello from task 1
hello from task 0
hello from task 3
hello from task 4
hello from task 5
hello from task 6
hello from task 2
hello from task 8
hello from task 7
hello from task 9
ovniemu ovni/
ovniemu: INFO: loaded 58 streams
ovniemu: INFO: sorting looms by name
ovniemu: INFO: loaded 1 looms, 1 processes, 58 threads and 56 cpus
ovniemu: INFO: generated with libovni version 1.13.0 commit 0643266
ovniemu: INFO: the following 2 models are enabled:
ovniemu: INFO: ovni 1.1.0 'O' (18 events)
ovniemu: INFO: nosv 2.6.0 'V' (64 events)
ovniemu: INFO: emulation starts
ovniemu: INFO: apex.nosv-u1880-p598308 burst stats: median/avg/max = 77/ 81/333 ns
ovniemu: WARN: ignoring old event OCn
ovniemu: INFO: 100.0% done at avg 42 kev/s
ovniemu: INFO: processed 711 input events in 0.02 s
ovniemu: INFO: writing traces to disk, please wait
ovniemu: INFO: emulation finished ok
ls -l ovni/*.prv
-rw-r--r-- 1 rarias Computational 48224 Feb 4 11:52 ovni/cpu.prv
-rw-r--r-- 1 rarias Computational 33689 Feb 4 11:52 ovni/thread.prv

45
ompss2/flake.lock generated Normal file
View File

@@ -0,0 +1,45 @@
{
"nodes": {
"jungle": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1770128250,
"narHash": "sha256-Kx3EwImhYCp4bLPNWGz4oL4IYVjkCLXwcVmXTY40MBc=",
"ref": "refs/heads/master",
"rev": "7a6e4232de0e181de97e099e600ffc3a964260e0",
"revCount": 1536,
"type": "git",
"url": "https://jungle.bsc.es/git/rarias/jungle"
},
"original": {
"type": "git",
"url": "https://jungle.bsc.es/git/rarias/jungle"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1767634882,
"narHash": "sha256-2GffSfQxe3sedHzK+sTKlYo/NTIAGzbFCIsNMUPAAnk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3c9db02515ef1d9b6b709fc60ba9a540957f661c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"jungle": "jungle"
}
}
},
"root": "root",
"version": 7
}

36
ompss2/flake.nix Normal file
View File

@@ -0,0 +1,36 @@
{
inputs.jungle.url = "git+https://jungle.bsc.es/git/rarias/jungle";
outputs = { self, jungle }:
let
nixpkgs = jungle.inputs.nixpkgs;
customOverlay = (final: prev: {
# Example overlay, for now empty
});
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [
# Apply jungle overlay to get our BSC custom packages
jungle.outputs.bscOverlay
# And on top apply our local changes to customize for cluster
customOverlay
];
};
in {
devShells.x86_64-linux.default = pkgs.mkShell {
pname = "ompss2-devshell";
# Include these packages in the shell
packages = with pkgs; [
clangOmpss2Nodes
nodes
nosv
ovni
# Optional: Add wxparaver to open .prv traces (needs a working $DISPLAY)
# wxparaver
];
# The dependencies needed to build these packages will be also included
inputsFrom = with pkgs; [
];
};
};
}

10
ompss2/hello.c Normal file
View File

@@ -0,0 +1,10 @@
#include <stdio.h>
int main()
{
for (int i = 0; i < 10; i++) {
#pragma oss task
printf("hello from task %d\n", i);
}
return 0;
}