Compare commits

...

1021 Commits

Author SHA1 Message Date
29c87a4bb9
weasel: use tent cache 2025-10-07 17:05:30 +02:00
41cf521e32
Add nixfmt-rfc-style to common packages 2025-10-07 17:05:30 +02:00
a6bbad68bd
Add packages to user abonerib 2025-10-07 17:05:30 +02:00
6bc11a421d
Add nix-output-monitor to default packages 2025-10-07 17:05:30 +02:00
5abf511f17
Set fish shell for user abonerib 2025-10-07 17:05:29 +02:00
2e341f7681
weasel: create user folders in /var/lib/podman-users
/home is a nfs mount, which does not support extra filesystem arguments
needed to run podman. We need to have a local home.
2025-10-07 17:05:29 +02:00
f0132ce2e0
weasel: add podman 2025-10-07 17:05:29 +02:00
510d9046ce
Enable custom sys-devices system feature 2025-10-07 17:05:29 +02:00
44cc60fcd8 Update license year range to 2025
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-10-07 16:07:32 +02:00
ca48ce556c Update gitlab CI after merge
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-10-07 16:07:30 +02:00
e8ac9dfb64 Upgrade README after bscpkgs merge
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-10-07 16:07:28 +02:00
188ba6df0a Remove bscpkgs input
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-10-07 16:07:26 +02:00
b1a37ae1fe Enable unfree packages in nixpkgs config
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-10-07 16:07:24 +02:00
63822bb054 Move the rest of packages to main overlay
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-10-07 16:07:23 +02:00
b94a1493d5 Merge flake.nix with bscpkgs
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-10-07 16:07:21 +02:00
826d6a28ef Move slurm to pkgs/
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-10-07 16:07:19 +02:00
ae6b0ae161 Move MPICH to pkgs/mpich and set as default
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-10-07 16:07:01 +02:00
01986c376b Merge remote-tracking branch 'bscpkgs/master' into merge-bscpkgs 2025-10-03 13:47:04 +02:00
92ee4a09d7 Rename test to tests and tests to testList
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:53:09 +02:00
34f4b6aa37 Move bsc-ci test into let
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:33 +02:00
2f2d6cbea8 Rework bsc-ci
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:31 +02:00
69b09b6dda Add riscv64 cross compilation to bsc-ci and hydra
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:29 +02:00
a737d725ed Put helper attrs of ompss2 drv to passthru
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:28 +02:00
6c1d1f3b2b Remove gcc from tampi *buildInputs
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:26 +02:00
f338ef47d5 Fix strictDeps ovni
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:25 +02:00
239e84c40c Fix strictDeps osu
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:23 +02:00
ed820e79f8 Fix strictDeps mercurium
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:22 +02:00
afeb415c98 Fix strictDeps tampi
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:20 +02:00
256b24b97b Fix strictDeps sonar
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:18 +02:00
492f73b600 Fix strictDeps nanos6
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:17 +02:00
76ddd85afe Fix strictDeps paraver
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:15 +02:00
7affb8ef4b Fix strictDeps ompss2
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:13 +02:00
4ba823e5b7 Fix strictDeps intel 2023
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:11 +02:00
51eecde59e Fix strictDeps bench6
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:45:08 +02:00
9eb5c486ba Fix strictDeps bigotes
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 15:43:58 +02:00
5df49dcfab Add gitea CI configuration
Builds the .#bsc-ci.all target on each PR. Causes all packages to be
built in hut, populating the nix cache.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-10-01 14:59:25 +02:00
2ffdd53d86 Add hydraJobs with tests and packages
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-09-26 16:12:46 +02:00
c7b5ec13b8 Provide nixpkgs.lib in bscpkgs outputs
Currently, we can use bscpkgs similarly to nixpkgs either through
the flake outputs or with import bscpkgs:

```nix
# currently supported:
bscpkgs.legacyPackages.x86_64-linux.hello
let pkgs = import bscpkgs { system = "x86_64-linux"; }; in pkgs.hello
```
The missing piece is nixpkgs.lib (not pkgs.lib, the system agnostic
one). The workaround is to do bscpkgs.inputs.nixpkgs.lib instead. We can
simplify this by forwarding the lib to our outputs.

This enables us to use bscpkgs as a drop-in
replacing the inputs to our flake from nixpkgs to bscpkgs.
(inputs.nixpkgs.url = "<*BSC*pkgs url>").


Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Aleix Boné <abonerib@bsc.es>
2025-09-12 14:28:42 +02:00
00dfe801f4 Fix GPI-2 and enable TAGASPI
The rdma-core driver.h include is no longer installed:

 56dd87acd2

So ibv_read_sysfs_file() is not defined. As the symbols is still
distributed, we simply add the missing prototype manually.

Similarly, the gaspi_get_system_mem() function is not available from the
gaspi public headers, so we define it in the max_mem.c test.

Fixes: rarias/bscpkgs#7
Reviewed-by: Aleix Boné <abonerib@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-09-12 14:21:00 +02:00
2c8d7ed855 Build nOS-V with PAPI support
To support the new instrumentation for HWC it would be useful to already
build nOS-V with PAPI support enabled. The enablePapi switch allows it
to be disabled with `nosv.override { enablePapi = false; }`.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-08-01 13:12:48 +02:00
1666c14a35 Remove dependency on wx from paraver kernel
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-07-22 13:00:23 +02:00
b29f03ba6e Fix boost >=1.87 in wxparaver
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-07-22 12:59:53 +02:00
ae2ef1d2df Add patch to paraver to prevent focus stealing
See: https://github.com/bsc-performance-tools/wxparaver/issues/18
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-07-22 12:59:39 +02:00
9a48ae45bb Update paraver to 4.12.0
Adds a new patch to fix libxml2: the m4 AM_PATH_XML2 macro has been
deprecated and is no longer included in the latest nixpkgs unstable.
Upstream recommends using `PKG_CHECK_MODULES` instead.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-07-22 12:57:33 +02:00
974bb56dc3 Fix lmbench build issues with GCC 14
Reviewed-by: Aleix Boné <abonerib@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-07-21 18:01:36 +02:00
88d4d8e317 Drop tagaspi from bench6
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 18:01:20 +02:00
885e04e446 Remove unused inputs from intel compiler 2023
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 18:00:39 +02:00
26f52aa27d Use gcc 13 for intel compiler 2023
Intel compiler for C++ (icpc) is not able to parse the location of C++
headers from the output of gcc 14, but works fine for gcc 13.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
52fe43bfe1 Fix PATH in intel compiler wrapper
We need to add the gcc in the PATH, but adding it directly to $PATH
doesn't work, as it will be restored to $path_backup before icc runs. So
for now we simply inject it to path_backup, but ideally we should find a
more robust solution.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
f0637b4569 Drop GPI-2 and TAGASPI
GPI-2 fails to build, which is needed for TAGASPI.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
6ddfea0a3a Use boost 1.86 for paraver
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-07-21 17:23:30 +02:00
e7adef1ffa Fix intel-compiler by ignoring broken symlinks
In the future, we may want to look if those symlinks are needed.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
e82d3c3b9f Upgrade OmpSs-2 LLVM to 2025.06
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
4442b6a706 Update TAMPI to 4.1
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
2d0b014dc7 Update Nanos6 to 4.3
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
867ba3ec5a Update nOS-V to 3.2.0
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
2cacc2b265 Update ovni to 1.12.0
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
e4abd8d8f6 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'path:/nix/store/2csx2kkb2hxyxhhmg2xs9jfyypikwwk6-source?lastModified=1736867362&narHash=sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8%3D&rev=9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc' (2025-01-14)
  → 'path:/nix/store/zk8v61cpk1wprp9ld5ayc1g5fq4pdkwv-source?lastModified=1752436162&narHash=sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw%3D&rev=dfcd5b901dbab46c9c6e80b265648481aafb01f8' (2025-07-13)

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-07-21 17:23:30 +02:00
a87b99d0a4 Update bench6 package to bf29a531
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-06-16 15:34:35 +02:00
43d32ac16d Use nixpkgs from flake.lock and support attrs when importing bscpkgs
This makes `nix-build` and friends use the current flake lock instead of
the outdated pinned version we had in `./nixpkgs.nix`

With this, `nix-build -A ovni` and `nix build .#ovni` should produce the
same result.

This will fail if the flake nixpkgs input does not come from NixOS/nixpkgs.
We could use edolstra/flake-compat instead, but it's overkill imho.

Additionally, I made default.nix behave like nixpkgs, so that we can
import bscpkgs à la nixpkgs (Apply overlays and other options that nixpkgs
accepts):

```nix
let pkgs = import bscpkgs { inherit system; }; in <...>
```

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-06-16 12:29:55 +02:00
9d1944c658 Upgrade and fix lmbench package
Now it needs libtirpc to provide rpc/rpc.h, as it seems it is gone from
libc. We also fix the install target so it installs the additional
benchmarks.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
Tested-by: Aleix Boné <abonerib@bsc.es>
2025-06-11 16:01:40 +02:00
8e5b2dc5cc Fix C runtime objects path in OmpSs-2 LLVM
Some gcc versions append an extension to the patch version number, but
this extension is not part of the installation path. This patch removes
the extension to the patch version.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-06-02 08:58:19 +02:00
f89cd4d7e2 Remove dangling libomp.so symlink
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-06-02 08:57:23 +02:00
f962816eab Update PM gitlab URL to new server bscpm04.bsc.es
The old server has died, so we move to the new URL at bscpm04.bsc.es.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-03-07 15:21:11 +01:00
c4583f787d Fix Nanos6 build from git
The src.rev attribute is not available as it comes from source before
the recursive operator. Instead, simply get it from the function inputs.

Cc: Aleix Boné <aleix.boneribo@bsc.es>
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2025-02-28 13:36:00 +01:00
22e40db034 Add explicit zlib dependency
The stdenv no longer provides it by default.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2025-01-22 16:05:52 +01:00
501f11a8e5 Merge outputs of MPI in a single directory
Some MPI implementations now have their headers in the dev output as
well as the mpicc wrappers.

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-01-22 16:03:08 +01:00
505f101e00 Update wxGTK30 to wxGTK32 in paraver kernel
Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-01-22 16:03:06 +01:00
f44eebc133 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'path:/nix/store/z7y28qzhk7driiwcw78k0mb24laknm0f-source?lastModified=1700390070&narHash=sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0%3D&rev=e4ad989506ec7d71f7302cc3067abd82730a4beb' (2023-11-19)
  → 'path:/nix/store/2csx2kkb2hxyxhhmg2xs9jfyypikwwk6-source?lastModified=1736867362&narHash=sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8%3D&rev=9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc' (2025-01-14)

Reviewed-by: Aleix Boné <abonerib@bsc.es>
2025-01-22 16:02:49 +01:00
6782fc6c5b Add cacheline parameter to nOS-V
By default it is set to 64 bits. The cacheline parameter is required
when cross-compiling nOS-V, as it cannot be read from the build machine.

Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-11-29 09:16:03 +01:00
73550ad5a9 Remove unneeded NODES dependencies
The autoreconfHook helper already provides autotools binaries. Also NODES
no longer uses papi.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-11-29 09:16:03 +01:00
48d67ef6c2 Fix NODES native dependencies
Move NODES build tools to nativeBuildInputs. This is needed for
cross-compilation, given that build tools must much the build system.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-11-29 09:16:03 +01:00
Raúl Peñacoba
73e30d20e9 Python is needed in openmp now
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-11-29 09:09:27 +01:00
5f85082553 Update sonar to 1.0.1
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2024-11-27 16:10:55 +01:00
46f15ac201 Update LLVM to 2024.11
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2024-11-27 16:10:52 +01:00
b442ddf1a4 Update Nanos6 to 4.2
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2024-11-27 16:10:50 +01:00
b006538147 Update TAMPI to 4.0
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2024-11-27 16:09:15 +01:00
995aa0b2e2 Update NODES to 1.3
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2024-11-27 16:09:12 +01:00
896ec0ad0f Update nOS-V to 3.1.0
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2024-11-27 16:09:09 +01:00
2d9d2701a9 Update ovni to 1.11.0
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2024-11-27 16:08:50 +01:00
74e11db8b6 Only enable MPI in ovni on native builds
Tested with:

hut% nix build .#bsc-ci.all
hut% nix build .#pkgsCross.riscv64.ovni

Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Reviewed-by: Aleix Boné <aleix.boneribo@bsc.es>
2024-10-28 13:42:19 +01:00
e046363e52 nos-v: fix cross compilation
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-10-28 13:40:35 +01:00
aa3f816388 ovni: fix cross compilation
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-10-28 13:40:33 +01:00
3eff2662bb paraver: install manpages
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-10-28 13:39:52 +01:00
de89197a4a Add bigotes package
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-04-24 17:59:24 +02:00
5d3820631a Fix Nanos6 4.0 build
It looks like after upgrading the compiler the build breaks. The patch
simply adds the missing cstdint include, until a new release is made.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-04-23 12:03:49 +02:00
9c8a077828 Enable separatedebuginfo for openmp
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-04-12 12:27:54 +02:00
fce556cb28 Build OmpSs-2 LLVM with commit version information
Allows users to see which commit (or git tag) was used in clang.
Examples for the release and git versions:

% clang --version
clang version 18.0.0 (18.0.0-ompss-2)

% clang --version
clang version 18.0.0 (0a6d6c6)

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-03-14 14:13:14 +01:00
37ce5ef391 Paraver: Use wrapGApps Hook for nixos
Needed to fix the error on NixOS:

  GLib-GIO-ERROR **: No GSettings schemas are installed on the system

See https://github.com/NixOS/nixpkgs/issues/16285

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-02-15 16:06:29 +01:00
Raúl Peñacoba
3b21a32d83 Add ovni to OpenMP-V
Allows building OpenMP-V with ovni support, which is neccessary to run
the runtime tests of OpenMP-V in ovni.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-01-15 10:20:46 +01:00
c4d5135fde Split openmp versions in separate derivations
The openmp derivation provides both libomp and libompv. To avoid
accidentally linking with the wrong library and to avoid the nosv
dependency on libomp, this patch separates each version in a different
derivation.

Also, it adapts the clang wrappers and stdenvs to provide an stdenv per
openmp library where each openmp will be used by default when the
compiler flag "-fopenmp" is used. This eases linking ompv with nixpkgs
libraries, such as blis, that expect openmp to be provided with stdenv.

Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-12-07 18:01:20 +01:00
3f2b9a766b Update clang with internal bug release
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-12-07 18:01:08 +01:00
Raúl Peñacoba
3ed644b88f Add clangNosvOpenmp-ld compiler test
Add a test to verify that "clang -fopenmp=libompv" links correctly with
nOS-V even though it is not placed in the buildInputs.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-12-01 16:35:24 +01:00
Raúl Peñacoba
8ceaddfea7 Split OpenMP from Clang in LLVM
As the OpenMP-V implementation requires to be built with nOS-V, we can
split the OpenMP package in a different derivation to prevent rebuilds
of clang. Additionally, as OpenMP-V now can be build alongside the
vanilla OpenMP runtime, we simply build a single openmp derivation with
both runtimes. Only a single build of the clang compiler is now
required.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
Reviewed-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-12-01 16:31:56 +01:00
2a953d811c Build TAMPI with ovni support
By default we build TAMPI with ovni support, as it will be disabled in
runtime unless explicitly enabled by the TAMPI_INSTRUMENT=ovni
environment variable.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-29 17:49:30 +01:00
fec4ddf6ab Merge TAMPI release and git in the same file
In order to reduce duplicate information we just place the two sources
in the same file.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-29 17:49:22 +01:00
9aaea0da0e Update paraver: 4.10.6 -> 4.11.2
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-29 12:19:27 +01:00
f55b48ec86 Update ompv test with -fopenmp=libompv flag
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:48:09 +01:00
1e52075c18 TAGASPI 2023.11 update and move to public repo
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:47:52 +01:00
062b1c3c77 Mercurium 2023.11 update
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:47:42 +01:00
1520eaa64e TAMPI 2023.11 update
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:47:38 +01:00
54b4448e4b Ovni 2023.11 update
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:47:27 +01:00
28a7496fbd nOS-V 2023.11 update
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:47:22 +01:00
b5dae25e7f NODES 2023.11 update
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:47:18 +01:00
bdc3670ccc Nanos6 2023.11 update
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:47:09 +01:00
af590d5ace Clang 2023.11 update
Clang nos-v-merge branch has been merged into master.

Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:47:02 +01:00
8a31895e48 Update nixpkgs commit in default.nix
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-24 16:46:54 +01:00
d9ae85ce4b Add a more strict test for OpenMP+nOS-V
In this test we ensure that the worksharing region is running inside a
nOS-V task, so we know that we are not using the vanilla OpenMP by
accident.

We also keep the previous test test/compilers/clang-openmp.nix as-is, so
we can check that the compiler injects the nosv library dependency in
the final binary on its own.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-24 14:52:23 +01:00
20ded0c0df Change the GPI-2 URL to a public repository
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-24 14:49:03 +01:00
e148de50d6 Remove Paraver fast
The build is broken and the official Paraver already merged support
for fast trace loading.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-22 15:38:35 +01:00
ff34ab5732 Enable NIX_DEBUG = 1 in the clang-ompss2 test
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-22 15:38:31 +01:00
3f17a489ef Fix clang build adding rpath to libstdc++
The binaries generated during the build process of clang are missing the
RPATH of the libstdc++.so library, which is provided by gcc libs.
Similarly, the clang binary itself also needs the rpath to the
libstdc++.so library path.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-22 15:38:28 +01:00
501a92376b Fix GPI-2 using an unified rdma-core
The libraries and includes are no longer in the default output, so we
merge them in a single directory using symlinkJoin.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-22 15:38:17 +01:00
4033854014 Disable nix-wrap as it is broken
The pkgsStatic.libcap dependency fails to build.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-22 15:38:13 +01:00
e6b4af4b16 Rename pkgconfig to pkg-config
The alias pkgconfig has been removed.

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-22 15:38:05 +01:00
cbf6f03a84 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'path:/nix/store/s4jqyj35hii03rs7j5n6vn7gpgp6ja81-source?lastModified=1692447944&narHash=sha256-fkJGNjEmTPvqBs215EQU4r9ivecV5Qge5cF/QDLVn3U%3D&rev=d680ded26da5cf104dd2735a51e88d2d8f487b4d' (2023-08-19)
  → 'path:/nix/store/z7y28qzhk7driiwcw78k0mb24laknm0f-source?lastModified=1700390070&narHash=sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0%3D&rev=e4ad989506ec7d71f7302cc3067abd82730a4beb' (2023-11-19)

Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-11-22 15:37:46 +01:00
4316e7b12d Enable separatedebuginfo for common BSC packages
For now, we keep dontStrip for packages that already had it for systems
without the separatedebuginfo support.

Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-20 16:36:34 +01:00
e7bdc1595a Fix openmp.nix being called with callPackage
callPackage was overriding the inner callPackage override, which made
overriding the clang derivation through the override function impossible.

Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-15 16:22:53 +01:00
f0f6b7c354 Enable dontStrip on clang if enableDebug is set
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-15 16:22:13 +01:00
0086b9452a Fix llvm postInstall
Some llvm versions do not generate the intel and gomp support libraries
and the post install script fails because it cannot remove them. This
patch makes removal optional.

Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-15 16:21:47 +01:00
4111b22f57 Fix clang link flag typo
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-14 17:09:23 +01:00
Raúl Peñacoba
85c70a8d6b Always enable assertions in OmpSs-2 LLVM
There are important assertions for OmpSs-2 to catch early bugs. Building
without asserts enabled causes warnings due to unused variables.

Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-11-09 16:57:37 +01:00
f605f8e5e4 Add clang openmp test for CI
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Tested-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-10-31 16:52:55 +01:00
8d5714c67b Move nixpkgs reference to its own expression
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-10-31 16:52:55 +01:00
4727c98354 Remove jemalloc dep from NODES
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-10-31 16:52:55 +01:00
bb1de835f7 Add clang with nosv-powered OpenMP
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-10-31 16:52:55 +01:00
ebeb2ff549 Set NOSV_HOME for clang wrapped with nodes
This is needed since nosv must appear as a 1rst level dependency on the
final executable. Clang will add the dependency as long as it knows
where to find nosv (and nodes is used).

Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-10-31 16:52:55 +01:00
9f245946d7 Build NODES with clang dependency if tests enabled
Reviewed-By: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2023-10-31 16:52:55 +01:00
51e331a9d9 Update sonar to 0.2.0 and use GitHub
Reviewed-By: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
2023-10-25 16:06:25 +02:00
91cdc91738 Fetch sonar tag from refs/tags 2023-10-06 14:52:12 +02:00
db391ee9c2 Enable verbose output in nix build for CI 2023-10-06 14:39:47 +02:00
bab7a45587 Fix commit for GPI-2 and tagaspi 2023-10-06 14:34:03 +02:00
8731a4797d Enable packages served by PM gitlab 2023-10-06 14:24:57 +02:00
9e889884c9 Don't build ovni in verbose mode 2023-10-05 08:01:43 +02:00
5412e14dba Patch shebangs in ovni runners 2023-10-04 13:44:03 +02:00
41a93cd176 Enable verbose build and tests for ovni 2023-10-04 13:40:02 +02:00
873d2f1abc Enable tests in ovni 2023-10-04 13:31:55 +02:00
867e61acde Remove --rebuild flag 2023-10-04 12:45:51 +02:00
7ace376e4e Also define no RT clang stdenv 2023-10-04 12:43:47 +02:00
ce4b196010 Remove CONTRIBUTING file 2023-10-03 12:26:26 +02:00
f9c832654e Remove NOISE file 2023-10-03 12:25:45 +02:00
4533c94b4f Remove garlic from bscpkgs 2023-10-03 12:24:58 +02:00
7b72b38023 Remove garlic from README 2023-10-03 12:23:01 +02:00
779247691f Add metadata for Nanos6 2023-10-03 10:00:34 +02:00
c724ad2ad3 Remove old CI derivation 2023-10-02 11:17:01 +02:00
2a3b269b9c Mark packages affected by PM GitLab 2023-10-02 11:05:55 +02:00
7f3d3b953d Always rebuild CI target 2023-10-02 10:57:53 +02:00
0184f5e382 Print list of CI paths when building 2023-10-02 10:57:53 +02:00
916e4f49a6 Move packages from bsc/ to pkgs/ 2023-10-02 10:57:53 +02:00
8fe7458969 Remove deprecated pkgs and improve CI 2023-10-02 10:57:53 +02:00
be25283da5 Update mcxx to 2023.05 2023-10-02 10:57:53 +02:00
1864c08c95 Disable packages from PM GitLab while is down 2023-10-02 10:57:53 +02:00
bead8aea0a Run the tests from the jungle flake 2023-09-28 11:28:00 +02:00
dd802e2ec9 Use flakes for the CI build command 2023-09-28 09:16:04 +02:00
8dbd1a3c34 Port clang and intel packages and enable tests 2023-09-28 09:15:34 +02:00
ce7238c780 Remove tracing output from intel packages 2023-09-28 09:15:09 +02:00
552ebdbede Export the runtime home for clang if given 2023-09-28 09:14:36 +02:00
51dcc6896e Begin moving bsc packages to root attribute 2023-09-19 10:33:32 +02:00
fd766d8ff8 Don't build nanos6 with debug symbols by default 2023-09-15 19:05:55 +02:00
3a4062ac04 Revert "Remove flake-lock file"
This reverts commit a3e1047f515e90292eadbe9dbc5f3aa00ba87730.
2023-09-14 18:21:50 +02:00
a3e1047f51 Remove flake-lock file 2023-09-14 17:54:32 +02:00
6122fef927 Don't replace the shebang in nix-wrap 2023-09-07 09:07:25 +00:00
Raúl Peñacoba
8597bb97ab Add nix-wrap, which enables isolated environment in clusters 2023-09-07 09:07:25 +00:00
7d4c9a57c6 Update ovni to 1.3.0 2023-09-07 10:54:15 +02:00
3efc10e57d Use version tag for sonar 2023-09-07 10:50:15 +02:00
065ab83083 Use release for bench6 dependencies 2023-09-07 09:13:12 +02:00
4883b750bd Fix bench6 commit 2023-09-07 09:08:36 +02:00
ee5cbd08dd Update sonar commit 2023-09-06 17:57:18 +02:00
61bd7ee947 Fix ovni gitUrl input parameter 2023-09-06 16:20:59 +02:00
abfd8484ee Add sonar library 2023-09-06 15:33:55 +02:00
a63f578c99 Update clangOmpss2 to 2023.05.1 2023-09-06 15:12:51 +02:00
01e07d559c Link clang with the dynamic llvm library
It dramatically reduces the size of the installation to 250 MiB. We also
need to inject the rpath of the libraries during the build phase with
CMAKE_BUILD_RPATH as well as zlib. The CMAKE_BUILD_WITH_INSTALL_PATH
option is disabled, as it contradicts the former.
2023-09-06 14:14:40 +02:00
4b06175b42 Only build clangOmpss2 to target the host 2023-09-05 17:55:38 +02:00
ee24b910a1 Use clang++ for C++ tests 2023-09-01 16:51:32 +02:00
4b1d4c18af Set the host triple in clang
Fixes the problem where the triple used by newer versions of
config.guess don't match due to a change in x86 from
x86_64-unknown-linux-gnu to x86_64-pc-linux-gnu.
2023-09-01 16:50:44 +02:00
fd5fb5c055 Add asan test for clangOmpss2 2023-09-01 16:43:49 +02:00
18d64c352c Add pkg-config dependency for paraverKernel 2023-08-31 12:56:35 +02:00
124cb6a4c3 Update nixpkgs in default.nix too 2023-08-31 12:43:07 +02:00
bcf2df64c8 Add initial flake.lock 2023-08-31 12:41:15 +02:00
c30851d6e9 Add packages to flake.nix 2023-08-31 12:40:54 +02:00
b4a20d7c3a Update NODES to 1.0.1 2023-07-28 18:00:45 +02:00
976cdd5a4d Update ovni to 1.2.2 2023-07-26 16:00:02 +02:00
f015e5f71c Use builtin.fetchurl to see the progress 2023-07-17 10:52:28 +02:00
534c5dd261 Cache intel oneAPI package list 2023-07-17 10:52:03 +02:00
caf0e9545a Fix gitUrl input name 2023-07-14 16:44:24 +02:00
f2f024b82d Add zlib to the rpath
Instead of using LD_LIBRARY_PATH we provide the rpath from cmake, as
otherwise the clang compiler is also missing the dependency.
2023-06-28 11:18:35 +02:00
932d273ec7 Build OmpSs-2 llvm with zlib
The zlib is required by the lld linker to work with zlib compressed
sections in the ELF header. We also set the LD_LIBRARY_PATH during the
build, as otherwise the llvm-tblgen binary is unable to find the zlib
library, as its missing the directory in the rpath.
2023-06-28 10:45:03 +02:00
cbe9af5d04 Update TAMPI to 2.0 2023-06-16 17:05:36 +02:00
b2283efd46 Install the Intel MPI libmpi.so into lib/ 2023-06-16 17:05:09 +02:00
7f18deaf69 Update nixpkgs to d6b863fd to match nixos 2023-06-16 16:36:16 +02:00
b953fd4b2f Update osu benchmarks to 7.1-1 2023-06-16 16:27:47 +02:00
080811fe9d Add missing lib in osu benchmarks 2023-06-16 15:50:39 +02:00
e7647f1d99 Add pmix 4 2023-06-16 15:33:39 +02:00
aad2c276aa Update intel mpi to 2021.9 2023-06-16 15:32:49 +02:00
ce5577f14e Export intel-mpi from oneapi 2023-06-16 15:32:17 +02:00
e23392fccd Set install dir variable for Intel MPI 2023-06-16 15:31:58 +02:00
f5dcaf831b Update ovni to release and add useGit option 2023-05-30 16:44:39 +02:00
feb39f404a Remove git attributes from derivation in nosv 2023-05-30 16:23:39 +02:00
11e897c10a Always build nodes with ovni 2023-05-30 16:14:04 +02:00
1da216bab5 Add nodes release and git version 2023-05-30 15:31:56 +02:00
d8c19eb4b4 Add nos-v release by default 2023-05-30 15:31:12 +02:00
0e176cb2a9 Update OmpSs-2 clang to 2023.05 2023-05-30 14:52:42 +02:00
3a249c5d88 Update nanos6 and merge release with git 2023-05-30 14:51:36 +02:00
df32aa62d0 Update nanos6 to last release 2023-05-30 09:41:17 +02:00
933cd1e3c7 Show commands being executed in clang test 2023-05-22 19:30:40 +02:00
5553ee79a9 Populate OMPSS2_RUNTIME in clang 2023-05-22 19:30:15 +02:00
bb6129a77e Reduce ompss2 test verbosity 2023-05-22 13:55:23 +02:00
b8f7c16d1c Use clang from git for NODES 2023-05-22 13:54:41 +02:00
3f4f3e1105 Export proper OmpSs-2 runtime home variable 2023-05-22 13:54:29 +02:00
a34e619333 Update Intel oneAPI 2023-05-19 18:52:32 +02:00
46a3465e78 Build clang with a new LLVM
Older LLVM 11 version produces a broken compiler, see:
https://pm.bsc.es/gitlab/llvm-ompss/llvm-mono/-/issues/183
2023-05-19 18:34:11 +02:00
1d788aeff2 Update bench6 to use cmake 2023-05-19 18:33:37 +02:00
9a500dd3d6 Update Nanos6 git with ./autogen.sh 2023-05-19 18:32:35 +02:00
0605bc4ceb Add bench6 new dependencies 2023-05-18 20:40:29 +02:00
c775ee4d6f Add flakes support 2023-04-26 17:07:08 +02:00
ef2631b699 Build paraver with wxGTK32 2023-04-11 20:34:11 +02:00
9d2de00b0c Update Intel OneAPI package list 2023-04-11 20:33:50 +02:00
2627552a0f Use python 3 2023-04-11 20:33:35 +02:00
03c7256767 Disable extrae as is broken 2023-04-11 20:32:49 +02:00
a46a2ee794 Update nixpkgs commit to match xeon07 2023-04-11 20:31:54 +02:00
94fa0de4fc Add slurm 16.05.8.1 and hwloc 1.11.6 2023-04-02 21:39:30 +02:00
054d70d23b Add bench6 package 2023-03-14 14:58:42 +01:00
91a5bdb344 Add comment about __noChroot in OmpSs-2 test 2023-03-14 10:32:59 +01:00
f148a71c6c Print buildInputs in CI test derivation 2023-03-13 16:17:02 +01:00
243ed2331a Add new package NODES 2023-03-13 16:16:34 +01:00
9fae434553 Enable -fPIC in Nanos6 loader 2023-03-13 16:08:38 +01:00
898534ee52 bsc: add nosv package 2023-03-13 14:58:59 +01:00
bf28263cc5 Add OmpSs-2 test with tasks 2023-03-13 14:54:40 +01:00
84623ea9d0 Use lld linker for clangOmpss2 for LTO 2023-03-06 11:47:01 +01:00
5753f0c312 Remove old files 2023-03-03 18:28:44 +01:00
b57a17dd52 Remove alya 2023-03-03 18:25:06 +01:00
115e9beb59 Add Intel oneAPI 2023 with compilation tests 2023-03-03 18:18:51 +01:00
fd84af45f0 Add Intel OneAPI 2022 2023-03-02 19:03:58 +01:00
833d58a875 intel: add libstdc++ as dependency for patchelf 2023-03-02 18:46:52 +01:00
Raúl Peñacoba
5789b4a77a icc2021: added stdc++ includes 2023-03-02 18:46:52 +01:00
ef5e98e06d icc2021: fix wrapper names and ldflags 2023-03-02 18:46:52 +01:00
a6549c1908 intel: add intel compiler 2021.2.0 2023-03-02 18:46:52 +01:00
180fa4c992 intel: remove unused nanos6 dependency 2023-03-02 18:46:52 +01:00
4cfad119ce Update OmpSs-2 clang to 2022.11 2023-03-02 18:41:02 +01:00
a2e02bb136 Update mcxx to 2022.11 2023-03-02 18:40:57 +01:00
246aa8e7d1 Update Nanos6 to 2.8 2023-03-02 18:10:06 +01:00
f28817c3bf Build wxparaver and paraver-kernel from github 2023-03-02 17:58:53 +01:00
bff0395872 Update mpich to follow upstream 2023-03-02 13:08:01 +01:00
d18a95f8ed Update paraver to 4.10.6
Dropping wxpropgrid. Now it needs to link with openssl.
2023-03-02 12:47:25 +01:00
1a99a7eb73 Add more packages to CI 2023-03-02 12:08:02 +01:00
4b5a948918 Add PTR patch to Extrae 2023-03-02 12:03:12 +01:00
7ef24b88e4 Allow insecure packages 2023-03-02 11:46:27 +01:00
c28618b95c Update extrae to 4.0.1 2023-03-02 11:43:35 +01:00
20c5446743 CI build with verbose flag 2023-03-02 11:17:39 +01:00
38220140ec Update nixpkgs to release 22.11 2023-03-02 11:16:54 +01:00
f5987a0094 Add ci derivation 2023-03-02 11:15:25 +01:00
60b2f9f6cc Enable CI builds 2023-03-02 11:14:47 +01:00
b60698b791 pkgs: update nixpkgs to 1614b96a 2023-03-02 10:38:43 +01:00
e57107024e ovni: Update repository URL and unset commit 2022-07-25 14:50:34 +02:00
1ffca6c9e0 bsc: add ovni package 2022-07-25 14:50:18 +02:00
7d5e3f1845 nanos6: don't strip debug symbols 2022-04-05 15:40:08 +01:00
df7c79f34b clangOmpss2: merge both nix files into one
Add clangOmpss2Git to the overlay overriding the src attribute of the
release nix derivation, so we only keep one derivation for both
variants.
2022-04-05 15:40:08 +01:00
a2195aef43 clangOmpss2: use relative path for BINDIR
Absolute paths are not supported and cause a silent error when
installing the clang++ and other symlinks. See:

d93a11c138
58580e922a
2022-04-05 15:40:08 +01:00
6e7a7febd4 clangOmpss2: wrap clang++ too 2022-04-05 15:40:08 +01:00
0b319b8a63 clangOmpss2: 2021.06 -> 2021.11
libelf is now replaced by elfutils
2022-04-05 15:40:08 +01:00
315cf1d0de mcxx: update 2021.06 -> 2021.11 2022-04-05 15:40:08 +01:00
3e3ce35237 nanos6: update 2.6 -> 2.7 2022-04-05 15:40:08 +01:00
2227f08814 gpi-2 and tagaspi: enable parallel build 2022-04-05 15:34:10 +01:00
f74446b225 gpi-2: use last tagaspi tag 2022-04-05 15:33:30 +01:00
a5af7890b8 bsc: add GPI-2 and TAGASPI 2022-04-05 15:25:25 +01:00
Raúl Peñacoba
d2834624c2 paraver: enable OpenMP 2021-11-10 15:25:14 +01:00
35d19c262c garlic: add tool to query experiments 2021-11-03 16:19:49 +01:00
c0362b6639 paraver: add fast version for ordered traces 2021-11-02 16:18:52 +01:00
08aabfa657 icc: renew license until 2026-12-31 2021-07-14 15:29:55 +02:00
762fe8b82c wxpropgrid: disable parallel build
The parallel build fails with high probability due to incorrect
dependencies in the Makefile, which lead to an attemp to link too soon.
2021-07-12 18:38:10 +02:00
53d99d41cf mcxx: use git tag for the 2021.06 release 2021-06-30 19:24:56 +02:00
9eb5c74cd6 mcxx: update 2.2.98 -> 2.2.98+da8945d0 2021-06-30 17:19:39 +02:00
aa083b1b66 clangOmpss2: update 2020.11 -> 2021.06 2021-06-30 16:44:30 +02:00
58fab3b87e tampi: update 1.0.2 -> 1.1 2021-06-30 16:34:39 +02:00
f2c6a3cb15 nanos6: update 2.5.1 -> 2.6 2021-06-30 16:33:51 +02:00
b6d742380b cn6: test slow converter 2021-06-30 15:54:31 +02:00
c083d96b79 cn6: add experiment with nbody 2021-06-28 11:50:53 +02:00
1a9b8470bb cn6: add clock sync experiment 2021-06-22 15:36:49 +02:00
f9581cfb59 cn6: enable extra test utils 2021-06-22 15:36:49 +02:00
3be896d90d mcxx: add mcxx from the git repo 2021-06-02 14:08:16 +02:00
4125e39ce0 nanos6: don't strip symbols 2021-06-02 12:41:47 +02:00
11a521ff51 nanos6: allow the git url and branch to be specified 2021-06-02 11:35:30 +02:00
fb2b3cbe06 sh: add garlic-add-copyright tool 2021-05-11 12:25:15 +02:00
776a6ca1e4 sh: add commit propagator tool 2021-05-10 17:01:54 +02:00
83921d1788 creams: increase granularity with size 2021-05-09 11:37:53 +02:00
b6f563f621 creams: add granularity experiment with 16 nodes 2021-05-09 11:36:43 +02:00
5d6f691045 creams: add size experiment 2021-05-03 15:02:57 +02:00
3892167e7d creams: use python script to generate the input 2021-05-03 15:02:57 +02:00
6937ffcfe9 ds: link the resultTree in the dataset 2021-05-03 12:48:49 +02:00
760787858a bsc: disable hardening in some packages 2021-04-22 12:07:15 +02:00
a4b8f8e94b apps: disable hardening in all garlic apps 2021-04-21 18:23:27 +02:00
df62451fcd sh: add helper script to fix the figure subtitle 2021-04-21 17:58:59 +02:00
a9e1579242 osu: remove gsub hack 2021-04-21 17:54:08 +02:00
d5626851de osu: remove gsub hack and clean bw figure 2021-04-21 17:51:05 +02:00
5de45cb247 rplot: patch generated PDFs to use hyphen
The ISOLatin1 encoding uses /minus as char 45, while the (-) symbol used
in the paths is a /hyphen. This hack allows the paths in the generated
PDFs to be copied directly into a terminal.
2021-04-21 17:42:40 +02:00
92cd88e365 fig: use the $out path in the subtitle
The input dataset is not enough to determine which script produced a
given plot.
2021-04-21 13:40:25 +02:00
5a49611bf6 fwi: add gitTable to params 2021-04-20 18:51:36 +02:00
9fc2a2025c lulesh: add gitTable 2021-04-20 18:42:19 +02:00
2cc0c85635 ifsker: remove preferLocalBuild 2021-04-20 18:20:59 +02:00
c075498f71 ifsker: add gitTable 2021-04-20 18:20:27 +02:00
Kevin Sala
e0197950a6 ifsker: update app 2021-04-20 18:15:56 +02:00
cafc67d107 hpcg: add gitTable 2021-04-20 18:12:17 +02:00
c0a0eeec7f hpccg: fix indentation 2021-04-20 18:09:24 +02:00
fb1d50e9dd hpccg: update app and add gitTable 2021-04-20 18:02:53 +02:00
a359cc9d32 nbody: add gitTable 2021-04-20 17:47:49 +02:00
1402111e40 saiph: add gitTable 2021-04-20 17:36:33 +02:00
9377adf787 fwi: add gitTable 2021-04-20 17:36:33 +02:00
20e99f122f creams: use gitTable for all branches 2021-04-20 17:36:33 +02:00
53c098d921 heat: split the git table and use fetchGarlicApp 2021-04-20 17:36:33 +02:00
d2222f6868 sh: Format the git table in a single attribute set 2021-04-20 17:36:33 +02:00
dbdcfea019 tools: add fetchGarlicApp helper
Allows easy migration of the git server for all the apps and
reduces the boiler plate in the derivations.
2021-04-20 17:36:33 +02:00
375a79d27a heat: pin commits using gitTable 2021-04-20 17:36:33 +02:00
2aa099f0e2 sh: add script to build the gitTable 2021-04-20 17:36:33 +02:00
600e1b9987 tools: add helper function to find the git commit 2021-04-20 17:36:33 +02:00
a4752603e9 cn6: pin commit 2021-04-20 17:34:53 +02:00
5b4bb30e55 nbody: update and simplify figures 2021-04-20 17:16:17 +02:00
e1433fedb8 nbody: refactor experiments into common.nix 2021-04-20 17:13:29 +02:00
f729fc4006 nbody: rename granularity experiment file 2021-04-19 17:27:52 +02:00
Antoni Navarro
03298228e4 nbody: add strong scaling experiment 2021-04-19 17:27:52 +02:00
Antoni Navarro
58294d4467 nbody: add "nodes or sockets" experiment 2021-04-19 17:27:52 +02:00
Antoni Navarro
48a61dc292 nbody: update indexes 2021-04-19 17:27:52 +02:00
Antoni Navarro
5815a9af09 nbody: move "old" experiments to another folder 2021-04-19 17:27:52 +02:00
Antoni Navarro
ea66d7e4e0 nbody: update granularity tests 2021-04-19 17:27:52 +02:00
3e197da8a3 hpcg: update figures and remove old ones 2021-04-19 16:05:10 +02:00
866d4561d3 hpcg: remove old experiments 2021-04-19 16:01:11 +02:00
9a88319153 hpcg: add granularity experiment 2021-04-19 16:00:55 +02:00
a96839d11a hpcg: merge weak scaling and add size experiment
The scaling.nix file defines both the strong and weak experiments by
using the parameter "enableStrong".
2021-04-19 15:57:31 +02:00
a71ae9c2c6 hpcg: avoid mismatching names for gen units 2021-04-16 16:15:16 +02:00
d490ef2694 hpcg: remove unused extrae.xml file 2021-04-16 16:14:48 +02:00
b4e37a15a9 hpcg: refactor ss and gen using a common file
- The file gen.nix now provides an experiment for each unit, to reduce
  the evaluation time.

- The pipeline is specified in the common.nix file only.

- The input dataset path is no longer symlinked, but is specified in the
  "--load" argument.

- The size is renamed to "sizePerTask" instead of "n".
2021-04-16 11:51:34 +02:00
9bb570af7f tools: add floatTruncate function 2021-04-16 11:49:37 +02:00
Raúl Peñacoba
4d629fe8f7 hpcg: remove old comments 2021-04-16 09:32:28 +02:00
Raúl Peñacoba
f5c8d0cb88 hpcg: choose a smaller strong scaling problem size 2021-04-16 09:32:28 +02:00
Raúl Peñacoba
cb6577b439 hpcg: add strongscaling
HPCG rounds problem size axis when its value is < 16
2021-04-16 09:32:28 +02:00
Raúl Peñacoba
b60a46b683 hpcg: add weakscaling over some nblocks to check which axis is better 2021-04-16 09:32:28 +02:00
Raúl Peñacoba
1a6075a2b1 hpcg: add first granularity/scalability exps for tampi+isend+oss+task
- oss.nix runs valid hpcg layouts whereas slices.nix does not
2021-04-16 09:32:28 +02:00
12ff1fd506 garlicd: send logs to the builder 2021-04-16 09:29:33 +02:00
732b0c0e9c garlic tool: improve unit status information 2021-04-16 09:29:33 +02:00
64f077c4f6 stages: prepend the stage name to messages 2021-04-16 09:29:33 +02:00
7c94997023 control: add trap for bad exit 2021-04-16 09:29:33 +02:00
fb0dee4b61 exp: move exit1 experiment to slurm 2021-04-16 09:29:33 +02:00
bde54c69c5 sbatch: store queued status 2021-04-16 09:29:33 +02:00
2151e20bd6 exp: add exit1 experiment
Tests unit bad exits
2021-04-16 09:29:33 +02:00
886d16bcc6 garlic tool: add jq as dependency
So we can parse the experiment configuration in JSON
2021-04-16 09:29:33 +02:00
5c0f179830 stdexp: rename "name" to "clusterName" 2021-04-16 09:29:33 +02:00
422d359b48 script: stop on error by default 2021-04-16 09:29:33 +02:00
60248ab06b article: remove not used figures 2021-04-16 09:29:33 +02:00
1cb63b464d osu: adjust figures for publication 2021-04-16 09:29:33 +02:00
821b4f0d15 rplot: patch scales and fontconfig 2021-04-16 09:29:33 +02:00
0cf35decc5 osu: add mtu and eager experiments 2021-04-16 09:29:33 +02:00
26e3a86c78 garlic tool: check the presence of all the units
This check prevents a user from removing units between the
execution of the experiment and the fetch.
2021-04-16 09:29:33 +02:00
b96c39e0ba noise: add srun signal bug to the list 2021-04-16 09:29:33 +02:00
f842f1e01d slurm: add sigsegv experiment
Ensure that we can catch a sigsegv signal before and after the
MPI_Finalize call.
2021-04-16 09:29:33 +02:00
71c06d02da stages: add baywatch stage to check the exit code
This workaround stage prevents srun from returning 0 to the upper stages
when a signal happens after MPI_Finalize. It writes the return code to a
file named .srun.rc.$rank and later checks that exists and contains a 0.

When the program is killed, exits with non-zero and the error is
propagated to the baywatch stage, which aborts immediately without
creating the rc file.
2021-04-16 09:29:26 +02:00
604cfd90a3 test: add sigsegv after MPI_Finalize test
The current srun version used in MN4 returns 0 if the program crashes
after MPI_Finalize, as shown by this test.
2021-04-16 09:28:02 +02:00
07253c3fa0 fwi: update figure index 2021-04-14 17:18:46 +02:00
eab323a13a fwi: update io figure 2021-04-14 17:18:24 +02:00
8ce2a68cd7 fwi: update strong scaling figure script 2021-04-14 17:16:12 +02:00
99c6196734 fwi: update granularity figure 2021-04-14 17:05:09 +02:00
dd75a840ce fwi: use enableIO instead of ioFreq 2021-04-12 20:09:17 +02:00
e49e3b087f fwi: rename big io experiment 2021-04-12 19:49:31 +02:00
59040d9355 fwi: fix inverted resources 2021-04-12 19:31:35 +02:00
6422741cb7 fwi: merge io experiments into one file
The enableExtended parameter control if the experiment runs with
multiple nodes or only one.
2021-04-12 19:27:45 +02:00
99beac9b23 fwi: generate the model in every node
As we are using local storage, we need a copy of the input in every
node. The current method is to run the generator only in the rank which
has assigned the cpu 0 in the mask.
2021-04-12 19:01:10 +02:00
58dc277d3d fwi: refactor ss-io with common.nix
Also, keep the names short and consistent.
2021-04-12 17:57:46 +02:00
47b326c646 fwi: generate the input at runtime 2021-04-12 17:46:07 +02:00
419e7f95cc fwi: avoid input generation
The ModelGenerator is now included in the fwi-params, so that the input
can be generated at runtime.
2021-04-12 17:43:30 +02:00
b0af9b8608 srun: add postSrun hook 2021-04-12 17:41:59 +02:00
4afda7dbfb fwi: use common.nix in sync_io experiment 2021-04-12 16:27:18 +02:00
02a103565c fwi: use common.nix in reuse experiment 2021-04-12 15:48:59 +02:00
788dd13ebd fwi: merge mpi pure experiment
The getResources function is used to assign the proper cpu binding
depending on the version. However, additional contraints are required to
ensure that we have enough points in Y.

By default the mpi+send+seq branch is disabled.
2021-04-12 15:37:39 +02:00
41665bc6fc fwi: refactor config generation into common.nix 2021-04-12 15:01:25 +02:00
9aa07993b2 fwi: refactor ss and granularity experiments
A common.nix file contains the shared stages
2021-04-12 14:41:26 +02:00
e0a68c077c fwi: merge forkjoin ss experiment into one file
Additional options are only active with enableExtended = true
2021-04-12 12:51:10 +02:00
989f6ee018 fwi: adjust input size to meet timing constraints
The previous iniput size for both granularity and strong scaling tests
where too big to meet the timing constrains needed for garlic. This
patch sets a new, smaller, input size.

Also, a minor cleanup is applied to the rest of the fwi experiments
and figures.
2021-04-07 12:44:14 +02:00
3e5a56ebdb fwi: add tampi non-blocking variant 2021-04-07 12:44:14 +02:00
3ef4a505d3 fwi: add strong scalability tests 2021-04-07 12:44:14 +02:00
aadce016e1 fwi: add granularity and data reuse experiments
The data reuse experiment shows the effect of poor data locality versus
task granularity.
2021-04-07 12:44:14 +02:00
1d9a5c4721 fwi: fix input derivation
The fwiInput derivation must be the same used when compiled the fwi app
as the fwi-input used in the experiment.
2021-04-07 12:44:14 +02:00
11e400abb5 fwi: remove old experiment 2021-04-07 12:44:14 +02:00
a8477b1b05 fwi: add test figure with the time 2021-04-07 12:44:14 +02:00
7a6cbd3a9e fwi: update test experiment 2021-04-07 12:44:14 +02:00
3de7b5a0b6 fwi: save the params and frequencies files 2021-04-07 12:44:14 +02:00
485b9150e5 fwi: add problem size parameters 2021-04-07 12:44:14 +02:00
fa0e9f591f fwi: update repo url to PM server 2021-04-07 12:44:13 +02:00
de175b2380 fwi: fix input name 2021-04-07 12:44:13 +02:00
bfbbc294ae fwi: split into input and solver
All branches compile with several hacks.
2021-04-07 12:44:13 +02:00
9bea3cc264 fwi: add oss experiment 2021-04-07 12:44:13 +02:00
f10f8472ac fwi: add seq test experiment 2021-04-07 12:44:13 +02:00
26ad3e49f7 fwi: add gitBranch and copy params 2021-04-07 12:44:13 +02:00
312656ce54 heat: rename granul -> granularity experiment 2021-04-06 18:42:49 +02:00
63aa07dad5 heat: update granularity plot with modern ggplot 2021-04-06 18:40:19 +02:00
d1c32869c1 heat: split granularity with extended mode
The HWC version is not yet complete.
2021-04-06 18:38:15 +02:00
3566cf0152 develop: add paraver package 2021-04-06 11:14:30 +02:00
0b7e92b6f9 heat: add bar plot with time distribution 2021-04-06 11:05:56 +02:00
f8122f3c8b heat: use the hcut tool to limit the cpus 2021-04-06 11:05:56 +02:00
699404bafe bsc: add cpuid program 2021-04-06 11:05:56 +02:00
d68ce914ba heat: use cut to partition the trace
The awk script doesn't take in consideration the events close to the cut
points, which are significative with low parallelism.
2021-04-06 11:05:51 +02:00
cb482fa3ea heat: remove perf from the ctf experiment
As we would be extracting perf stats from the trace processing steps.
2021-04-06 11:05:10 +02:00
3c150d3910 doc: add contributing file 2021-04-06 10:50:39 +02:00
8a97fefafa saiph: simplify and update figure scripts 2021-04-01 19:25:38 +02:00
10b1ff8f7a saiph: simplify granularity and ss experiments 2021-04-01 19:25:38 +02:00
0e0f1b265f saiph: add extra parameters for the app 2021-04-01 19:25:38 +02:00
5ea9ff5ad8 machines: add cache sizes 2021-04-01 19:25:38 +02:00
Sandra
2b36e33b7e saiph: modify apps parameters 2021-04-01 19:25:37 +02:00
Sandra
b64b864194 saiph: clean exps and figs 2021-04-01 19:25:37 +02:00
Sandra
72e7a8dab7 shell: add clangOmpss2 and gdb 2021-04-01 19:25:24 +02:00
Sandra
46536548ca saiph: update scaling exp and figures 2021-04-01 19:24:38 +02:00
Sandra
8406c1c4e5 saiph: add total number of local blocks (#tasks) parameter 2021-04-01 19:24:38 +02:00
Sandra
bc912162a0 index: add vtk and boost 2021-04-01 19:24:38 +02:00
Sandra
4e727bf632 shell: add nix-diff 2021-04-01 19:24:38 +02:00
Sandra
5c7af00dfa saiph: add debug/asan flags parameters 2021-04-01 19:24:38 +02:00
Sandra
5caf2f79f3 saiph: change scaling R script 2021-04-01 19:24:38 +02:00
Sandra
a90c044c3e saiph: add manual global blocking
Ensure cuts in a single dimension
2021-04-01 19:24:38 +02:00
Sandra
99532c9c60 saiph: add manual distribution and nbl/nbg 2021-04-01 19:24:34 +02:00
Sandra
ddef901e2f saiph: add nsteps parameter to experiments 2021-03-30 18:54:35 +02:00
Sandra
1ae5acfe6a saiph: add nsteps in saiph app 2021-03-30 18:54:35 +02:00
d108306a29 saiph: add blocking experiments to index
Remove unused environment variables as well.
2021-03-30 18:54:35 +02:00
e0fbbe32a6 saiph: update granularity experiment and R script 2021-03-30 18:54:35 +02:00
Sandra
37e11c749f saiph: add cacheline compilation parameter 2021-03-30 18:54:35 +02:00
Sandra
02a62c18ac saiph: add strong scaling experiment 2021-03-30 18:54:35 +02:00
Sandra
0ac0205366 saiph: add figures for blocking experiment 2021-03-30 18:54:35 +02:00
Sandra
a2306eb941 saiph: add some blocking experiments 2021-03-30 18:54:35 +02:00
Sandra
38d4d0b48c saiph: delete extrae XML configuration files 2021-03-30 18:54:35 +02:00
63b08fa4e8 saiph: use nby for granularity plot 2021-03-30 18:54:35 +02:00
992af14c7f saiph: add scaling experiment 2021-03-30 18:54:35 +02:00
99f3326609 saiph: allow custom gitCommit 2021-03-30 18:54:35 +02:00
a4b2dfddb4 saiph: update granularity experiment 2021-03-30 18:54:35 +02:00
830d648925 saiph: reduce the number of loops
The current app Heat3D_vect has a long initialization time
2021-03-30 18:54:16 +02:00
e4ab177d6c saiph: remove dangerous Intel MPI envvar
It is no longer used, as we have moved to the release library version.
2021-03-30 17:56:26 +02:00
b7dcf7bc69 rplot: add support for gziped datasets 2021-03-30 16:35:47 +02:00
5ac581b573 creams: remove pure mpi from granularity 2021-03-30 16:14:32 +02:00
b900cb95f0 creams: make configurations unique 2021-03-30 16:14:11 +02:00
389d3f6310 creams: simplify granularity figure 2021-03-30 16:07:14 +02:00
76deac0a63 creams: update figures using one single pipeline 2021-03-30 15:59:52 +02:00
87f751185c creams: merge similar experiments together
Large experiments have the enableExtended parameter disabled by default,
which enables more tests.
2021-03-30 15:55:57 +02:00
ec056d97e5 rplot: add total job time in the plots 2021-03-30 15:49:40 +02:00
872ad1a289 stdexp: allow preSrun attribute in the srun stage
This option allows an experiment to inject commands before srun starts,
while keeping the standard srun stage options.
2021-03-29 17:46:19 +02:00
Pedro Martinez
617ef21d38 creams: redefine granularity figures 2021-03-24 13:52:26 +01:00
Pedro Martinez
5cd9894636 creams: redefine granularity experiments 2021-03-24 13:52:26 +01:00
Pedro Martinez
bfc32ef4b7 creams: readjust granularity for strong scalability 2021-03-24 13:52:26 +01:00
Pedro Martinez
cb4d27aefb creams: bugfix in granularity values 2021-03-24 13:52:26 +01:00
Pedro Martinez
d27c696259 creams: reduce granularity combinations to 8 2021-03-24 13:52:26 +01:00
Pedro Martinez
a55019c6ef creams: add more nodes for granularity experiments 2021-03-24 13:52:26 +01:00
8a81c6bfba creams: add granularity figure
Only the hybrid experiment is used by now
2021-03-24 13:52:26 +01:00
c59f298ae2 creams: reduce granularity experiment units 2021-03-24 13:52:26 +01:00
6818b29d02 creams: fix outdated nanos6.toml
This temporal fix allows the experiment to ignore the nanos6.toml in the
git repository, and only set version.dependencies variable.
2021-03-24 13:52:26 +01:00
Pedro Martinez
8445fb0928 creams: run the cp command in one process only 2021-03-24 13:52:26 +01:00
Pedro Martinez
1aa0e77157 creams: avoid race condition
Ensure only one Slurm process performs environment operations
2021-03-24 13:52:26 +01:00
Pedro Martinez
938246322f creams: add OpenMP branches 2021-03-24 13:52:26 +01:00
Pedro Martinez
6c0f4ec1b3 creams: add granularity experiments 2021-03-24 13:52:26 +01:00
46f7add84c garlicd: use head instead of the read builtin
It seems that bash is unable to propagate the SIGINT while
reading from the FIFO. This fixes the anoying ^C^C^C problems
found when running garlicd.
2021-03-22 18:43:01 +01:00
87fa3bb336 sbatch: assert types to avoid silent parse errors 2021-03-19 16:37:31 +01:00
9c8282362a cn6: use install target from the Makefile
The PREFIX must be set both at build and install time.
2021-03-19 11:39:58 +01:00
74cd3d4fbc rplot: fix fontconfig warning 2021-03-12 19:53:24 +01:00
c41456412c examples: Add granularity examples 2021-03-12 19:33:40 +01:00
f0ae0df341 Add MIT license 2021-03-12 13:57:22 +01:00
9d38a37787 doc: link to the user guide in the readme 2021-03-12 13:28:05 +01:00
7d66b34140 nbody: fix converter rename in nanos6 CTF options 2021-03-12 12:58:41 +01:00
0781e8b28e nbody: remove jemalloc experiments
Nanos6 has jemalloc enabled by default
2021-03-12 12:58:41 +01:00
88087bb4b7 nbody: add time-node plot 2021-03-12 12:58:41 +01:00
637c57b388 nbody: improve unit name 2021-03-12 12:58:41 +01:00
26ab2d9bbd nbody: fix indentation in baseline R script 2021-03-12 12:58:41 +01:00
133ef50bb4 nbody: show time points 2021-03-12 12:58:41 +01:00
3a2694ad36 nbody: add mpi branch in scaling experiment 2021-03-12 12:58:37 +01:00
5804b167db nbody: add scaling figure 2021-03-12 12:57:01 +01:00
425479c9fc nbody: add scaling experiment 2021-03-12 12:57:01 +01:00
a286488979 rplot: add egg package for ggarange function 2021-03-12 12:56:58 +01:00
d70adae9ec heat: add figure for the mode experiment 2021-03-12 12:14:51 +01:00
854707103c heat: add ctf stage to analyze mode times 2021-03-12 12:13:10 +01:00
972be56eed heat: patch to print the start and end time
It will be used to cut the CTF traces to take only the computation part
in cosideration.
2021-03-12 12:11:24 +01:00
56c625bfe4 ds: add ctf mode analysis 2021-03-12 12:10:18 +01:00
968accd552 cn6: install dur utility for extracting statistics 2021-03-12 12:09:02 +01:00
3445a72686 garlic tool: copy recursively from .garlic/
It allows an experiment to store a CTF trace in the resultTree (which is
not recommended for large traces).
2021-03-12 11:13:35 +01:00
f68564efe6 nanos6: add debug version for for libstdc++ 2021-03-11 17:57:50 +01:00
4780a81d70 nanos6: add patch to use CLOCK_MONOTONIC in CTF 2021-03-11 17:57:50 +01:00
b192fc44f5 heat: refactor cache into granul experiment 2021-03-09 18:45:33 +01:00
7b4da07dbf heat: add more figures from perf counters 2021-03-09 18:21:59 +01:00
3bcbc62a98 fig: add fig.heat.cache to fig.article 2021-03-09 18:21:22 +01:00
52360c9459 rplot: add viridis R package 2021-03-09 18:20:40 +01:00
71a1396955 ds: parse time with perf generator 2021-03-09 11:07:19 +01:00
b600f64fcc heat: add cache miss experiment and figure 2021-03-05 18:31:31 +01:00
14fbb1499b ds: add perf stat parser
We can only read one output file by now, located at:
.garlic/perf.csv
2021-03-05 18:29:43 +01:00
c1efba1e65 heat: rename test -> granul experiment 2021-03-05 18:28:32 +01:00
29d7245135 heat: add figure with heatmap 2021-03-05 16:21:13 +01:00
363700eb9a heat: update test experiment 2021-03-05 16:18:51 +01:00
7e10a43b40 heat: update new app version
The blocksize is now specified at runtime
2021-03-05 16:16:06 +01:00
c4e49ea249 llvm-ompss2: update to last commit d2d451fb 2021-03-04 12:43:17 +01:00
d4ca58db2c mcxx: update to tag 2.2.98 2021-03-04 12:42:44 +01:00
d5912c3889 tampi: update to last commit 2021-03-03 19:06:25 +01:00
cb12aa2d94 nanos6: enable jemalloc by default 2021-03-03 19:05:33 +01:00
5fae560ce9 nanos6: update 2.5 -> 2.5.1 2021-03-03 19:05:03 +01:00
6b6b54f757 timetable: add total_time column 2021-03-03 19:00:36 +01:00
b79951c9fe bsc: add new package lmbench 2021-03-03 17:43:09 +01:00
c684b1870a osu: update 5.6.3 -> 5.7 2021-03-03 17:41:05 +01:00
5afe819724 osu: add impi figure 2021-03-03 12:42:19 +01:00
651d91ef79 fig: improve indentation 2021-03-03 12:42:19 +01:00
14211c9895 osu: use ggsave and reduce verbosity 2021-03-03 12:42:19 +01:00
6973f48638 osu: add an experiment for Intel MPI tunning 2021-03-03 12:42:19 +01:00
4786953eeb garlic: fix self/super with correct scope
The callPackage function was trying to find packages in bsc.self before
the self of the input parameters.
2021-03-03 12:42:19 +01:00
a6815dc7cf fig: add article figure directory 2021-03-03 12:41:31 +01:00
6f2375804d nixtools: pin commit 2021-03-03 11:53:12 +01:00
4ffb609261 osu: add figures using the fast generators 2021-03-01 12:21:10 +01:00
1d015c7e1e ds: add osu fast generators 2021-03-01 12:00:58 +01:00
ed932c9921 osu: add bw test 2021-03-01 11:58:23 +01:00
a36d912022 osu: add multithread benchmark 2021-03-01 11:55:13 +01:00
8373751f67 rplot: remove suffix from input link
We may have compressed input datasets
2021-03-01 11:41:28 +01:00
2f7032aca6 pp: remove unused derivations and helpers 2021-03-01 11:40:56 +01:00
6dd41fd96f fig: use the fast timetable generator by default 2021-03-01 11:38:28 +01:00
09a0348b0e ds: add fast timetable generator 2021-03-01 11:16:03 +01:00
051a74b85d srun: allow commands to run before srun 2021-02-26 17:00:09 +01:00
8a77900201 srun: don't expand variables on install 2021-02-26 16:59:29 +01:00
1291b90b7f user guide: correct typo 2021-02-26 12:18:50 +01:00
8e130604aa machines: set the hardware revision for MN4
This change will cause a rebuild of all experiments.
2021-02-25 20:45:20 +01:00
0015c7e4cd pp: remove launcher
It has now been integrated with resultTree in pp/store.nix
2021-02-25 12:29:12 +01:00
9612c69aec doc: add garlic configuration section
Update the garlicd usage as well.
2021-02-25 11:38:29 +01:00
6e0e2f0bf6 garlicd: drop bscpkgs argument requirement
The bscpkgs/default.nix is not longer read, as the garlic tool only
needs it for the fetching (-F), when it runs nix-build.
2021-02-25 11:38:29 +01:00
48820ee2d3 resultTree: garlic must be used from the nix shell 2021-02-25 11:38:29 +01:00
9277e60079 timetable: enable verbose processing 2021-02-25 11:38:29 +01:00
c869b6e3b4 garlic: enable verbose rsync fetch 2021-02-25 11:38:29 +01:00
0b95ea20b7 garlicd: allow manual experiment executions 2021-02-25 11:37:58 +01:00
ceb25e5d18 osu: add figure for latency tests 2021-02-23 17:52:48 +01:00
0c9e89dcc0 osu: update experiments using stdexp 2021-02-23 15:22:56 +01:00
ebcbf91fbe exec: allow manual specification of program path 2021-02-23 15:22:18 +01:00
3e2b369e3e garlicd: allow nix builders write to the pipes 2021-02-17 10:28:34 +01:00
d4947a40b9 Fix ssh missing shell 2021-02-17 10:28:11 +01:00
243d022620 cn6: update name and add to the shell 2021-02-15 17:44:20 +01:00
0ee2747215 garlicd: avoid no match fail
We check the result in the next if.
2021-02-15 16:32:06 +01:00
5fd2a62684 doc: update garlicd usage from the nix-shell 2021-02-15 16:22:45 +01:00
0e0bf9e7a7 garlic: add shell with the garlic tools 2021-02-15 16:22:06 +01:00
cb5bcd7097 garlicd: add to index and check for error
The garlicd is now available under garlic.garlid and it requires the
extra-sandbox-path option to be properly set.
2021-02-15 16:20:06 +01:00
d51fe5db48 garlic tool: ensure the mountpoint is enabled 2021-02-15 16:18:21 +01:00
c36b724e9a Add experimental garlicd doc 2021-02-15 13:00:19 +01:00
cdf48181e5 user guide: add time measurement sections 2021-02-08 19:05:46 +01:00
a6b7b14d5e user guide: add initialization time limit 2021-02-08 19:05:46 +01:00
2ca58c46b4 user guide: Add postprocessing section 2021-02-08 19:05:46 +01:00
25208a8158 user guide: add tar.gz target for the web 2021-02-08 19:05:19 +01:00
c46feb4bf2 user guide: use ms macros
Added HTML output
2021-02-08 19:05:19 +01:00
4d626bff97 user guide: test ms macros 2021-02-08 19:05:19 +01:00
042876a287 user guide: generate html with css 2021-02-08 19:05:19 +01:00
edd71815eb pp: fix code block for html 2021-02-08 19:05:19 +01:00
39c360b413 user guide: add readme and branch name conventions 2021-02-08 19:04:51 +01:00
3ce0d3934b user guide: reorder development 2021-02-08 19:04:45 +01:00
60cab85fc4 user guide: expand the develop section 2021-02-08 19:04:36 +01:00
95809bd2bf user guide: add stub with mm macro 2021-02-08 19:04:30 +01:00
e5561b8735 control: save total execution time 2021-02-08 14:14:08 +01:00
ed1cd75d56 impi: update 2019.9.304 -> 2019.10.317 2021-02-05 10:16:57 +01:00
d4dfbb7501 Remove garlic.ds attribute
Datasets are now handled directly when creating the figures, via the
timetable attribute.
2021-02-03 15:34:25 +01:00
b65a442cb0 fig: use timetable attribute in other plots 2021-02-03 15:34:10 +01:00
9c6b7a9f87 timetable: missing quote 2021-02-03 13:51:24 +01:00
d84ccf566b launcher: fix typo 2021-02-03 13:51:04 +01:00
0faf22a43f fig: add nbody example using timetable attribute 2021-02-03 13:07:55 +01:00
e89139284a stdexp: add result and timetable targets
These targets allow one experiment to directly refer to another
experiment results, thus a dependency chain can be formed to ensure
execution order.

It also simplifies the dataset definition, as they can be automatically
fetched from the experiment directly.
2021-02-03 12:37:54 +01:00
b453c12253 pp: Add automatic launcher 2021-02-03 12:36:59 +01:00
32d8636ae1 timetable: prevent empty time lines 2021-02-03 12:27:23 +01:00
e4e427b7f6 garlicd: add daemon to launch experiments 2021-02-03 12:08:25 +01:00
fe760c0023 garlic: sent trebuchet output to stderr 2021-02-03 11:50:31 +01:00
4591eca1fd garlic: Add blackbox diagram 2021-02-01 11:11:54 +01:00
9beda65778 lulesh: add experiment with all variants 2021-01-28 15:27:21 +01:00
0f62151dcf lulesh: follow garlic git branches 2021-01-28 15:27:21 +01:00
0bc81c8943 tools: add range2 function 2021-01-28 15:00:43 +01:00
a3804e31f2 develop: Simplify packages 2021-01-26 14:59:57 +01:00
ed4a9e1bc3 Add branch diagram 2021-01-25 17:54:24 +01:00
57c60821ce icc: Update url
Fixes #87
2021-01-25 15:25:42 +01:00
1e84dc196a ctfast: Add experimental ctf conversor 2021-01-18 18:43:26 +01:00
3d0e93b4d3 Add slides pdf 2021-01-14 13:06:20 +01:00
8262fd3104 Add slides for meeting 3 2021-01-13 20:19:28 +01:00
2b9c3da911 Add script stage 2021-01-12 18:19:49 +01:00
aeac1a6068 exec: Force newlines
Allow single line commands like pre="true"
2021-01-11 19:15:37 +01:00
130fe39c8e exec: Abort on error
We need exit on the first error, as otherwise we cannot track a bad
execution when no exec is done (when post is not empty).
2021-01-11 18:29:30 +01:00
5c2bd13c3d Add unstable nix for MN4
Fixes the fallocate problem
2021-01-11 16:42:30 +01:00
140598a28b Pin nixpkgs 2021-01-11 16:41:56 +01:00
892fb35d27 nbody: Fix infinite recursion
We want to override the previous layer (super), not the last one (self).
2021-01-11 14:30:12 +01:00
afd333adef creams: fix indentation 2020-12-18 12:43:06 +01:00
76f2ef4b95 creams: add figures for scalability 2020-12-18 12:26:40 +01:00
ed5f6bc22b nanos6Git: Correct typo 2020-12-17 15:27:50 +01:00
3b80c2fcb9 creams: Merge hybrid and pure datasets into ss.all 2020-12-17 15:26:25 +01:00
b5cadefca9 Allow a space before time tag
This matches the fortran format for creams
2020-12-17 15:24:23 +01:00
Pedro Martinez
203dc9f295 Configure the nanos6 environment and get the right hardware attributes 2020-12-15 19:34:49 +01:00
Pedro Martinez
2e18761b48 Use the 'hw' attributes 2020-12-15 19:11:29 +01:00
Pedro Martinez
748d335a39 Define variables 'ntasksPerNode' and 'cpusPerTask' for each experiment and other minor changes 2020-12-15 19:11:29 +01:00
9646a1298d Fix propagation of bsc.extend
Fixes #82
2020-12-11 17:15:05 +01:00
5a8cc1e514 stdexp: Run python snippets and import the result 2020-12-10 15:41:49 +01:00
7d4db6b6de control: Exit on error
This prevents srun from silently returning with an error, without
actually queueing the job of a run.
2020-12-07 16:33:40 +01:00
756c5dff92 Update PM git server 2020-12-07 13:47:17 +01:00
9a0ea08d72 Reorganization
- All garlic stuff is moved into garlic/
- Group the overlay index by sections
- Add a garlic/default.nix link to the main default.nix, so we can
  build derivations at garlic/
2020-12-07 13:33:42 +01:00
a8db596b35 Add lulesh and hpccg again 2020-12-04 11:26:18 +01:00
90d7c83261 Add a hwloc test 2020-12-04 11:18:44 +01:00
d70316a25a fwi: disable nanos6 in ModelGenerator 2020-12-04 11:17:15 +01:00
eb4adf9520 ifsker: initial version 2020-12-03 18:49:28 +01:00
266fffdb5f miniamr: initial version for OmpSs-2 2020-12-03 18:09:47 +01:00
f65e4d01c3 Simplify compiler name variables 2020-12-03 18:06:51 +01:00
53d8e535b5 clang: Use llvm 11 by default 2020-12-03 16:59:51 +01:00
1bdeca9e7d unit: Remove dangerous slash from index names 2020-12-03 16:33:48 +01:00
5e9adf3fe6 nbody: Fix x label 2020-12-03 13:22:48 +01:00
c858f521bf isolate: add $TMPDIR in the namespace 2020-12-03 13:22:10 +01:00
bdaadd4ef7 nbody: add ctf tests 2020-12-03 13:20:40 +01:00
b8a1ea3f72 develop: Fix inputrc missing key codes 2020-12-03 13:09:42 +01:00
eea9539258 develop: Set shell and hisfile 2020-12-03 12:14:04 +01:00
3dbb24dd9e develop: add more tools 2020-12-03 12:05:24 +01:00
da4bbf8533 isolate: only load some files from /etc 2020-12-03 12:04:51 +01:00
df1f22c122 develop: support for srun 2020-12-02 13:38:43 +01:00
f87d830218 isolate: preserve TERM 2020-12-02 13:06:55 +01:00
3d352fee19 isolate: allow argument passing 2020-12-02 13:06:35 +01:00
284662d6cd develop: fix bash PS1 2020-12-02 12:22:20 +01:00
84a8060bc5 intel: Upgrade expired license 2020-12-02 12:13:34 +01:00
1340d1d2e8 develop: Experimental interactive support 2020-12-02 11:58:00 +01:00
1f841649f8 exec: add support for nixPrefix 2020-12-02 11:57:40 +01:00
8d5853bba9 Add vite and otf packages 2020-11-30 20:23:44 +01:00
dd5832b39d Fix nanos6 jemalloc typo 2020-11-30 20:08:59 +01:00
ad7c04845b Add paraverExtra with some patches 2020-11-30 20:07:59 +01:00
6483d645d1 babeltrace2: enable parallel build 2020-11-27 20:13:11 +01:00
4000dbd0b8 Rename slides and generalize makefile 2020-11-24 18:05:16 +01:00
6fa3facfb1 Preliminar version for the slides 2020-11-24 17:58:14 +01:00
ed95cb0a04 Add wip presentation 2020-11-23 19:06:15 +01:00
aca7e36fc7 bigsort: add experiment with input generation 2020-11-20 15:41:27 +01:00
0bb5c76aad bigsort: add extra programs 2020-11-20 15:40:17 +01:00
2153e58baf bigsort: add the shuffle program 2020-11-20 15:39:34 +01:00
ceeb0f7f41 bigsort: add genseq program 2020-11-20 15:38:26 +01:00
a147a396d9 trebuchet: add the experiment as attribute 2020-11-20 15:35:36 +01:00
8bc5656461 tools: recursive getExperiment
It allows getExperimentStage to be called from any stage above the
experiment.
2020-11-20 15:34:14 +01:00
d192a59fdc control: Export the run iteration 2020-11-20 15:32:41 +01:00
734d494d96 stdexp: Allow extra mounts 2020-11-20 15:30:47 +01:00
2863ab6ae1 machines: Use fs topology 2020-11-20 15:29:03 +01:00
4f0da10321 bigsort: Use cpusPerTask instead of cpuBind 2020-11-20 13:57:12 +01:00
David Alvarez
0c438d4dac Setup for test experiment 2020-11-20 13:57:12 +01:00
David Alvarez
a0dac209e3 First test experiment 2020-11-20 13:57:12 +01:00
David Alvarez
37bd4c33f2 Add BigSort MPI+OpenMP 2020-11-20 13:57:12 +01:00
e8f649327a exec: Avoid variable expansion at build
All bash variables passed in env, pre or post are now expanded at
execution time..
2020-11-20 13:54:45 +01:00
daadcc93d0 ompss2: fix to the last release 2020-11-19 18:50:30 +01:00
e65c801a20 paraver: Downgrade wx to 2.8 and add wxpropgrid
Fixes a problem with i3 when opening a new timeline view, which caused a
rapid switch between paraver main window and the timeline.
2020-11-19 16:36:47 +01:00
a076d7d3d0 Add paraver with some patches for tiling WM 2020-11-18 14:00:19 +01:00
d2d3ccf332 Idea for FS naming convention 2020-11-17 18:33:57 +01:00
e1e34ddf75 exec: add pre and post code to allow cleanup tasks 2020-11-17 16:09:38 +01:00
33f6ae7e55 Add bundled report example 2020-11-17 15:51:09 +01:00
fe0bd8b200 creams: fix pure experiment
Use machine agnostic specification for resources
2020-11-17 12:31:03 +01:00
bcb9cf31a3 Add datasets for creams experiments 2020-11-17 11:42:34 +01:00
dcb56643d5 nbody: add a small experiment 2020-11-17 11:36:42 +01:00
ef4bb13a7d Add all experiments in one dummy target 2020-11-17 11:32:06 +01:00
69af473241 Disable old hpcg experiments 2020-11-17 11:31:34 +01:00
016422cede Update nbody experiment
Generate the input based on the target machine description.
2020-11-17 11:26:35 +01:00
5e50ef19fe Update experiments with cpusPerTask
Try to avoid manually setting the hardware specs and rather use
the hw attrset.
2020-11-17 11:17:57 +01:00
641e752bd5 Add a trace message at unit evaluation 2020-11-17 11:12:12 +01:00
74537e682c Use divisors in the slurm cpu experiment 2020-11-17 11:01:34 +01:00
433c8864ea Add divisor generator 2020-11-17 11:01:34 +01:00
e0ca33569b garlic tools: rename divList -> halfList 2020-11-17 11:01:34 +01:00
65918bca21 dummy: Set the programPath for experiments 2020-11-17 11:01:34 +01:00
dea523460a Add slurm affinity experiment 2020-11-17 11:01:34 +01:00
b4a3bb0ede New stdexp resource specification
Now the options	cpusPerTask ntasksPerNode nodes and jobName are required
for the sbatch stage. Also cpuBind has been removed and is always set to
"cores,verbose" in the srun stage.
2020-11-17 11:01:34 +01:00
dabc6be640 Add more helper functions 2020-11-17 11:01:34 +01:00
2a42c1e53e Fix aliases 2020-11-17 10:57:17 +01:00
18afcb1f44 Avoid nixpkgs reevaluation
The bsc attrset is now extensible: replacing a few bsc packages is very
fast. Also we allow the complete bscpkgs to be within other custom
overlays (not tested yet).
2020-11-17 10:49:45 +01:00
3372f94855 noise: cut long lines and move vim line to bottom 2020-11-13 10:38:33 +01:00
288318b556 Merge branch 'saiph' into 'master'
Saiph

See merge request rarias/bscpkgs!6
2020-11-13 10:25:47 +01:00
42f2227a9f sbatch: Use experiment reservation if given 2020-11-13 10:17:54 +01:00
Sandra
4ae66adb9a Saiph: adding granularity experiment and figures 2020-11-13 09:56:40 +01:00
Sandra
86d1d426ec Saiph: Removing devMode parameter 2020-11-12 19:10:43 +01:00
5333058741 report: build only required figures
Introduces a intermediate derivation that can be imported into the
report derivation, which contains a string cmd that expands the fig
variable as needed.
2020-11-11 19:03:02 +01:00
9a7e59a076 nanos6: fix the git commit
Until nanos6 release is complete, we don't want frequent large rebuilds
2020-11-11 19:00:33 +01:00
0b0f6ac9f0 rplot: Add a reference to the dataset 2020-11-11 18:59:57 +01:00
74ce07b193 rdma-core: use upstream by default
The systemd dependency is pulled anyway
2020-11-11 17:31:41 +01:00
f2610361a7 icc: fix hash and internal version number 2020-11-11 17:06:36 +01:00
acc3390b6b WIP: icc update 2020-11-11 17:06:36 +01:00
9faa4ef101 rdma-core: only remove binaries 2020-11-11 17:06:03 +01:00
cd3afe4ad6 rdma-core: drop systemd dependency 2020-11-11 14:45:02 +01:00
4111535a9d clangOmpss2: Remove clang from the inputs
Is already provided in stdenv as we use llvm10, and otherwise it
will pull clang 7 as dependency.
2020-11-11 13:17:31 +01:00
09361fae77 extrae: use pname to get the version 2020-11-11 13:17:03 +01:00
dc3e84a148 tampi: use the last release by default 2020-11-11 12:25:21 +01:00
1838178761 tampi: Update to 1.0.2 and use fetchFromGitHub
The configure flags are no longer required.
2020-11-11 12:24:41 +01:00
63f966e3c1 extrae: Add patch to follow upstream 2020-11-11 12:19:07 +01:00
966606b62d hpcg: precompute the input 2020-11-09 17:48:46 +01:00
5763b91d39 Use the trebuchet only to specify an experiment 2020-11-09 17:46:11 +01:00
47f67dcd85 Extend abstract 2020-11-09 12:16:56 +01:00
48869d6e4a Clarify some sections 2020-11-09 12:09:54 +01:00
92f58651b8 Increase margins and enable utf8 targets 2020-11-09 12:09:22 +01:00
c0669d7dc8 Update Intel MPI: 2019.8.254 -> 2019.9.304 2020-11-06 15:45:00 +01:00
31f7d17a41 Add manual diagram for nroff 2020-11-06 14:26:11 +01:00
538d595d30 Add MN4 ssh key section 2020-11-06 14:23:55 +01:00
dec183b221 Fix execution out path 2020-11-06 12:31:39 +01:00
92eee2ede8 Use target machine notation 2020-11-06 12:31:31 +01:00
a8208480c1 Add a nix shell for playing with plots 2020-11-05 20:01:26 +01:00
dd0823876a hpcg: add plot for oss experiment 2020-11-05 19:59:47 +01:00
9d878eeb4a saiph: add dataset for numcomm 2020-11-05 19:58:01 +01:00
11ac02da08 heat: Add test experiment and plot 2020-11-05 19:56:26 +01:00
074a75facb saiph: name the experiment and units in numcomm 2020-11-05 19:53:38 +01:00
7a80d1ca98 heat: Use clang by default 2020-11-05 19:52:37 +01:00
9e477a2313 hpcg: smaller input size 2020-11-05 19:46:34 +01:00
5bd042ef67 nbody: mark the points with bad std 2020-11-05 19:43:39 +01:00
d7be13f88d Update garlic options in store stage 2020-11-05 19:38:45 +01:00
476c2f20f0 Add manual and update the garlic tool 2020-11-05 19:31:21 +01:00
de6b4864ee Add garlic tool manual 2020-11-05 19:29:40 +01:00
33682ef48d Document the results and pp stages 2020-11-05 14:52:57 +01:00
634d2040b5 Add reference index 2020-11-04 13:00:42 +01:00
df4d908f1c Add more rendered files to ignore 2020-11-04 12:57:22 +01:00
f0122d557f WIP: postprocessing doc 2020-11-04 12:56:35 +01:00
62c9da2474 Add hpcg oss experiment dataset 2020-11-03 19:10:00 +01:00
0c58bb63b5 hpcg: add exp and unit name 2020-11-03 19:10:00 +01:00
de46366985 nbody: plot nb/cpu rather than nb 2020-11-03 19:10:00 +01:00
376ab9b32a nbody: Remove test and use baseline 2020-11-03 19:10:00 +01:00
5eea48c5b0 Add exp and unit name to nbody tampi experiment 2020-11-03 19:10:00 +01:00
f1f75c1c11 Rearrange experiment datasets 2020-11-03 19:10:00 +01:00
c3988dacd2 WIP: documentation for the pp pipeline 2020-11-03 19:10:00 +01:00
e778ad75b3 Reorder garlic sets 2020-11-03 19:10:00 +01:00
317409f6ac Move index and out inside the user directory 2020-11-03 19:10:00 +01:00
3eae92bdc4 Remove old pp stages 2020-11-03 19:10:00 +01:00
8bc0dc202d New fetching mechanism with garlic tool 2020-11-03 19:10:00 +01:00
6b40e6f9e9 Experimental garlic tool 2020-11-03 19:10:00 +01:00
d5d42b3c09 Add unit and exp name to nbody test 2020-11-03 19:10:00 +01:00
0bcfe5d25b Add new store pp stage 2020-11-03 19:10:00 +01:00
5e2797bcde Create index files for the experiments 2020-11-03 19:10:00 +01:00
efd7df068e Print full experiment path 2020-11-03 19:10:00 +01:00
7c5345f4bc report: Idea to reduce build time 2020-11-03 19:10:00 +01:00
43991e9173 nbody: plot nblocks in test 2020-11-03 19:10:00 +01:00
7b26b59988 Use rsync to fetch only the logs 2020-11-03 19:10:00 +01:00
a66cdb52fb nbody: Fix test experiment 2020-11-03 19:10:00 +01:00
3bd4e61f3f WIP: Testing with automatic fetching 2020-11-03 19:09:59 +01:00
59346fa97e control: Add status file 2020-11-03 19:09:59 +01:00
fd1229ddc0 nbody: add simple test figure 2020-11-03 19:09:59 +01:00
8ce88ef046 Add dataset attrset in garlic
Modify nbody to evenly distribute blocks per cpu
2020-11-03 19:09:59 +01:00
06c29b573f Add exp.nbody.tampi variants 2020-11-03 19:09:59 +01:00
7852d86a3f Fix plot details 2020-11-03 19:09:59 +01:00
4beb069627 WIP: postprocessing pipeline
Now each run is executed in a independent folder
2020-11-03 19:09:59 +01:00
1321b6a888 Add experiments with jemalloc and CPU affinity 2020-11-03 19:09:59 +01:00
ed8a6416a0 Add support for nanos6 with jemalloc 2020-11-03 19:09:59 +01:00
81d144d716 Remove exp attrset from report
Fixes #43
2020-11-03 19:09:59 +01:00
30ad4219d9 Add example report 2020-11-03 19:09:59 +01:00
067fb0c0a2 Add R shell for quick plots 2020-11-03 19:09:59 +01:00
308673f7f6 Increase nbody test cases 2020-11-03 19:09:59 +01:00
1bd9cb6c0f Move the plot script to R 2020-11-03 19:09:59 +01:00
ede25b6736 Use the stage names as inputs 2020-11-03 19:09:59 +01:00
2680dcb66f Don't nest the unit results
The experiment directory now contains symlinks to the units, keeping the
old structure. The unit results are directly placed in the garlic out
directory.
2020-11-03 19:09:58 +01:00
be0506bc21 Remove unused test for exec stage 2020-11-03 19:09:58 +01:00
f33137a55e WIP: Add experimental figure pipeline 2020-11-03 19:09:58 +01:00
65745e0aaf WIP: Add another nbody experiment 2020-11-03 19:09:58 +01:00
c3659d316d Add perf stage 2020-11-03 19:09:58 +01:00
4f901c1b9c WIP: add postprocessing stages 2020-11-03 19:09:58 +01:00
74f83b5c11 WIP: manual plot 2020-11-03 19:09:58 +01:00
11601703ce Fix shebang in nanos6 master
Also perl is a new dependency now
2020-11-03 19:08:19 +01:00
6f60e3cab2 Fix groff PDF engine
Fixes issue #51
2020-11-03 11:16:58 +01:00
72ba080db1 Merge branch 'nbody' into 'master'
NBody Experiments

See merge request rarias/bscpkgs!5
2020-10-30 16:25:27 +01:00
dad70761ad Merge branch 'hpcg' into 'master'
Hpcg

See merge request rarias/bscpkgs!4
2020-10-30 16:24:24 +01:00
Raúl Peñacoba
9c20537f91 Since mpi+omp version uses 6 threads, change nblocks values 2020-10-30 15:11:23 +01:00
Raúl Peñacoba
56584c9e97 Remove the osu set of tests 2020-10-30 15:01:50 +01:00
Raúl Peñacoba
6a1375726f Fix problem sizes to be equivalent between versions 2020-10-30 14:44:33 +01:00
Raúl Peñacoba
d757332448 Remove extrae home 2020-10-30 14:35:09 +01:00
Raúl Peñacoba
58e3d48a16 Use mask_cpu and n.x n.y n.z instead of n 2020-10-30 14:08:56 +01:00
Raúl Peñacoba
b856e2147a Use discrete deps in nanos6. Pass nblocks to omp version and use the same experiments as oss 2020-10-30 14:08:56 +01:00
Raúl Peñacoba
22a294f9cc Forgot to set one task per node 2020-10-30 14:08:55 +01:00
Raúl Peñacoba
ea0272c212 Add OmpSs-2 (no mpi) version 2020-10-30 14:08:55 +01:00
Raúl Peñacoba
e20061254b WIP: Add mpi, omp and mpi+omp experiments. See more.
Seems that gcc compilation with OpenMP throws an error. Investigate.
I think I've forgot to add an override of mpicxx compiler backend
2020-10-30 14:08:55 +01:00
01b2584688 Update hpcg experiments 2020-10-30 14:08:55 +01:00
Raúl Peñacoba
7bf3e81233 WIP: trying to make mpi branch working 2020-10-30 14:08:55 +01:00
Raúl Peñacoba
6bd7e12cff WIP: forgot to add the folder 2020-10-30 14:08:55 +01:00
Raúl Peñacoba
b5fb3730ac WIP: first serial experiment. Don't know how to add gcc to compile 2020-10-30 14:08:55 +01:00
Raúl Peñacoba
a44042615a WIP 2020-10-30 14:08:55 +01:00
Antoni Navarro
05ce36e158 Add the MPI-weak scaling experiment and strong scaling experiments 2020-10-29 16:31:21 +01:00
Antoni Navarro
6ccc159487 Fix one of the CPU Masks in the weak scaling experiment 2020-10-29 16:30:55 +01:00
Antoni Navarro
8b985de65d Add a few scalability experiments for some variants 2020-10-28 15:35:09 +01:00
ae6a3f9206 Enable python bindings in babeltrace 1 2020-10-16 19:31:43 +02:00
327a155907 Add babeltrace2 for nanos6 2020-10-16 18:18:31 +02:00
80ccd1240a Less verbose execution 2020-10-14 16:29:22 +02:00
9d8f7d9074 Print the experiment being run 2020-10-14 16:28:27 +02:00
c7d2e2d866 Write the unit config in a file 2020-10-14 16:27:47 +02:00
148c614540 Add MN4 hw description 2020-10-14 16:24:56 +02:00
478535b4d1 Define CC and CXX for gcc 2020-10-13 17:43:23 +02:00
7a37913b4e Set the ssh host from the machine config 2020-10-13 14:30:03 +02:00
05b37aa11d Remove cluster scripts from nixtools 2020-10-13 14:17:23 +02:00
04328d81ff Add runexp stage documentation 2020-10-13 14:07:34 +02:00
a38ff31cca Introduce the runexp stage 2020-10-13 13:00:59 +02:00
d0a259f15d Ignore generated doc 2020-10-13 12:17:14 +02:00
f2b39decba Update execution doc with isolation 2020-10-13 12:16:48 +02:00
251103ffd3 Fix tbl preprocessor option 2020-10-13 12:16:46 +02:00
6ab448b10a Fix trebuchet description 2020-10-09 20:28:00 +02:00
aa1ffa5208 Remove unused experiments 2020-10-09 20:17:35 +02:00
4de20d3aa5 Remove old stages and update some 2020-10-09 20:12:52 +02:00
27bc977590 Remove strace from isolate stage 2020-10-09 19:50:28 +02:00
1b703bd431 Fix saiph numcomm experiment 2020-10-09 19:40:49 +02:00
298c7362b3 New config design 2020-10-09 19:33:06 +02:00
9020f87765 Simplify saiph numcomm experiment 2020-10-09 17:20:50 +02:00
53dca32469 Simplify experiment 2020-10-09 17:19:00 +02:00
9d2ce2a1c2 Remove old experiments 2020-10-09 16:43:00 +02:00
e6e42dcec9 Remove old apps 2020-10-09 16:42:06 +02:00
332b738889 Move apps into garlic/apps 2020-10-09 16:42:06 +02:00
a576be8031 WIP stage redesign 2020-10-09 16:42:06 +02:00
654e243735 Include an index in the trebuchet 2020-10-09 16:42:06 +02:00
45afe7d391 Simplify experiment stage 2020-10-09 16:42:06 +02:00
d599b8c52f New naming convention 2020-10-09 16:42:06 +02:00
697d4e652e Ignore pdf and generated txt 2020-10-09 16:42:06 +02:00
26ea326ded Group stages 2020-10-09 16:42:06 +02:00
66a5e06ada Generate trebuchet from nix 2020-10-09 16:42:06 +02:00
e8d884a627 Document the execution pipeline 2020-10-09 16:42:06 +02:00
81004b5ee6 control: Fix bashism 2020-10-09 16:42:06 +02:00
4ea0d16926 WIP isolation 2020-10-09 16:42:06 +02:00
ba221c5200 Add rw test 2020-10-09 16:42:06 +02:00
effcc2d20b Working isolated environment 2020-10-09 16:42:06 +02:00
2a01ee7f24 WIP isolate execution 2020-10-09 16:42:06 +02:00
896ebd4ace WIP nix-isolate 2020-10-09 16:42:06 +02:00
0a26c72440 extrae: Remove dangerous home 2020-10-08 18:34:20 +02:00
4ce514de9b Merge branch 'saiph' into 'master'
Saiph

See merge request rarias/bscpkgs!3
2020-10-07 14:56:33 +02:00
Sandra
c36fc8a08b NOISE verbose fixes 2020-10-07 14:53:06 +02:00
Sandra
ec555e59e7 Setting a developer mode and its implication 2020-10-07 11:53:47 +02:00
Sandra
8f65030161 Saiph: numcomm experiment changes 2020-10-07 11:38:57 +02:00
Sandra
30630a74be Saiph: Vectorisation compiler info flags 2020-10-07 11:38:02 +02:00
6d413c946c nbody: Remove libtampi-c patch
See #37
2020-10-05 12:39:34 +02:00
533d8e9768 Fix tampi experiment to use multiple CPUs per task 2020-10-05 10:47:16 +02:00
d4ea0fe607 tampi: remove hacks from configure flags
The verbose make flag is added to ensure the log contains the complete
compilation line.
2020-10-05 10:45:11 +02:00
2f56488197 Merge branch 'master' of bscpm02.bsc.es:rarias/bscpkgs 2020-10-05 10:31:15 +02:00
3dd609f7db Switch to TAMPI from gitlab as default 2020-10-05 10:31:09 +02:00
368aa57cb7 nbody: Remove OpenMPI dirty hack
Was fixed in 7e1a5128b6
2020-10-05 10:28:38 +02:00
18081b3485 Merge branch 'creams' into 'master'
Creams

See merge request rarias/bscpkgs!2
2020-10-02 18:40:45 +02:00
Pedro Martinez
231672a222 Rename files to improve consistency 2020-10-02 18:28:13 +02:00
Pedro Martinez
b403fbefe1 Add hybrid strong scalability experiments 2020-10-02 17:48:00 +02:00
Pedro Martinez
c85b2976ef Fix non-hybrid strong scalability experiments 2020-10-02 16:47:45 +02:00
Pedro Martinez
6ae71cc5e9 Improvement the experiment based on CREAMS 2020-10-02 16:40:43 +02:00
Pedro Martinez
5cbc8e4fbb First attempt to create an experiment with CREAMS: strong scaling from 1 to 16 nodes using the pure MPI version 2020-10-02 16:40:43 +02:00
50eeca2257 hist: Add -S option and allow joined plots 2020-10-02 15:30:55 +02:00
61a2db03dc Add postprocessing hist tool 2020-10-02 11:58:04 +02:00
fd47044bfb Merge branch 'saiph' into 'master'
Saiph changes

- nix-shell changes
- useless exports avoided

See merge request rarias/bscpkgs!1
2020-10-02 10:52:12 +02:00
Sandra
79a4a4d16b saiph: removing home paths 2020-10-02 10:46:56 +02:00
Sandra
cec7a280c0 saiph: removing nix-shell to avoid its use!! 2020-10-01 17:52:50 +02:00
Sandra
dcf64bd1f6 adding NOISE point 2020-10-01 17:52:50 +02:00
Sandra
ce7566cf7a saiph: removing useless exports 2020-10-01 17:52:50 +02:00
Sandra
78b96c1bc6 saiph: including reservation option 2020-10-01 17:52:50 +02:00
Sandra
6a2d865225 saiph: adding ministat app to saiph shell 2020-10-01 17:52:50 +02:00
Sandra
8f5c5146b3 Saiph: update branchname according to garlic nomenclature 2020-10-01 17:52:50 +02:00
Sandra
e3349bb864 saiph: exp: adding extrae config files 2020-10-01 17:52:50 +02:00
Sandra
ef592c060f Saiph: saiph shell 2020-10-01 17:52:50 +02:00
d210e96d18 Mark the launcher for upload 2020-10-01 10:48:54 +02:00
35f4ba545a Experimental GDB stage 2020-09-30 16:00:34 +02:00
a227084e39 tampi: add gitlab repo in tampiGit 2020-09-30 09:35:23 +02:00
ec21ba98b5 nbody: Allow custom reservation 2020-09-30 09:32:25 +02:00
69b1dcf08a nbody: forgot nixsetup attr 2020-09-30 09:24:14 +02:00
eb46e8f41b tampi: Disable the C++ MPI interface for OpenMPI
Fixes #30
2020-09-29 16:55:14 +02:00
fa734deaca extrae: remove home path from the xml 2020-09-28 14:11:14 +02:00
f72a4e9bc8 Enable symbolizer for asan 2020-09-28 13:07:07 +02:00
ae2cdf8790 numcomm: disable extrae 2020-09-28 13:06:35 +02:00
dadc02ca99 Update libpsm2: disabled by now 2020-09-28 13:01:31 +02:00
ff4d39233a Add valgrind stage 2020-09-28 13:00:59 +02:00
985091130d clang: use the commit hash as version 2020-09-28 12:56:13 +02:00
724b8f232a Intel MPI: release_mt -> release
Fixes issue #28
2020-09-28 12:21:41 +02:00
sandra
c1b64e8897 saiph: if extrae add some env var 2020-09-23 13:13:51 +02:00
sandra
c8915dfc89 saiph: cc is a experiment parameter 2020-09-23 13:10:12 +02:00
sandra
3419db1fc6 saiph: nixsetup to re-enter nix after the new added stage 2020-09-23 13:06:16 +02:00
sandra
32ac89b97f Saiph: cc is a parameter of the app, not defined at stdenv anymore
[its default value is clangOmpss2]
2020-09-23 12:58:51 +02:00
79fae204c2 Typo 2020-09-22 18:39:29 +02:00
ed7f6e3e97 nbody: Clean environment 2020-09-22 18:39:11 +02:00
1d5b528cd0 Change output log files 2020-09-22 18:38:37 +02:00
e3623b05fd Print the env via stderr 2020-09-22 18:38:25 +02:00
ebd947c544 Set default mpi implementation to Intel MPI 2020-09-22 18:02:32 +02:00
e044ce918e Add OpenMP noise section 2020-09-22 18:01:42 +02:00
7de0593e4b nanos6: Use git commit hash as version only 2020-09-22 17:42:36 +02:00
58e6c76349 Move apps to garlic 2020-09-22 17:41:40 +02:00
c5e225c778 saiph:Remove old experiments 2020-09-22 17:40:26 +02:00
edf429c932 Avoid loading .bashrc 2020-09-22 17:39:26 +02:00
cd37d513e8 saiph: Extrae with the correct MPI 2020-09-22 14:26:01 +02:00
ad4df5e05d saiph: Up to 4 numcomm experiment 2020-09-21 19:54:12 +02:00
5920c964d2 saiph: fix hardening and affinity 2020-09-21 19:23:17 +02:00
cc101ad1d3 Add saiph experiments 2020-09-21 17:30:24 +02:00
126f05e92c Simplify paths 2020-09-21 14:34:08 +02:00
dba1cc22bc New design with overlays 2020-09-16 12:22:55 +02:00
847b5b3e0a Add noise experiment with nbody 2020-09-03 16:19:52 +02:00
c4dc42c2a4 Add acctg-freq to sbatch stage 2020-09-03 16:19:19 +02:00
be95827927 Add loops param to control stage 2020-09-03 16:18:50 +02:00
bdc221ba81 Add perf for linux 4.9 2020-09-02 17:07:34 +02:00
8110bc2976 New stage design 2020-09-02 17:07:09 +02:00
d469ccd59d Add extrae and perf stages 2020-09-02 10:44:13 +02:00
d05d32edbf Fix repo path and bashrc 2020-08-31 17:56:58 +02:00
68c8691916 Update title 2020-08-31 17:34:37 +02:00
4fa8d8f683 Remove duplicated section 2020-08-31 17:33:37 +02:00
8613253395 Add MN4 section and rename 2020-08-31 17:29:32 +02:00
0cc5fe92e5 Add documentation on sources of variability 2020-08-28 20:01:58 +02:00
196b681586 mpich: add enableDebug option 2020-08-26 19:21:14 +02:00
87809ef903 Update extrae and enable man pages 2020-08-26 19:20:17 +02:00
09c2b9005a Testing nbody blocksize with impi
Weird run times with srun: Two exceed 20%. Relative times:

0.998649        0.998936        0.999409        1.00018         1.00191
0.998684        0.998936        0.999432        1.00041         1.00222
0.998776        0.999065        0.999527        1.00126         1.0024
0.998786        0.999084        0.999558        1.00138         1.00242
0.998856        0.999102        0.999727        1.00155         1.25585
0.998895        0.9992          0.999849        1.0018          1.27138
2020-08-25 18:39:31 +02:00
cfa5187988 nbody: use intel cc and mpi by default 2020-08-25 18:38:31 +02:00
27fbecf970 nbody: Use garlic git URL 2020-08-25 18:37:50 +02:00
839489d20f Remove nix-setup verbose info 2020-08-25 18:36:33 +02:00
d1e152a917 Exit on error in control script 2020-08-25 18:35:58 +02:00
f44f5b4338 Merge branch 'master' of bscpm02.bsc.es:rarias/bsc-nixpkgs 2020-08-25 15:16:51 +02:00
fa1f06ce31 Use nix copy to upload to mn4, fixes #15 2020-08-25 15:16:19 +02:00
cff653d164 Simplify dummy 2020-08-25 14:52:18 +02:00
67ac951289 Merge branch 'master' of bscpm02.bsc.es:rarias/bsc-nixpkgs into master 2020-08-25 13:00:10 +02:00
5b1a296640 Add build debug section 2020-08-25 12:59:44 +02:00
76b0a239e3 sbatch: Add reservation flag 2020-08-24 18:07:09 +02:00
1473874563 Use relative path in sbatch 2020-08-24 18:06:47 +02:00
4b27ceec6d Add clsync tool 2020-08-21 19:49:23 +02:00
5314f343b6 Add static nix with shell set to /bin/sh 2020-08-19 18:16:00 +02:00
14684040a5 Intra/inter node latency tests 2020-08-19 11:07:21 +02:00
c70d35cd50 Add MPICH with libfabric enabled 2020-08-19 11:06:23 +02:00
1e07be863a Add OSU test benchmarks 2020-08-18 18:28:30 +02:00
ecc01e4314 Add old SLURM, pmix and pmi2 versions 2020-08-17 18:55:01 +02:00
23fa7d8654 Update and fix Intel MPI, fixes #9 2020-08-17 18:51:51 +02:00
01295487d8 Add srun wrapper and use pmi2 2020-08-17 18:50:18 +02:00
df18435dfc Provide argvWrapper 2020-08-12 14:00:04 +02:00
338736d257 Add control and nix-setup layers 2020-08-11 12:05:43 +02:00
ef1aeb2cfa Run each experiment in a unique directory 2020-08-10 18:25:53 +02:00
8db4ef2594 Tidy nbody experiment 2020-08-10 16:06:42 +02:00
b777fbc6d5 Merge branch 'master' of bscpm02.bsc.es:rarias/bsc-nixpkgs 2020-08-10 14:15:07 +02:00
b9e9409a59 Success sbatch launch in MN4 with nbody seq 2020-08-10 14:13:28 +02:00
f4cbd654e2 slurm17: Add pmix library 2020-08-05 17:44:03 +02:00
9631f4c223 Add slurm 17.11.9-2, builds ok. 2020-08-05 10:57:05 +02:00
bab4c696d8 First successful execution with SLURM 2020-08-04 18:38:33 +02:00
39a639ac10 Testing SLURM jobs with ppong 2020-08-04 11:51:09 +02:00
85c15e9f3f Testing sbatch job 2020-07-31 18:47:33 +02:00
c7c8d858f4 Test runner script WIP 2020-07-29 18:38:39 +02:00
7c92f713cd Add ParaStation MPI implementation 2020-07-29 18:38:27 +02:00
5df174f24e Print the app being run 2020-07-29 18:36:35 +02:00
272511f058 Use local build for experiments 2020-07-27 19:14:29 +02:00
f1e891b6bf Show loop optimization problems 2020-07-27 19:13:21 +02:00
f6137a7bc0 Allow multiple space-separated flags 2020-07-27 19:13:11 +02:00
b93851ba93 Testing experiments with nbody 2020-07-27 17:55:56 +02:00
b042e783e5 Add CC and CXX names to compilers passthru 2020-07-27 17:55:35 +02:00
ea81c34f31 Merge branch 'master' of bscpm02.bsc.es:rarias/bsc-nixpkgs 2020-07-27 15:24:26 +02:00
97d69d25ee Fix Intel URLs
Fixes #5
2020-07-27 15:23:42 +02:00
0eec726335 Merge branch 'master' of bscpm02.bsc.es:rarias/bsc-nixpkgs 2020-07-27 13:18:18 +02:00
76ec5d5f16 Add dummy app 2020-07-27 13:17:52 +02:00
11901e77de Rename gauss-seidel to heat 2020-07-27 13:17:08 +02:00
979888eede Add generators for experiments 2020-07-27 11:14:33 +02:00
bbc851db78 Add config generation 2020-07-24 18:34:18 +02:00
9cba2d609c Working proof of concept for garlic experiments 2020-07-24 15:30:28 +02:00
bad6f3c761 Add garlic group 2020-07-24 13:24:30 +02:00
ac1523d946 Merge branch 'master' of bscpm02.bsc.es:rarias/bsc-nixpkgs 2020-07-24 11:33:44 +02:00
cf72d526ee Add mpptest 2020-07-24 11:33:05 +02:00
419418781f Revert "icc: use fetchTarball"
This reverts commit 215b104174e7bdcf9dfe6727683261eea54d036f.
2020-07-23 19:10:37 +02:00
f842b22330 Merge branch 'master' of bscpm02.bsc.es:rarias/bsc-nixpkgs 2020-07-23 19:00:09 +02:00
215b104174 icc: use fetchTarball 2020-07-23 19:00:03 +02:00
0a09affbc4 impi: use fetchTarball 2020-07-23 18:47:20 +02:00
1e54fbdc43 Fix libcxx include path 2020-07-21 16:31:31 +02:00
10b061aa96 icc: Fix updated url 2020-07-21 09:33:41 +02:00
ab0aa74590 Add garlic group with all apps 2020-07-20 17:31:17 +02:00
f07d87e97e impi: fix sed path and add link to intel64 2020-07-20 17:06:14 +02:00
ca0c1445ba Add custom mcxx version 2020-07-20 16:08:15 +02:00
b8d15e7d84 Ignore source folder 2020-07-20 16:07:26 +02:00
f20ef93c56 impi: allow echo as compiler for mpitool 2020-07-20 16:06:00 +02:00
ba13d37694 Remove custom nanos6 2020-07-20 16:05:32 +02:00
528cd7d205 hpcg: Missing TAMPI patch 2020-07-20 15:58:06 +02:00
60fdba40ae fwi: Use 4_MPI_ompss variant.
The -D_GNU_SOURCE define is required before mcc includes nanos6.h
2020-07-20 15:32:00 +02:00
c50158e3be Add fwi app 2020-07-20 12:58:54 +02:00
81bcf20419 hpccg: Copy binaries to output 2020-07-20 12:39:39 +02:00
321bfa290c Set serial compiler to Intel 2020-07-20 12:06:22 +02:00
3b23b230ed Add hpccg app 2020-07-20 12:04:15 +02:00
11b1652617 Unify package versions 2020-07-20 11:59:58 +02:00
d634538223 Use upstream nanos6 from git and disable hardening
The bindnow hardening option is incompatible with the ifunc symbol
resolution mechanism. All hardening is disabled as well.
2020-07-15 12:21:48 +02:00
cd409677b0 Add hpcg app 2020-07-13 16:46:44 +02:00
0b2f9df3ea lulesh: Use nanos6 from git 2020-07-13 16:45:36 +02:00
3298c5442c Add lulesh app 2020-07-13 14:09:20 +02:00
99b716db87 icc: Propagate gcc as is required to build 2020-07-13 14:07:24 +02:00
a78f0caec9 intel: Enable ifort compiler 2020-07-10 17:04:21 +02:00
dc12cbe045 creams: Cleaning unused dependencies 2020-07-10 17:02:33 +02:00
577a7c3190 Add CREAMS app 2020-07-10 16:49:39 +02:00
7c68efe743 mcxx: remove build dependency with icc 2020-07-10 16:42:33 +02:00
261d304961 Add ifort to intel compilers 2020-07-10 13:42:55 +02:00
0daa0b9c35 Remove patch phase for gauss seidel app 2020-07-10 13:19:48 +02:00
114a6b081f Add icc in mcxx to enable imc* wrappers 2020-07-10 13:17:45 +02:00
fdc8b68d9a Disable libstdcxxHook 2020-07-08 15:00:39 +02:00
5df94bfc66 Use current gcc version with mcxx 2020-07-08 14:59:19 +02:00
Kevin Sala
7b2c88be78 Adding Gauss-Seidel benchmark.
It does not work yet due to a gcc compilation issue.
2020-07-08 13:35:46 +02:00
Rodrigo
6f06022aa5 Typo in git repo 2020-07-08 12:16:59 +02:00
599e504f1a Remove libgomp and libiomp from clang 2020-07-06 15:58:09 +02:00
c03ac6d05a Remove unused clang nix file 2020-07-06 15:32:55 +02:00
a95f7fa35e Add details for xeon07 2020-07-06 11:19:20 +02:00
018bebc264 Disable debug in clang+ompss2 compiler 2020-07-06 11:15:55 +02:00
ee5964a984 Disable assertions in clang 2020-07-03 18:34:57 +02:00
0f2b4754fd Add a dummy bin for the examples 2020-07-03 18:26:04 +02:00
91c38d70a8 Add README 2020-07-03 18:25:22 +02:00
0663895b3f Ignore vim swap files 2020-07-03 15:14:08 +02:00
bdfcb65b7e Delete .swp file 2020-07-03 15:12:57 +02:00
7d8f86eaad saiph: sanitize address and compile for avx2 2020-07-03 11:13:41 +02:00
1e02ac9023 Enable compiler-rt for asan and update clang-ompss2 2020-07-02 21:10:44 +02:00
e0c5a3ebca Prefer makeFlags and use local directory 2020-07-02 15:54:41 +02:00
940c494d8e Use last intel compiler 2020 version 2020-07-02 15:32:52 +02:00
sandra
8032825765 Merge branch 'master' of bscpm02.bsc.es:rarias/bsc-nixpkgs 2020-07-02 14:47:28 +02:00
sandra
2189436619 Saiph compilation details 2020-07-02 14:47:10 +02:00
61f055e258 Remove nix debug from nbody 2020-07-02 12:59:37 +02:00
9662ff4138 Test nbody with icc 2020-07-02 12:36:38 +02:00
1f36743459 Add intel compiler 2020-07-02 12:36:22 +02:00
9ca29d5cf8 Use autoPatchelfHook for Intel MPI 2020-07-01 17:57:31 +02:00
9d65f2ae2c Add icc bin to out dir 2020-07-01 13:08:05 +02:00
Rodrigo
61c799e7e4 Intel compiler stub 2020-07-01 10:25:33 +02:00
33a46f41ce Add support for mcc and clang in Intel mpicc 2020-06-30 15:41:18 +02:00
a1f33444b5 Testing saiph app 2020-06-30 12:19:36 +02:00
74222706bf Add Intel MPI 2020-06-29 20:46:30 +02:00
5064170b31 Add mcxx to nbody: now builds 2020-06-29 17:40:25 +02:00
3ddd1721f4 Use gcc9 to compile mcxx 2020-06-29 17:39:12 +02:00
71430b3552 Add mercurium mcxx compiler 2020-06-29 17:32:30 +02:00
19c18627be Update nanos6 to last release (not working) 2020-06-29 16:53:57 +02:00
d6093681cc Move cpic to apps directory 2020-06-29 16:53:37 +02:00
08a3512bf1 Add nbody package (not working yet) 2020-06-29 16:42:25 +02:00
9a5759c45e Update nanos6-git version 2020-06-29 16:41:17 +02:00
Rodrigo Arias
a4d20edd8b Update nanos6 git 2020-06-29 14:44:17 +02:00
Rodrigo Arias
bd9788961b Use autoreconfHook for TAMPI 2020-06-26 10:16:41 +02:00
Rodrigo Arias
67c692b648 Add test subset 2020-06-25 21:02:49 +02:00
Rodrigo Arias
a83627890e Place packages together 2020-06-25 20:43:35 +02:00
Rodrigo Arias
53aebe5846 Use new format for urls 2020-06-25 20:05:12 +02:00
Rodrigo Arias
6b5e5aafa9 Add patched nix for BeeGFS 2020-06-25 15:13:20 +02:00
Rodrigo Arias
6dc2f8045d Update nanos6 2020-06-17 17:10:41 +02:00
Rodrigo Arias
040f205538 Use cpic from git 2020-06-17 16:39:04 +02:00
Rodrigo Arias
210e705653 Quiet cpic compilation 2020-06-17 16:31:05 +02:00
Rodrigo Arias
f5484cf5c3 Clean unused derivations 2020-06-17 13:26:14 +02:00
Rodrigo Arias
57f09c1967 Ignore result build folder 2020-06-17 13:23:59 +02:00
Rodrigo Arias
86b4b016b2 Remove unused helpers 2020-06-17 13:23:29 +02:00
Rodrigo Arias
ed829aace0 Clean cpic dependencies 2020-06-17 13:22:06 +02:00
Rodrigo Arias
d9ec42614c Fix libstdc++.so path 2020-06-17 13:21:44 +02:00
Rodrigo Arias
19e4e12126 Working stdenv with clang+ompss2 2020-06-17 13:00:49 +02:00
Rodrigo Arias
a8523c4b4e Add sandbox build test 2020-06-16 15:39:11 +02:00
Rodrigo Arias
63c78f50de Fix OpenMPI and Extrae clash 2020-06-15 17:19:36 +02:00
Rodrigo Arias
cae91fdcc0 Dont strip cpic symbols 2020-06-15 12:58:27 +02:00
Rodrigo Arias
fbbdf0740a Fix TAMPI derivation 2020-06-15 12:45:16 +02:00
Rodrigo Arias
98b51cfa6d Update nanos6-git from upstream 2020-06-15 12:04:05 +02:00
Rodrigo Arias
5cec4b02de Merge branch 'master' of https://github.com/rodarima/bsc-nixpkgs 2020-06-15 12:03:19 +02:00
Rodrigo Arias
ebea6f1e81 Use nanos6 from git for cpic 2020-06-15 12:03:11 +02:00
rodarima
2feaafb104
Delete .git.nix.swp 2020-06-15 11:56:44 +02:00
Rodrigo Arias
3c2b7c163f cpic: Compilation ok but fails to run 2020-06-15 11:54:22 +02:00
Rodrigo Arias
a331ec5f14 Add mode packages and cpic app 2020-06-11 19:04:16 +02:00
Rodrigo
ceaf273219 Proper install phase for llvm-ompss2 2020-06-11 11:33:29 +02:00
Rodrigo
3805eb0ceb Experimental llvm derivation 2020-06-10 19:35:11 +02:00
Rodrigo
37b49e1dd3 Add nanos6 git version 2020-06-10 18:55:30 +02:00
Rodrigo
b600bb77d4 Compile extrae with clang 2020-06-10 14:28:10 +02:00
Rodrigo
20e3f4d4f0 Add compilers 2020-06-09 18:21:02 +02:00
Rodrigo
5a4068b497 Enable extrae mpi implementation input 2020-06-08 18:31:23 +02:00
Rodrigo
83770803e5 Initial test packages 2020-06-08 18:01:33 +02:00
127 changed files with 49440 additions and 99 deletions

15
.gitea/workflows/ci.yaml Normal file
View File

@ -0,0 +1,15 @@
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:all:
runs-on: native
steps:
- uses: https://gitea.com/ScMi1/checkout@v1.4
- run: nix build -L --no-link --print-out-paths .#bsc-ci.all

2
.gitignore vendored
View File

@ -1,3 +1,3 @@
*.swp
**.swp
/result
/misc

6
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,6 @@
build:bsc-ci.all:
stage: build
tags:
- nix
script:
- nix build -L --no-link --print-out-paths .#bsc-ci.all

21
COPYING Normal file
View File

@ -0,0 +1,21 @@
Copyright (c) 2020-2025 Barcelona Supercomputing Center
Copyright (c) 2003-2020 Eelco Dolstra and the Nixpkgs/NixOS contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

9
README.md Normal file
View File

@ -0,0 +1,9 @@
# Jungle
This repository provides two components that can be used independently:
- A Nix overlay with packages used at BSC (formerly known as bscpkgs). Access
them directly with `nix shell .#<pkgname>`.
- NixOS configurations for jungle machines. Use `nixos-rebuild switch --flake .`
to upgrade the current machine.

19
default.nix Normal file
View File

@ -0,0 +1,19 @@
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;
};
in
{ overlays ? [ ]
, nixpkgs ? fetchedNixpkgs
, ...
}@attrs:
import nixpkgs (
(builtins.removeAttrs attrs [ "overlays" "nixpkgs" ]) //
{ overlays = [ bscOverlay ] ++ overlays; }
)

21
flake.lock generated
View File

@ -23,26 +23,6 @@
"type": "github"
}
},
"bscpkgs": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1749650500,
"narHash": "sha256-2MHfVPV6RA7qPSCtXh4+KK0F0UjN+J4z8//+n6NK7Xs=",
"ref": "refs/heads/master",
"rev": "9d1944c658929b6f98b3f3803fead4d1b91c4405",
"revCount": 961,
"type": "git",
"url": "https://git.sr.ht/~rodarima/bscpkgs"
},
"original": {
"type": "git",
"url": "https://git.sr.ht/~rodarima/bscpkgs"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
@ -105,7 +85,6 @@
"root": {
"inputs": {
"agenix": "agenix",
"bscpkgs": "bscpkgs",
"nixpkgs": "nixpkgs"
}
},

View File

@ -3,17 +3,22 @@
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixpkgs";
bscpkgs.url = "git+https://git.sr.ht/~rodarima/bscpkgs";
bscpkgs.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, agenix, bscpkgs, ... }:
outputs = { self, nixpkgs, agenix, ... }:
let
mkConf = name: nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit nixpkgs bscpkgs agenix; theFlake = self; };
specialArgs = { inherit nixpkgs agenix; theFlake = self; };
modules = [ "${self.outPath}/m/${name}/configuration.nix" ];
};
# For now we only support x86
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
overlays = [ self.overlays.default ];
config.allowUnfree = true;
};
in
{
nixosConfigurations = {
@ -31,9 +36,17 @@ in
weasel = mkConf "weasel";
};
packages.x86_64-linux = self.nixosConfigurations.hut.pkgs // {
bscpkgs = bscpkgs.packages.x86_64-linux;
nixpkgs = nixpkgs.legacyPackages.x86_64-linux;
bscOverlay = import ./overlay.nix;
overlays.default = self.bscOverlay;
# full nixpkgs with our overlay applied
legacyPackages.${system} = pkgs;
hydraJobs = {
inherit (self.legacyPackages.${system}.bsc-ci) tests pkgs cross;
};
# propagate nixpkgs lib, so we can do bscpkgs.lib
inherit (nixpkgs) lib;
};
}

View File

@ -11,11 +11,13 @@
./base/hw.nix
./base/net.nix
./base/nix.nix
./base/sys-devices.nix
./base/ntp.nix
./base/rev.nix
./base/ssh.nix
./base/users.nix
./base/watchdog.nix
./base/zsh.nix
./base/fish.nix
];
}

View File

@ -5,6 +5,8 @@
vim wget git htop tmux pciutils tcpdump ripgrep nix-index nixos-option
nix-diff ipmitool freeipmi ethtool lm_sensors cmake gnumake file tree
ncdu config.boot.kernelPackages.perf ldns pv
nix-output-monitor
nixfmt-rfc-style
# From bsckgs overlay
osumb
];

4
m/common/base/fish.nix Normal file
View File

@ -0,0 +1,4 @@
{ ... }:
{
programs.fish.enable = true;
}

View File

@ -1,9 +1,8 @@
{ pkgs, nixpkgs, bscpkgs, theFlake, ... }:
{ pkgs, nixpkgs, theFlake, ... }:
{
nixpkgs.overlays = [
bscpkgs.bscOverlay
(import ../../../pkgs/overlay.nix)
(import ../../../overlay.nix)
];
nixpkgs.config.allowUnfree = true;

View File

@ -0,0 +1,9 @@
{
nix.settings.system-features = [ "sys-devices" ];
programs.nix-required-mounts.enable = true;
programs.nix-required-mounts.allowedPatterns.sys-devices.paths = [
"/sys/devices/system/cpu"
"/sys/devices/system/node"
];
}

View File

@ -87,6 +87,12 @@
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIIFiqXqt88VuUfyANkZyLJNiuroIITaGlOOTMhVDKjf abonerib@bsc"
];
shell = pkgs.fish;
packages = with pkgs; [
starship
jujutsu
neovim
];
};
vlopez = {

View File

@ -4,6 +4,7 @@
imports = [
../common/ssf.nix
../module/hut-substituter.nix
./virtualization.nix
];
# Select this using the ID to avoid mismatches
@ -30,4 +31,5 @@
prefixLength = 24;
} ];
};
}

View File

@ -0,0 +1,40 @@
{
lib,
pkgs,
config,
...
}:
{
# Enable common container config files in /etc/containers
virtualisation.containers.enable = true;
virtualisation = {
podman = {
enable = true;
# Required for containers under podman-compose to be able to talk to each other.
defaultNetwork.settings.dns_enabled = true;
};
};
# We cannot use /home since nfs does not support fileattrs needed by podman
systemd.tmpfiles.settings = {
"podman-users" = lib.mapAttrs' (
name: value:
lib.nameValuePair ("/var/lib/podman-users/" + name) {
d = {
group = value.group;
mode = value.homeMode;
user = name;
};
}
) (lib.filterAttrs (_: x: x.isNormalUser) config.users.users);
};
# Useful other development tools
environment.systemPackages = with pkgs; [
dive # look into docker image layers
podman-tui # status of containers in the terminal
podman-compose # start group of containers for dev
];
}

134
overlay.nix Normal file
View File

@ -0,0 +1,134 @@
final: /* Future last stage */
prev: /* Previous stage */
with final.lib;
let
callPackage = final.callPackage;
bscPkgs = {
amd-uprof = prev.callPackage ./pkgs/amd-uprof/default.nix { };
bench6 = callPackage ./pkgs/bench6/default.nix { };
bigotes = callPackage ./pkgs/bigotes/default.nix { };
clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { };
clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; };
clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmp; };
clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; };
clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { };
cudainfo = prev.callPackage ./pkgs/cudainfo/default.nix { };
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
# FIXME: Extend this to all linuxPackages variants. Open problem, see:
# https://discourse.nixos.org/t/whats-the-right-way-to-make-a-custom-kernel-module-available/4636
linuxPackages = prev.linuxPackages.extend (_final: _prev: {
amd-uprof-driver = _prev.callPackage ./pkgs/amd-uprof/driver.nix { };
});
linuxPackages_latest = prev.linuxPackages_latest.extend(_final: _prev: {
amd-uprof-driver = _prev.callPackage ./pkgs/amd-uprof/driver.nix { };
});
lmbench = callPackage ./pkgs/lmbench/default.nix { };
mcxx = callPackage ./pkgs/mcxx/default.nix { };
meteocat-exporter = prev.callPackage ./pkgs/meteocat-exporter/default.nix { };
mpi = final.mpich; # Set MPICH as default
mpich = callPackage ./pkgs/mpich/default.nix { mpich = prev.mpich; };
nanos6 = callPackage ./pkgs/nanos6/default.nix { };
nanos6Debug = final.nanos6.override { enableDebug = true; };
nixtools = callPackage ./pkgs/nixtools/default.nix { };
# Broken because of pkgsStatic.libcap
# See: https://github.com/NixOS/nixpkgs/pull/268791
#nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { };
nodes = callPackage ./pkgs/nodes/default.nix { };
nosv = callPackage ./pkgs/nosv/default.nix { };
openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; };
openmpv = final.openmp.override { enableNosv = true; enableOvni = true; };
osumb = callPackage ./pkgs/osu/default.nix { };
ovni = callPackage ./pkgs/ovni/default.nix { };
ovniGit = final.ovni.override { useGit = true; };
paraverKernel = callPackage ./pkgs/paraver/kernel.nix { };
prometheus-slurm-exporter = prev.callPackage ./pkgs/slurm-exporter/default.nix { };
#pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned
#psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned
sonar = callPackage ./pkgs/sonar/default.nix { };
stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; };
stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; };
stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; };
stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; };
tagaspi = callPackage ./pkgs/tagaspi/default.nix { };
tampi = callPackage ./pkgs/tampi/default.nix { };
upc-qaire-exporter = prev.callPackage ./pkgs/upc-qaire-exporter/default.nix { };
wxparaver = callPackage ./pkgs/paraver/default.nix { };
};
tests = rec {
#hwloc = callPackage ./test/bugs/hwloc.nix { }; # Broken, no /sys
#sigsegv = callPackage ./test/reproducers/sigsegv.nix { };
hello-c = callPackage ./test/compilers/hello-c.nix { };
hello-cpp = callPackage ./test/compilers/hello-cpp.nix { };
lto = callPackage ./test/compilers/lto.nix { };
asan = callPackage ./test/compilers/asan.nix { };
intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; };
intel2023-icc-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv-icc; };
intel2023-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv; };
intel2023-icc-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv-icc; };
intel2023-ifort = callPackage ./test/compilers/hello-f.nix {
stdenv = final.intelPackages_2023.stdenv-ifort;
};
clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; };
clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; };
clangOmpss2-task = callPackage ./test/compilers/ompss2.nix {
stdenv = final.stdenvClangOmpss2Nanos6;
};
clangNodes-task = callPackage ./test/compilers/ompss2.nix {
stdenv = final.stdenvClangOmpss2Nodes;
};
clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix {
stdenv = final.stdenvClangOmpss2Nodes;
};
clangNosvOmpv-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix {
stdenv = final.stdenvClangOmpss2NodesOmpv;
};
clangNosvOmpv-ld = callPackage ./test/compilers/clang-openmp-ld.nix {
stdenv = final.stdenvClangOmpss2NodesOmpv;
};
};
pkgs = filterAttrs (_: isDerivation) bscPkgs;
crossTargets = [ "riscv64" ];
cross = prev.lib.genAttrs crossTargets (target:
final.pkgsCross.${target}.bsc-ci.pkgs
);
buildList = name: paths:
final.runCommandLocal name { } ''
printf '%s\n' ${toString paths} | tee $out
'';
buildList' = name: paths:
final.runCommandLocal name { } ''
deps="${toString paths}"
cat $deps
printf '%s\n' $deps >$out
'';
crossList = builtins.mapAttrs (t: v: buildList t (builtins.attrValues v)) cross;
pkgsList = buildList "ci-pkgs" (builtins.attrValues pkgs);
testList = buildList "ci-tests" (collect isDerivation tests);
all = buildList' "ci-all" [ pkgsList testList ];
in bscPkgs // {
# Prevent accidental usage of bsc attribute
bsc = throw "the bsc attribute is deprecated, packages are now in the root";
# Internal for our CI tests
bsc-ci = {
inherit pkgs pkgsList;
inherit tests testList;
inherit cross crossList;
inherit all;
};
}

View File

@ -0,0 +1,25 @@
{ stdenv, lib, fetchurl, pkg-config, glib, libuuid, popt, elfutils, swig4, python3 }:
stdenv.mkDerivation rec {
name = "babeltrace-1.5.8";
src = fetchurl {
url = "https://www.efficios.com/files/babeltrace/${name}.tar.bz2";
sha256 = "1hkg3phnamxfrhwzmiiirbhdgckzfkqwhajl0lmr1wfps7j47wcz";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ glib libuuid popt elfutils swig4 python3 ];
meta = with lib; {
description = "Command-line tool and library to read and convert LTTng tracefiles";
homepage = "https://www.efficios.com/babeltrace";
license = licenses.mit;
platforms = platforms.linux;
maintainers = [ maintainers.bjornfor ];
};
configureFlags = [
"--enable-python-bindings"
];
}

View File

@ -0,0 +1,34 @@
{
stdenv
, fetchurl
, pkg-config
, glib
, libuuid
, popt
, elfutils
, python3
, swig4
, ncurses
, breakpointHook
}:
stdenv.mkDerivation rec {
pname = "babeltrace2";
version = "2.0.3";
src = fetchurl {
url = "https://www.efficios.com/files/babeltrace/${pname}-${version}.tar.bz2";
sha256 = "1804pyq7fz6rkcz4r1abkkn0pfnss13m6fd8if32s42l4lajadm5";
};
enableParallelBuilding = true;
nativeBuildInputs = [ pkg-config ];
buildInputs = [ glib libuuid popt elfutils python3 swig4 ncurses breakpointHook ];
hardeningDisable = [ "all" ];
configureFlags = [
"--enable-python-plugins"
"--enable-python-bindings"
];
}

61
pkgs/bench6/default.nix Normal file
View File

@ -0,0 +1,61 @@
{
stdenv
, bigotes
, cmake
, clangOmpss2
, openmp
, openmpv
, nanos6
, nodes
, nosv
, mpi
, tampi
, openblas
, ovni
, gitBranch ? "master"
, gitURL ? "ssh://git@bscpm04.bsc.es/rarias/bench6.git"
, gitCommit ? "bf29a53113737c3aa74d2fe3d55f59868faea7b4"
}:
stdenv.mkDerivation rec {
pname = "bench6";
version = "${src.shortRev}";
src = builtins.fetchGit {
url = gitURL;
ref = gitBranch;
rev = gitCommit;
};
nativeBuildInputs = [
cmake
clangOmpss2
];
buildInputs = [
bigotes
openmp
openmpv
nanos6
nodes
nosv
mpi
tampi
openblas
openblas.dev
ovni
];
env = {
NANOS6_HOME = nanos6;
NODES_HOME = nodes;
NOSV_HOME = nosv;
};
cmakeFlags = [
"-DCMAKE_C_COMPILER=clang"
"-DCMAKE_CXX_COMPILER=clang++"
];
hardeningDisable = [ "all" ];
dontStrip = true;
}

17
pkgs/bigotes/default.nix Normal file
View File

@ -0,0 +1,17 @@
{
stdenv
, fetchFromGitHub
, cmake
}:
stdenv.mkDerivation {
pname = "bigotes";
version = "9dce13";
src = fetchFromGitHub {
owner = "rodarima";
repo = "bigotes";
rev = "9dce13446a8da30bea552d569d260d54e0188518";
sha256 = "sha256-ktxM3pXiL8YXSK+/IKWYadijhYXqGoLY6adLk36iigE=";
};
nativeBuildInputs = [ cmake ];
}

54
pkgs/clsync/default.nix Normal file
View File

@ -0,0 +1,54 @@
{ stdenv
, fetchFromGitHub
, libcap
, libcgroup
, libmhash
, doxygen
, graphviz
, autoreconfHook
, pkg-config
, glib
}:
let
version = "0.4.4";
in stdenv.mkDerivation {
pname = "clsync";
inherit version;
src = fetchFromGitHub {
repo = "clsync";
owner = "clsync";
rev = "v${version}";
sha256 = "0sdiyfwp0iqr6l1sirm51pirzmhi4jzgky5pzfj24nn71q3fwqgz";
};
outputs = [ "out" "dev" ];
buildInputs = [
autoreconfHook
libcap
libcgroup
libmhash
doxygen
graphviz
pkg-config
glib
];
preConfigure = ''
./configure --help
'';
enableParallelBuilding = true;
meta = with lib; {
description = "File live sync daemon based on inotify/kqueue/bsm (Linux, FreeBSD), written in GNU C";
homepage = "https://github.com/clsync/clsync";
license = licenses.gpl3Plus;
maintainers = [ ];
platforms = platforms.linux;
};
}

51
pkgs/cn6/default.nix Normal file
View File

@ -0,0 +1,51 @@
{
stdenv
, lib
, babeltrace2
, pkg-config
, uthash
, enableTest ? false
, mpi ? null
, clangOmpss2 ? null
, tampi ? null
}:
with lib;
assert (enableTest -> (mpi != null));
assert (enableTest -> (clangOmpss2 != null));
assert (enableTest -> (tampi != null));
stdenv.mkDerivation rec {
pname = "cn6";
version = "${src.shortRev}";
buildInputs = [
babeltrace2
pkg-config
uthash
mpi
] ++ optionals (enableTest) [ mpi clangOmpss2 tampi ];
src = builtins.fetchGit {
url = "ssh://git@bscpm04.bsc.es/rarias/cn6.git";
ref = "master";
rev = "c72c3b66b720c2a33950f536fc819051c8f20a69";
};
makeFlags = [ "PREFIX=$(out)" ];
postBuild = optionalString (enableTest) ''
(
cd test
make timediff timediff_mpi
)
'';
postInstall = optionalString (enableTest) ''
(
cd test
cp timediff timediff_mpi sync-err.sh $out/bin/
)
'';
}

21
pkgs/cpuid/default.nix Normal file
View File

@ -0,0 +1,21 @@
{
stdenv
, perl # For the pod2man command
}:
stdenv.mkDerivation rec {
version = "20201006";
pname = "cpuid";
buildInputs = [ perl ];
# Replace /usr install directory for $out
postPatch = ''
sed -i "s@/usr@$out@g" Makefile
'';
src = builtins.fetchTarball {
url = "http://www.etallen.com/cpuid/${pname}-${version}.src.tar.gz";
sha256 = "04qhs938gs1kjxpsrnfy6lbsircsprfyh4db62s5cf83a1nrwn9w";
};
}

25
pkgs/dummy/default.nix Normal file
View File

@ -0,0 +1,25 @@
{
stdenv
}:
stdenv.mkDerivation rec {
name = "dummy";
src = null;
dontUnpack = true;
dontBuild = true;
programPath = "/bin/dummy";
installPhase = ''
mkdir -p $out/bin
cat > $out/bin/dummy <<EOF
#!/bin/sh
echo Hello worlda!
EOF
chmod +x $out/bin/dummy
'';
}

13
pkgs/extrae/PTR.patch Normal file
View File

@ -0,0 +1,13 @@
diff --git a/src/merger/common/bfd_manager.c b/src/merger/common/bfd_manager.c
index 5f9dacf9..5231e3eb 100644
--- a/src/merger/common/bfd_manager.c
+++ b/src/merger/common/bfd_manager.c
@@ -225,7 +225,7 @@ asymbol **BFDmanager_getDefaultSymbols (void)
*
* @return No return value.
*/
-static void BFDmanager_findAddressInSection (bfd * abfd, asection * section, PTR data)
+static void BFDmanager_findAddressInSection (bfd * abfd, asection * section, void * data)
{
#if HAVE_BFD_GET_SECTION_SIZE || HAVE_BFD_SECTION_SIZE || HAVE_BFD_GET_SECTION_SIZE_BEFORE_RELOC
bfd_size_type size;

113
pkgs/extrae/default.nix Normal file
View File

@ -0,0 +1,113 @@
{ stdenv
, lib
, fetchFromGitHub
, boost
, libdwarf
, libelf
, libxml2
, libunwind
, papi
, binutils-unwrapped
, libiberty
, gfortran
, xml2
, which
, libbfd
, mpi ? null
, cuda ? null
, llvmPackages
, autoreconfHook
#, python3Packages
, installShellFiles
, symlinkJoin
}:
let
libdwarfBundle = symlinkJoin {
name = "libdwarfBundle";
paths = [ libdwarf.dev libdwarf.lib libdwarf.out ];
};
in
stdenv.mkDerivation rec {
pname = "extrae";
version = "4.0.1";
src = fetchFromGitHub {
owner = "bsc-performance-tools";
repo = "extrae";
rev = "${version}";
sha256 = "SlMYxNQXJ0Xg90HmpnotUR3tEPVVBXhk1NtEBJwGBR4=";
};
patches = [
# FIXME: Waiting for German to merge this patch. Still not in master, merged
# on 2023-03-01 in devel branch (after 3 years), see:
# https://github.com/bsc-performance-tools/extrae/pull/45
./use-command.patch
# https://github.com/bsc-performance-tools/extrae/issues/71
./PTR.patch
];
enableParallelBuilding = true;
hardeningDisable = [ "all" ];
nativeBuildInputs = [ installShellFiles ];
buildInputs = [
autoreconfHook
gfortran
libunwind
binutils-unwrapped
boost
boost.dev
libiberty
mpi
xml2
which
libxml2.dev
libbfd
#python3Packages.sphinx
]
++ lib.optional stdenv.cc.isClang llvmPackages.openmp;
preConfigure = ''
configureFlagsArray=(
--enable-posix-clock
--with-binutils="${binutils-unwrapped} ${libiberty}"
--with-dwarf=${libdwarfBundle}
--with-elf=${libelf}
--with-boost=${boost.dev}
--enable-instrument-io
--enable-instrument-dynamic-memory
--without-memkind
--enable-merge-in-trace
--disable-online
--without-opencl
--enable-pebs-sampling
--enable-sampling
--with-unwind=${libunwind.dev}
--with-xml-prefix=${libxml2.dev}
--with-papi=${papi}
${if (mpi != null) then ''--with-mpi=${mpi}''
else ''--without-mpi''}
--without-dyninst)
'';
# Install the manuals only by hand, as we don't want to pull the complete
# LaTeX world
# FIXME: sphinx is broken
#postBuild = ''
# make -C docs man
#'';
#
#postInstall = ''
# installManPage docs/builds/man/*/*
#'';
# ++ (
# if (openmp)
# then [ "--enable-openmp" ]
# else []
# );
}

View File

@ -0,0 +1,24 @@
diff --git a/substitute b/substitute
index d5615606..82ca91a5 100755
--- a/substitute
+++ b/substitute
@@ -16,7 +16,7 @@ UNAME=`uname`
if [ "${UNAME}" = "Darwin" -o "${UNAME}" = "AIX" ] ; then
TMPFILE=substitute-$$
${SED} "s|${KEY}|${VALUE}|g" < ${FILE} >${TMPFILE}
- /bin/mv -f ${TMPFILE} ${FILE}
+ command mv -f ${TMPFILE} ${FILE}
else
${SED} "s|${KEY}|${VALUE}|g" -i ${FILE}
fi
diff --git a/substitute-all b/substitute-all
index 48c6b76a..eda7a0f2 100755
--- a/substitute-all
+++ b/substitute-all
@@ -23,5 +23,5 @@ fi
echo "Applying modification in ${PATHTOCHANGE} - Key = ${KEY} for value = ${VALUE}"
-/usr/bin/find ${PATHTOCHANGE} -type f -exec ${SCRIPT_LOCATION} "${SED}" "${KEY}" "${VALUE}" {} \;
+command find ${PATHTOCHANGE} -type f -exec ${SCRIPT_LOCATION} "${SED}" "${KEY}" "${VALUE}" {} \;

58
pkgs/fftw/default.nix Normal file
View File

@ -0,0 +1,58 @@
{ fetchurl, stdenv, lib, llvmPackages ? null, precision ? "double", perl, mpi }:
with lib;
assert stdenv.cc.isClang -> llvmPackages != null;
assert elem precision [ "single" "double" "long-double" "quad-precision" ];
let
version = "3.3.8";
withDoc = stdenv.cc.isGNU;
in
stdenv.mkDerivation {
name = "fftw-${precision}-${version}";
src = fetchurl {
urls = [
"http://fftw.org/fftw-${version}.tar.gz"
"ftp://ftp.fftw.org/pub/fftw/fftw-${version}.tar.gz"
];
sha256 = "00z3k8fq561wq2khssqg0kallk0504dzlx989x3vvicjdqpjc4v1";
};
outputs = [ "out" "dev" "man" ]
++ optional withDoc "info"; # it's dev-doc only
outputBin = "dev"; # fftw-wisdom
buildInputs = [ mpi ]
++ lib.optionals stdenv.cc.isClang [
# TODO: This may mismatch the LLVM version sin the stdenv, see #79818.
llvmPackages.openmp
];
configureFlags =
[ "--enable-shared"
"--enable-threads"
"--enable-mpi"
"--disable-openmp"
]
++ optional (precision != "double") "--enable-${precision}"
# all x86_64 have sse2
# however, not all float sizes fit
++ optional (stdenv.isx86_64 && (precision == "single" || precision == "double") ) "--enable-sse2"
# doc generation causes Fortran wrapper generation which hard-codes gcc
++ optional (!withDoc) "--disable-doc";
enableParallelBuilding = true;
checkInputs = [ perl ];
meta = with lib; {
description = "Fastest Fourier Transform in the West library";
homepage = "http://www.fftw.org/";
license = licenses.gpl2Plus;
maintainers = [ maintainers.spwhitt ];
platforms = platforms.unix;
};
}

55
pkgs/gpi-2/default.nix Normal file
View File

@ -0,0 +1,55 @@
{
stdenv
, fetchurl
, symlinkJoin
, slurm
, rdma-core
, autoconf
, automake
, libtool
, mpi
, rsync
, gfortran
}:
let
rdma-core-all = symlinkJoin {
name ="rdma-core-all";
paths = [ rdma-core.dev rdma-core.out ];
};
mpiAll = symlinkJoin {
name = "mpi-all";
paths = [ mpi.all ];
};
in
stdenv.mkDerivation rec {
pname = "GPI-2";
version = "tagaspi-2021.11";
src = fetchurl {
url = "https://pm.bsc.es/gitlab/interoperability/extern/GPI-2/-/archive/${version}/GPI-2-${version}.tar.gz";
hash = "sha256-eY2wpyTpnOXRoAcYoAP82Jq9Q7p5WwDpMj+f1vEX5zw=";
};
enableParallelBuilding = true;
patches = [ ./rdma-core.patch ./max-mem.patch ];
preConfigure = ''
patchShebangs autogen.sh
./autogen.sh
'';
configureFlags = [
"--with-infiniband=${rdma-core-all}"
"--with-mpi=${mpiAll}"
"--with-slurm"
"CFLAGS=-fPIC"
"CXXFLAGS=-fPIC"
];
buildInputs = [ slurm mpiAll rdma-core-all autoconf automake libtool rsync gfortran ];
hardeningDisable = [ "all" ];
}

10
pkgs/gpi-2/max-mem.patch Normal file
View File

@ -0,0 +1,10 @@
--- a/tests/tests/segments/max_mem.c 2025-09-12 13:30:53.449353591 +0200
+++ b/tests/tests/segments/max_mem.c 2025-09-12 13:33:49.750352401 +0200
@@ -1,5 +1,7 @@
#include <test_utils.h>
+gaspi_size_t gaspi_get_system_mem (void);
+
/* Test allocates 45% of system memory and creates a segment that
large or if several ranks per node exist, divided among that
number */

View File

@ -0,0 +1,12 @@
--- a/src/devices/ib/GPI2_IB.h 2025-09-12 13:25:31.564181121 +0200
+++ b/src/devices/ib/GPI2_IB.h 2025-09-12 13:24:49.105422150 +0200
@@ -26,6 +26,9 @@ along with GPI-2. If not, see <http://ww
#include "GPI2_Dev.h"
+/* Missing prototype as driver.h is now private */
+int ibv_read_sysfs_file(const char *dir, const char *file, char *buf, size_t size);
+
#define GASPI_GID_INDEX (0)
#define PORT_LINK_UP (5)
#define MAX_INLINE_BYTES (128)

View File

@ -0,0 +1,46 @@
From 1454525f70b43a6957b7c9e1870e997368787da3 Mon Sep 17 00:00:00 2001
From: Samuel Dionne-Riel <samuel@dionne-riel.com>
Date: Fri, 8 Nov 2019 21:59:21 -0500
Subject: [PATCH] Fix cross-compilation by looking for `ar`.
---
Makefile.am | 2 +-
configure.ac | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index d18c49b8..b1b53338 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -494,7 +494,7 @@ CCC=@CXX@
# INSTALL_INFO
# LN_S
-AR=ar
+AR=@AR@
ETAGS=etags
ETAGSFLAGS=
# Flag that tells etags to assume C++.
diff --git a/configure.ac b/configure.ac
index 28e75f17..2449b9f5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,6 +37,7 @@ AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([src/include/config.h:src/include/config.hin])
AC_CONFIG_SRCDIR([src/roff/groff/groff.cpp])
+AC_CONFIG_MACRO_DIR([m4])
AC_USE_SYSTEM_EXTENSIONS
@@ -72,6 +73,7 @@ GROFF_DOC_CHECK
GROFF_MAKEINFO
GROFF_TEXI2DVI
AC_PROG_RANLIB
+AC_CHECK_TOOL([AR], [ar], [ar])
GROFF_INSTALL_SH
GROFF_INSTALL_INFO
AC_PROG_INSTALL
--
2.23.0

127
pkgs/groff/default.nix Normal file
View File

@ -0,0 +1,127 @@
{ stdenv, lib, fetchurl, perl
, ghostscript #for postscript and html output
, psutils, netpbm #for html output
, buildPackages
, autoreconfHook
, pkg-config
, texinfo
}:
stdenv.mkDerivation rec {
pname = "groff";
version = "1.22.4";
src = fetchurl {
url = "mirror://gnu/groff/${pname}-${version}.tar.gz";
sha256 = "14q2mldnr1vx0l9lqp9v2f6iww24gj28iyh4j2211hyynx67p3p7";
};
enableParallelBuilding = false;
patches = [
./0001-Fix-cross-compilation-by-looking-for-ar.patch
];
postPatch = lib.optionalString (psutils != null) ''
substituteInPlace src/preproc/html/pre-html.cpp \
--replace "psselect" "${psutils}/bin/psselect"
'' + lib.optionalString (netpbm != null) ''
substituteInPlace src/preproc/html/pre-html.cpp \
--replace "pnmcut" "${lib.getBin netpbm}/bin/pnmcut" \
--replace "pnmcrop" "${lib.getBin netpbm}/bin/pnmcrop" \
--replace "pnmtopng" "${lib.getBin netpbm}/bin/pnmtopng"
substituteInPlace tmac/www.tmac.in \
--replace "pnmcrop" "${lib.getBin netpbm}/bin/pnmcrop" \
--replace "pngtopnm" "${lib.getBin netpbm}/bin/pngtopnm" \
--replace "@PNMTOPS_NOSETPAGE@" "${lib.getBin netpbm}/bin/pnmtops -nosetpage"
'';
buildInputs = [ ghostscript psutils netpbm perl ];
nativeBuildInputs = [ autoreconfHook pkg-config texinfo ];
# Builds running without a chroot environment may detect the presence
# of /usr/X11 in the host system, leading to an impure build of the
# package. To avoid this issue, X11 support is explicitly disabled.
# Note: If we ever want to *enable* X11 support, then we'll probably
# have to pass "--with-appresdir", too.
configureFlags = [
"--without-x"
] ++ lib.optionals (ghostscript != null) [
"--with-gs=${ghostscript}/bin/gs"
] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"ac_cv_path_PERL=${buildPackages.perl}/bin/perl"
];
makeFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
# Trick to get the build system find the proper 'native' groff
# http://www.mail-archive.com/bug-groff@gnu.org/msg01335.html
"GROFF_BIN_PATH=${buildPackages.groff}/bin"
"GROFFBIN=${buildPackages.groff}/bin/groff"
];
doCheck = true;
postInstall = ''
for f in 'man.local' 'mdoc.local'; do
cat '${./site.tmac}' >>"$out/share/groff/site-tmac/$f"
done
moveToOutput bin/gropdf $out
moveToOutput bin/pdfmom $out
moveToOutput bin/roff2text $out
moveToOutput bin/roff2pdf $out
moveToOutput bin/roff2ps $out
moveToOutput bin/roff2dvi $out
moveToOutput bin/roff2ps $out
moveToOutput bin/roff2html $out
moveToOutput bin/glilypond $out
moveToOutput bin/mmroff $out
moveToOutput bin/roff2x $out
moveToOutput bin/afmtodit $out
moveToOutput bin/gperl $out
moveToOutput bin/chem $out
moveToOutput share/groff/${version}/font/devpdf $out
# idk if this is needed, but Fedora does it
moveToOutput share/groff/${version}/tmac/pdf.tmac $out
moveToOutput bin/gpinyin $out
moveToOutput lib/groff/gpinyin $out
substituteInPlace $out/bin/gpinyin \
--replace $out/lib/groff/gpinyin $out/lib/groff/gpinyin
moveToOutput bin/groffer $out
moveToOutput lib/groff/groffer $out
substituteInPlace $out/bin/groffer \
--replace $out/lib/groff/groffer $out/lib/groff/groffer
moveToOutput bin/grog $out
moveToOutput lib/groff/grog $out
substituteInPlace $out/bin/grog \
--replace $out/lib/groff/grog $out/lib/groff/grog
'' + lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
find $out/ -type f -print0 | xargs --null sed -i 's|${buildPackages.perl}|${perl}|'
'';
meta = with lib; {
homepage = "https://www.gnu.org/software/groff/";
description = "GNU Troff, a typesetting package that reads plain text and produces formatted output";
license = licenses.gpl3Plus;
platforms = platforms.all;
maintainers = with maintainers; [ pSub ];
longDescription = ''
groff is the GNU implementation of troff, a document formatting
system. Included in this release are implementations of troff,
pic, eqn, tbl, grn, refer, -man, -mdoc, -mom, and -ms macros,
and drivers for PostScript, TeX dvi format, HP LaserJet 4
printers, Canon CAPSL printers, HTML and XHTML format (beta
status), and typewriter-like devices. Also included is a
modified version of the Berkeley -me macros, the enhanced
version gxditview of the X11 xditview previewer, and an
implementation of the -mm macros.
'';
};
}

16
pkgs/groff/site.tmac Normal file
View File

@ -0,0 +1,16 @@
.
.if n \{\
. \" Character translations for non-keyboard
. \" characters - to make them searchable
. if '\*[.T]'utf8' \{\
. char \- \N'45'
. char - \N'45'
. char ' \N'39'
. char \' \N'39'
. \}
.
. \" Shut off SGR by default (groff colors)
. \" Require GROFF_SGR envvar defined to turn it on
. if '\V[GROFF_SGR]'' \
. output x X tty: sgr 0
.\}

View File

@ -0,0 +1,70 @@
{ stdenv, lib, fetchurl, pkg-config, expat, ncurses
, pciutils, numactl }:
with lib;
stdenv.mkDerivation rec {
name = "hwloc-1.11.6";
src = fetchurl {
url = "http://www.open-mpi.org/software/hwloc/v1.11/downloads/${name}.tar.bz2";
sha256 = "1yl7dm2qplwmnidd712zy12qfvxk28k8ccs694n42ybwdjwzg1bn";
};
nativeBuildInputs = [ pkg-config ];
# Filter out `null' inputs. This allows users to `.override' the
# derivation and set optional dependencies to `null'.
buildInputs = filter (x: x != null)
([ expat ncurses ]
++ (optionals stdenv.isLinux [ numactl ]));
propagatedBuildInputs =
# Since `libpci' appears in `hwloc.pc', it must be propagated.
optional stdenv.isLinux pciutils;
enableParallelBuilding = true;
postInstall =
optionalString (stdenv.isLinux && numactl != null)
'' if [ -d "${numactl}/lib64" ]
then
numalibdir="${numactl}/lib64"
else
numalibdir="${numactl}/lib"
test -d "$numalibdir"
fi
sed -i "$out/lib/libhwloc.la" \
-e "s|-lnuma|-L$numalibdir -lnuma|g"
'';
# Checks disabled because they're impure (hardware dependent) and
# fail on some build machines.
doCheck = false;
meta = {
description = "Portable abstraction of hierarchical architectures for high-performance computing";
longDescription = ''
hwloc provides a portable abstraction (across OS,
versions, architectures, ...) of the hierarchical topology of
modern architectures, including NUMA memory nodes, sockets,
shared caches, cores and simultaneous multithreading. It also
gathers various attributes such as cache and memory
information. It primarily aims at helping high-performance
computing applications with gathering information about the
hardware so as to exploit it accordingly and efficiently.
hwloc may display the topology in multiple convenient
formats. It also offers a powerful programming interface to
gather information about the hardware, bind processes, and much
more.
'';
# http://www.open-mpi.org/projects/hwloc/license.php
license = licenses.bsd3;
homepage = http://www.open-mpi.org/projects/hwloc/;
maintainers = [ ];
platforms = platforms.all;
};
}

View File

@ -0,0 +1,40 @@
{
stdenv
, gcc
, iccUnwrapped
, wrapCCWith
, intelLicense
}:
let
targetConfig = stdenv.targetPlatform.config;
inherit gcc;
in wrapCCWith rec {
cc = iccUnwrapped;
extraBuildCommands = ''
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags
echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags
echo "-isystem ${iccUnwrapped}/include/intel64" >> $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
cat "${iccUnwrapped}/nix-support/propagated-build-inputs" >> \
$out/nix-support/propagated-build-inputs
echo "export INTEL_LICENSE_FILE=${intelLicense}" \
>> $out/nix-support/setup-hook
# Create the wrappers for icc and icpc
if [ -e $ccPath/icc ]; then
wrap icc $wrapper $ccPath/icc
fi
if [ -e $ccPath/icpc ]; then
wrap icpc $wrapper $ccPath/icpc
fi
if [ -e $ccPath/ifort ]; then
wrap ifort $wrapper $ccPath/ifort
fi
'';
}

View File

@ -0,0 +1,62 @@
{ stdenv
, fetchurl
, rpmextract
, autoPatchelfHook
, gcc
, intel-mpi
}:
stdenv.mkDerivation rec {
version = "${year}.${v_a}.${v_b}";
name = "intel-compiler-${version}";
passthru = {
CC = "icc";
CXX = "icpc";
};
# From Arch Linux PKGBUILD
dir_nr="17114";
year="2020";
v_a="4";
v_b="304";
update="4";
composer_xe_dir="compilers_and_libraries_${year}.${v_a}.${v_b}";
tgz="parallel_studio_xe_2020_update${update}_professional_edition.tgz";
src = fetchurl {
url = "https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/${tgz}";
sha256 = "1rn9kk5bjj0jfv853b09dxrx7kzvv8dlyzw3hl9ijx9mqr09lrzr";
};
buildInputs = [
rpmextract
autoPatchelfHook
gcc.cc.lib
gcc
intel-mpi
];
# The gcc package is required for building other programs
propagatedBuildInputs = [ gcc ];
installPhase = ''
pwd
ls -l rpm
rpmextract rpm/intel-icc-*.rpm
rpmextract rpm/intel-comp-*.rpm
rpmextract rpm/intel-c-comp-*.rpm
rpmextract rpm/intel-openmp*.rpm
rpmextract rpm/intel-ifort*.rpm
mkdir -p $out/{bin,lib,include}
pushd ./opt/intel/${composer_xe_dir}/linux/
cp -a bin/intel64/* $out/bin/
cp -a compiler/include/* $out/include/
cp -a compiler/lib/intel64_lin/* $out/lib/
ln -s lib $out/lib_lin
rm $out/lib/*.dbg
popd
'';
}

View File

@ -0,0 +1,148 @@
{ stdenv
, lib
, fetchurl
, dpkg
, rsync
, libffi
, libelf
, libxml2
, hwloc
, autoPatchelfHook
}:
with lib;
let
getsrc = url: sha256: fetchurl { inherit url sha256; };
version = "2021.2.0";
_debpkgrel = "610";
tbbrel = "357";
# Shorhands
main = "intel-oneapi-dpcpp-cpp";
compiler = "intel-oneapi-compiler-dpcpp-cpp";
shared = "intel-oneapi-compiler-shared";
openmp = "intel-oneapi-openmp";
tbb = "intel-oneapi-tbb";
# From Arch Linux PKGBUILD:
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=intel-oneapi-compiler-dpcpp-cpp
debs = [
# From intel-oneapi-compiler-dpcpp-cpp
"${main}-${version}-${version}-${_debpkgrel}_amd64.deb"
"${compiler}-common-${version}-${version}-${_debpkgrel}_all.deb"
"${compiler}-runtime-${version}-${version}-${_debpkgrel}_amd64.deb"
# From intel-oneapi-compiler-shared
"${shared}-${version}-${version}-${_debpkgrel}_amd64.deb"
"${shared}-runtime-${version}-${version}-${_debpkgrel}_amd64.deb"
"${shared}-common-${version}-${version}-${_debpkgrel}_all.deb"
"${shared}-common-runtime-${version}-${version}-${_debpkgrel}_all.deb"
"${compiler}-classic-fortran-shared-runtime-${version}-${version}-${_debpkgrel}_amd64.deb"
# From intel-oneapi-openmp
"${openmp}-${version}-${version}-${_debpkgrel}_amd64.deb"
"${openmp}-common-${version}-${version}-${_debpkgrel}_all.deb"
# From intel-oneapi-tbb
"${tbb}-${version}-${version}-${tbbrel}_amd64.deb"
"${tbb}-devel-${version}-${version}-${tbbrel}_amd64.deb"
"${tbb}-common-${version}-${version}-${tbbrel}_all.deb"
"${tbb}-common-devel-${version}-${version}-${tbbrel}_all.deb"
];
apthost = "https://apt.repos.intel.com/oneapi/pool/main/";
urls = map (x: apthost + x) debs;
sums = [
# From intel-oneapi-compiler-dpcpp-cpp
"0pwsfzkazr9yf6v6lgwb3p2in6ch3rlcc9qcfarkyqn052p760kk"
"0vzsanldhs4ym4gsfn0zjqm03x53ma1zjkj24hpkhpsvlr2r069w"
"0nx62v6g0wl70lqdh7sh7gfgxbynhrrips9gpj9if60ngz6fm21m"
# From intel-oneapi-compiler-shared
"1al80pcy2r3q2r2pm04sva7rd3z6y287mkdv5jq4p5bfd8yi14d4"
"07rp0cjmbgj48wly9dm6ibxzbsanmgrsjjqr7mx688ms6qbhv314"
"1pf4xckyyhssjknhs6hwampjsz2qjlg81jw2fc441zaccwf25yf3"
"0hk0x4wq60g9wnn9j051v25zcmbasjdzp34xfvrihmcvyws0s69g"
"0dhbw8kshw4abqc9zf891z5ic0x13x3kvhk56nrqkqgcfwps9w8a"
# From intel-oneapi-openmp
"1wqy2sjwlqdh72zhfrxl9pm106hjzfdbbm98cxigbg20fb5lbv5a"
"19nbqypvqcf8c3mwriaqrmp5igjpwvwrb9mq2fxa5i40w7bhlxjl"
# From intel-oneapi-tbb
"1dpii3g861kimky0x7dqcj6hg7zb6i5kw1wgwrxdc5yxhi5slbm9"
"0bl1flm6w0w9nzrh34ig4p9qz2gbdgw9q14as2pwp8flicd8p899"
"0w3kip6q713v1xlfc10ai4v15cbwmbqrv8r1f5x6pfqdbb0bpmbv"
"0v95nmddyi0mjjdvm07w9fm3vq4a0wkx7zxlyzn2f4xg38qc5j73"
];
in
stdenv.mkDerivation {
inherit version;
name = "intel-compiler-${version}";
passthru = {
CC = "icc";
CXX = "icpc";
};
srcs = zipListsWith getsrc urls sums;
buildInputs = [
dpkg
rsync
libffi
libelf
libxml2
hwloc
autoPatchelfHook
stdenv.cc.cc.lib
];
dontBuild = true;
dontStrip = true;
# The gcc package is required for building other programs
#propagatedBuildInputs = [ gcc ];
unpackCmd = ''
dpkg -x $curSrc .
'';
# FIXME: Some dependencies are missing
autoPatchelfIgnoreMissingDeps = true;
#autoPatchelfIgnoreMissingDeps = [ "*" ];
# Compiler
installPhase = ''
mkdir -p $out/{bin,lib,include}
pushd intel/oneapi/compiler/${version}/linux
# Binaries
rsync -a bin/ $out/bin/
rsync -a bin/intel64/ $out/bin/
# Libraries
rsync -a --exclude=oclfpga lib/ $out/lib/
rsync -a compiler/lib/intel64_lin/ $out/lib/
# Headers
rsync -a include/ $out/include/
rsync -a compiler/include/ $out/include/
popd
# TBB
pushd intel/oneapi/tbb/${version}
# Libraries
rsync -a lib/intel64/gcc4.8/ $out/lib/
# Headers
rsync -a include/ $out/include/
popd
'';
}

View File

@ -0,0 +1,39 @@
{ stdenv
, requireFile
}:
stdenv.mkDerivation rec {
name = "intel-compiler-license";
version = "2019.7.217";
src = requireFile {
name = "license.lic";
sha256 = "0rgmsqkhpqcfny8j7msa4sgz3prhh248ylh69gjh12dkra77prsj";
message = ''
The Intel Compiler requires a license. You can get one (free of charge) if
you meet the requeriments at the website:
https://software.intel.com/content/www/us/en/develop/articles/qualify-for-free-software.html#opensourcecontributor
Or you can use your own license. Add it to the store with:
$ nix-store --add-fixed sha256 license.lic
/nix/store/2p9v0nvsl3scshjx348z6j32rh7ac0db-license.lic
Notice that the name must match exactly "license.lic".
Then update the hash in the bsc/intel-compiler/license.nix file using the
nix-hash command with:
$ nix-hash --type sha256 --base32 --flat /nix/store/2p9v0nvsl3scshjx348z6j32rh7ac0db-license.lic
06g2xgm1lch6zqfkhb768wacdx46kf61mfvj5wfpyssw0anr0x9q
'';
};
dontUnpack = true;
installPhase = ''
mkdir -p $out
cp $src $out/
'';
}

View File

@ -0,0 +1,29 @@
{
stdenv
, gcc
, iccUnwrapped
, wrapCCWith
}:
let
targetConfig = stdenv.targetPlatform.config;
inherit gcc;
in wrapCCWith rec {
cc = iccUnwrapped;
extraBuildCommands = ''
echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags
echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags
echo "-isystem ${iccUnwrapped}/include/icc" >> $out/nix-support/cc-cflags
echo "-isystem ${gcc.cc}/include/c++/${gcc.version}" >> $out/nix-support/cc-cflags
echo "-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}" >> $out/nix-support/cc-cflags
echo "-L${iccUnwrapped}/lib" >> $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
# Create the wrappers for icx*
wrap lld $wrapper $ccPath/lld
wrap icx $wrapper $ccPath/icx
wrap icpx $wrapper $ccPath/icpx
'';
}

104
pkgs/intel-mpi/default.nix Normal file
View File

@ -0,0 +1,104 @@
{ stdenv
, rpmextract
, gcc
, zlib
, ucx
, numactl
, rdma-core
, libpsm2
, patchelf
, autoPatchelfHook
, enableDebug ? false
# The _mt version seems to cause seg-faults and deadlocks with the libpsm2
# provider library with programs that call the MPI library without any locking
# mechanism. See https://pm.bsc.es/gitlab/rarias/bscpkgs/-/issues/28. By
# default, we use the non-mt variant, which provides a big lock. If you want to
# use it, take a look at the I_MPI_THREAD_SPLIT env-var as well.
, enableMt ? false
}:
let
lib_variant = (if enableDebug then "debug" else "release");
# See https://software.intel.com/content/www/us/en/develop/documentation/mpi-developer-reference-linux/top/environment-variable-reference/other-environment-variables.html
lib_mt = (if enableMt then "_mt" else "");
lib_name = "${lib_variant}${lib_mt}";
in
stdenv.mkDerivation rec {
name = "intel-mpi-${version}";
version = "2019.10.317";
dir_nr = "17534";
src = builtins.fetchTarball {
url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/l_mpi_${version}.tgz";
sha256 = "00nimgqywr20dv1ns5kg4r8539gvharn0xfj48i7mhbg8kwf8s08";
};
buildInputs = [
rpmextract
autoPatchelfHook
gcc.cc.lib
zlib
ucx
numactl
rdma-core
libpsm2
patchelf
];
postUnpack = ''
pushd $sourceRoot
rpmextract rpm/intel-mpi-*.rpm
# Predictable name
mv opt/intel/compilers_and_libraries_* opt/intel/compilers_and_libraries
popd
sourceRoot="$sourceRoot/opt/intel/compilers_and_libraries/linux/mpi/intel64"
'';
patches = [
./mpicc.patch
./mpicxx.patch
];
postPatch = ''
for i in bin/mpi* ; do
echo "Fixing paths in $i"
sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" "$i"
done
'';
dontBuild = true;
installPhase = ''
mkdir -p $out
mv etc $out
mv bin $out
mv include $out
mkdir $out/lib
cp -a lib/lib* $out/lib
cp -a lib/${lib_name}/lib* $out/lib
cp -a libfabric/lib/* $out/lib
cp -a libfabric/lib/prov/* $out/lib
cp -a libfabric/bin/* $out/bin
ln -s . $out/intel64
rm $out/lib/libmpi.dbg
# Fixup Intel PSM2 library missing (now located at PSMX2)
ln -s $out/lib/libpsmx2-fi.so $out/lib/libpsm2-fi.so
'';
dontAutoPatchelf = true;
# The rpath of libfabric.so bundled with Intel MPI is patched to include the
# rdma-core lib path, as is required for dlopen to find the rdma components.
# TODO: Try the upstream libfabric library with rdma support, so we can avoid
# this hack.
postFixup = ''
autoPatchelf -- $out
patchelf --set-rpath "$out/lib:${rdma-core}/lib:${libpsm2}/lib" $out/lib/libfabric.so
echo "Patched RPATH in libfabric.so to: $(patchelf --print-rpath $out/lib/libfabric.so)"
'';
}

View File

@ -0,0 +1,20 @@
--- a/bin/mpicc 2021-02-04 18:15:11.233632360 +0100
+++ b/bin/mpicc 2021-02-05 09:33:49.493598479 +0100
@@ -50,7 +50,7 @@
if [ x"$opt_args" == x"" ]; then
case "${compiler_short_name}" in
icc|icx) "$dir"/mpiicc -cc=$compiler_name "$@" ;;
- cc|*gcc*|clang*) "$dir"/mpigcc -cc=$compiler_name "$@" ;;
+ cc|*gcc*|clang*|mcc|echo) "$dir"/mpigcc -cc=$compiler_name "$@" ;;
mpicc) "$dir"/mpigcc "$@" ;;
*)
echo "Error: unsupported compiler name '$compiler_name'."
@@ -60,7 +60,7 @@
else
case "${compiler_short_name}" in
icc|icx) "$dir"/mpiicc -cc=$compiler_name "$@" $opt_args ;;
- cc|*gcc*|clang*) "$dir"/mpigcc -cc=$compiler_name "$@" $opt_args ;;
+ cc|*gcc*|clang*|mcc|echo) "$dir"/mpigcc -cc=$compiler_name "$@" $opt_args ;;
mpicc) "$dir"/mpigcc "$@" $opt_args ;;
*)
echo "Error: unsupported compiler name '$compiler_name'."

View File

@ -0,0 +1,20 @@
--- a/bin/mpicxx 2021-02-04 18:15:11.233632360 +0100
+++ b/bin/mpicxx 2021-02-05 09:36:21.396922569 +0100
@@ -50,7 +50,7 @@
if [ x"$opt_args" == x"" ]; then
case "${compiler_short_name}" in
icc|icpc|dpcpp) "$dir"/mpiicpc -cxx=$compiler_name "$@" ;;
- *g++*) "$dir"/mpigxx -cxx=$compiler_name "$@" ;;
+ *g++*|clang*++|mcxx|echo) "$dir"/mpigxx -cxx=$compiler_name "$@" ;;
mpicxx) "$dir"/mpigxx "$@" ;;
*)
echo "Error: unsupported compiler name '$compiler_name'."
@@ -60,7 +60,7 @@
else
case "${compiler_short_name}" in
icc|icpc|dpcpp) "$dir"/mpiicpc -cxx=$compiler_name "$@" $opt_args ;;
- *g++*) "$dir"/mpigxx -cxx=$compiler_name "$@" $opt_args ;;
+ *g++*|clang*++|mcxx|echo) "$dir"/mpigxx -cxx=$compiler_name "$@" $opt_args ;;
mpicxx) "$dir"/mpigxx "$@" $opt_args ;;
*)
echo "Error: unsupported compiler name '$compiler_name'."

492
pkgs/intel-oneapi/2023.nix Normal file
View File

@ -0,0 +1,492 @@
{ stdenv
, fetchurl
, lib
, dpkg
, rsync
, libffi_3_3
, libelf
, libxml2
, hwloc
, zlib
, autoPatchelfHook
, libfabric
, gcc13
, wrapCCWith
}:
# The distribution of intel packages is a mess. We are doing the installation
# based on the .deb metapackage "intel-hpckit", and follow de dependencies,
# which have mismatching versions.
# Bruno Bzeznik (bzizou) went through the madness of using their .sh installer,
# pulling all the X dependencies here:
# https://github.com/Gricad/nur-packages/blob/4b67c8ad0ce1baa1d2f53ba41ae5bca8e00a9a63/pkgs/intel/oneapi.nix
# But this is an attempt to install the packages from the APT repo
let
gcc = gcc13;
v = {
hpckit = "2023.1.0";
compiler = "2023.1.0";
tbb = "2021.9.0";
mpi = "2021.9.0";
};
aptPackageIndex = stdenv.mkDerivation {
name = "intel-oneapi-packages";
srcs = [
# Run update.sh to update the package lists
./amd64-packages ./all-packages
];
phases = [ "installPhase" ];
installPhase = ''
awk -F': ' '\
BEGIN { print "[ {" } \
NR>1 && /^Package: / { print "} {"; } \
/: / { printf "%s = \"%s\";\n", $1, $2 } \
END { print "} ]" }' $srcs > $out
'';
};
aptPackages = import aptPackageIndex;
apthost = "https://apt.repos.intel.com/oneapi/";
getSum = pkgList: name:
let
matches = lib.filter (x: name == x.Package) pkgList;
#n = lib.length matches;
#match = builtins.trace (name + " -- ${builtins.toString n}") (lib.elemAt matches 0);
match = lib.elemAt matches 0;
in
match.SHA256;
getUrl = pkgList: name:
let
matches = lib.filter (x: name == x.Package) pkgList;
#match = assert lib.length matches == 1; lib.elemAt matches 0;
n = lib.length matches;
match =
#builtins.trace (name + " -- n=${builtins.toString n}")
(lib.elemAt matches 0);
in
apthost + match.Filename;
uncompressDebs = debs: name: stdenv.mkDerivation {
name = name;
srcs = debs;
nativeBuildInputs = [ dpkg ];
phases = [ "installPhase" ];
installPhase = ''
mkdir -p $out
for src in $srcs; do
echo "unpacking $src"
dpkg -x $src $out
done
'';
};
joinDebs = name: names:
let
urls = builtins.map (x: getUrl aptPackages x) names;
sums = builtins.map (x: getSum aptPackages x) names;
getsrc = url: sha256: builtins.fetchurl { inherit url sha256; };
debs = lib.zipListsWith getsrc urls sums;
in
uncompressDebs debs "${name}-source";
intel-mpi = stdenv.mkDerivation rec {
version = v.mpi;
pname = "intel-mpi";
src = joinDebs pname [
"intel-oneapi-mpi-devel-${version}"
"intel-oneapi-mpi-${version}"
];
nativeBuildInputs = [
autoPatchelfHook
rsync
];
buildInputs = [
libfabric
zlib
stdenv.cc.cc.lib
];
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
installPhase = ''
mkdir -p $out/{bin,etc,lib,include}
mkdir -p $out/share/man
cd $src
# MPI
pushd opt/intel/oneapi/mpi/${version}
rsync -a man/ $out/share/man/
rsync -a etc/ $out/etc/
rsync -a include/ $out/include/
cp -a lib/lib* $out/lib/
# Copy the actual libmpi.so from release
cp -a lib/release/lib* $out/lib
# Broken due missing libze_loader.so.1
rsync -a --exclude IMB-MPI1-GPU bin/ $out/bin/
popd
'';
preFixup = ''
for i in $out/bin/mpi* ; do
echo "Fixing paths in $i"
sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" "$i"
done
'';
};
intel-tbb = stdenv.mkDerivation rec {
version = v.tbb;
pname = "intel-tbb";
src = joinDebs pname [
"intel-oneapi-tbb-${version}"
"intel-oneapi-tbb-common-${version}"
];
buildInputs = [
intel-mpi
libffi_3_3
libelf
libxml2
hwloc
stdenv.cc.cc.lib
];
nativeBuildInputs = [
autoPatchelfHook
rsync
];
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
installPhase = ''
mkdir -p $out/lib
cd $src
pushd opt/intel/oneapi/tbb/${version}
# Libraries
rsync -a lib/intel64/gcc4.8/ $out/lib/
popd
'';
};
intel-compiler-shared = stdenv.mkDerivation rec {
version = v.compiler;
pname = "intel-compiler-shared";
src = joinDebs pname [
"intel-oneapi-compiler-shared-${version}"
"intel-oneapi-compiler-shared-common-${version}"
"intel-oneapi-compiler-shared-runtime-${version}"
];
buildInputs = [
intel-mpi
intel-tbb
libffi_3_3
libelf
libxml2
zlib
hwloc
stdenv.cc.cc.lib
];
nativeBuildInputs = [
autoPatchelfHook
rsync
];
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
installPhase = ''
mkdir -p $out/{bin,lib,include}
mkdir -p $out/share/man
cd $src
# Compiler
pushd opt/intel/oneapi/compiler/${version}
pushd linux
# Binaries
rsync -a bin/ $out/bin/
rsync -a --exclude libcilkrts.so.5 bin/intel64/ $out/bin/
# Libraries
rsync -a lib/ $out/lib/
rsync -a lib/x64/ $out/lib/
rsync -a compiler/lib/intel64_lin/ $out/lib/
chmod +w $out/lib
cp bin/intel64/libcilkrts.so.5 $out/lib/
ln -s $out/lib/libcilkrts.so.5 $out/lib/libcilkrts.so
# Headers
rsync -a compiler/include/ $out/include/
popd
popd
'';
};
intel-compiler-fortran = stdenv.mkDerivation rec {
version = v.compiler;
pname = "intel-fortran";
src = joinDebs pname [
"intel-oneapi-compiler-fortran-${version}"
"intel-oneapi-compiler-fortran-common-${version}"
"intel-oneapi-compiler-fortran-runtime-${version}"
"intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-${version}"
#"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${version}"
#"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${version}"
];
langFortran = true;
buildInputs = [
intel-mpi
intel-compiler-shared
libffi_3_3
libelf
libxml2
hwloc
stdenv.cc.cc.lib
];
nativeBuildInputs = [
autoPatchelfHook
rsync
];
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
installPhase = ''
mkdir -p $out/{bin,lib,include}
mkdir -p $out/share/man
cd $src
# Compiler
pushd opt/intel/oneapi/compiler/${version}
pushd linux
# Binaries
rsync -a bin/ $out/bin/
rsync -a bin/intel64/ $out/bin/
# Libraries
rsync -a lib/ $out/lib/
rsync -a compiler/lib/intel64_lin/ $out/lib/
# Headers
rsync -a compiler/include/ $out/include/
popd
# Manuals
rsync -a documentation/en/man/common/ $out/share/man/
# Fix lib_lin
ln -s $out/lib $out/lib_lin
popd
'';
};
intel-compiler = stdenv.mkDerivation rec {
version = v.compiler;
pname = "intel-compiler";
src = joinDebs pname [
# C/C++
"intel-oneapi-dpcpp-cpp-${version}"
"intel-oneapi-compiler-dpcpp-cpp-${version}"
"intel-oneapi-compiler-dpcpp-cpp-common-${version}"
"intel-oneapi-compiler-dpcpp-cpp-runtime-${version}"
"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${version}"
"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-${version}"
"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${version}"
"intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-${version}"
];
dontCheckForBrokenSymlinks = true;
# From https://aur.archlinux.org/packages/intel-oneapi-compiler:
# - intel-oneapi-compiler-cpp-eclipse-cfg-2023.0.0-25370_all.deb
# + intel-oneapi-compiler-dpcpp-cpp-2023.0.0-2023.0.0-25370_amd64.deb
# x intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0-2023.0.0-25370_amd64.deb (empty)
# + intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0-25370_amd64.deb
# + intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.0.0-2023.0.0-25370_all.deb
# + intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.0.0-2023.0.0-25370_amd64.deb
# + intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.0.0-2023.0.0-25370_amd64.deb
# + intel-oneapi-compiler-dpcpp-cpp-common-2023.0.0-2023.0.0-25370_all.deb
# + intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0-2023.0.0-25370_amd64.deb
# - intel-oneapi-compiler-dpcpp-eclipse-cfg-2023.0.0-25370_all.deb
# - intel-oneapi-compiler-fortran-2023.0.0-2023.0.0-25370_amd64.deb
# - intel-oneapi-compiler-fortran-common-2023.0.0-2023.0.0-25370_all.deb
# - intel-oneapi-compiler-fortran-runtime-2023.0.0-2023.0.0-25370_amd64.deb
# - intel-oneapi-compiler-fortran-runtime-2023.0.0-25370_amd64.deb
# - intel-oneapi-compiler-shared-2023.0.0-2023.0.0-25370_amd64.deb
# - intel-oneapi-compiler-shared-common-2023.0.0-2023.0.0-25370_all.deb
# - intel-oneapi-compiler-shared-runtime-2023.0.0-2023.0.0-25370_amd64.deb
# - intel-oneapi-dpcpp-cpp-2023.0.0-2023.0.0-25370_amd64.deb
# - intel-oneapi-openmp-2023.0.0-2023.0.0-25370_amd64.deb
# - intel-oneapi-openmp-common-2023.0.0-2023.0.0-25370_all.deb
buildInputs = [
intel-compiler-shared
libffi_3_3
libelf
libxml2
hwloc
stdenv.cc.cc.lib
];
nativeBuildInputs = [
autoPatchelfHook
rsync
];
autoPatchelfIgnoreMissingDeps = [ "libtbb.so.12" "libtbbmalloc.so.2" "libze_loader.so.1" ];
phases = [ "installPhase" "fixupPhase" ];
dontStrip = true;
installPhase = ''
mkdir -p $out/{bin,lib}
mkdir -p $out/share/man
cd $src
# Compiler
pushd opt/intel/oneapi/compiler/${version}
pushd linux
# Binaries
rsync -a bin/ $out/bin/
rsync -a bin-llvm/ $out/bin/
rsync -a bin/intel64/ $out/bin/
# Libraries
rsync -a --exclude oclfpga lib/ $out/lib/
rsync -a compiler/lib/intel64_lin/ $out/lib/
# Headers
rsync -a compiler/include/ $out/include/ # Intrinsics for icc
rsync -a include/ $out/include/
chmod +w $out/include
ln -s $out/lib/clang/16.0.0/include/ $out/include/icx # For icx
popd
# Manuals
rsync -a documentation/en/man/common/ $out/share/man/
popd
'';
};
wrapIntel = { cc, mygcc, extraBuild ? "", extraInstall ? "" }:
let
targetConfig = stdenv.targetPlatform.config;
in (wrapCCWith {
cc = cc;
extraBuildCommands = ''
echo "-isystem ${cc}/include" >> $out/nix-support/cc-cflags
echo "-isystem ${cc}/include/intel64" >> $out/nix-support/cc-cflags
echo "-L${mygcc.cc}/lib/gcc/${targetConfig}/${mygcc.version}" >> $out/nix-support/cc-ldflags
echo "-L${mygcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
echo "-L${intel-compiler-shared}/lib" >> $out/nix-support/cc-ldflags
echo "-L${cc}/lib" >> $out/nix-support/cc-ldflags
# Need the gcc in the path
# FIXME: We should find a better way to modify the PATH instead of using
# this ugly hack. See https://jungle.bsc.es/git/rarias/bscpkgs/issues/9
echo 'path_backup="${mygcc}/bin:$path_backup"' >> $out/nix-support/cc-wrapper-hook
# Disable hardening by default
echo "" > $out/nix-support/add-hardening.sh
'' + extraBuild;
}).overrideAttrs (old: {
installPhase = old.installPhase + extraInstall;
});
icx-wrapper = wrapIntel rec {
cc = intel-compiler;
mygcc = gcc;
extraBuild = ''
wrap icx $wrapper $ccPath/icx
wrap icpx $wrapper $ccPath/icpx
echo "-isystem ${cc}/include/icx" >> $out/nix-support/cc-cflags
echo "--gcc-toolchain=${mygcc.cc}" >> $out/nix-support/cc-cflags
'';
extraInstall = ''
export named_cc="icx"
export named_cxx="icpx"
'';
};
# Legacy
icc-wrapper = wrapIntel rec {
cc = intel-compiler;
# Intel icc classic compiler tries to behave like the gcc found in $PATH.
# EVEN if it doesn't support some of the features. See:
# https://community.intel.com/t5/Intel-C-Compiler/builtin-shuffle-GCC-compatibility-and-has-builtin/td-p/1143619
mygcc = gcc;
extraBuild = ''
wrap icc $wrapper $ccPath/icc
wrap icpc $wrapper $ccPath/icpc
echo "-isystem ${cc}/include/icc" >> $out/nix-support/cc-cflags
'';
extraInstall = ''
export named_cc="icc"
export named_cxx="icpc"
'';
};
ifort-wrapper = wrapIntel rec {
cc = intel-compiler-fortran;
mygcc = gcc;
extraBuild = ''
wrap ifort $wrapper $ccPath/ifort
'';
extraInstall = ''
export named_fc="ifort"
'';
};
stdenv-icc = stdenv.override {
cc = icc-wrapper;
allowedRequisites = null;
};
stdenv-icx = stdenv.override {
cc = icx-wrapper;
allowedRequisites = null;
};
stdenv-ifort = stdenv.override {
cc = ifort-wrapper;
allowedRequisites = null;
};
in
{
inherit intel-mpi;
icx = icx-wrapper;
icc = icc-wrapper;
ifort = ifort-wrapper;
stdenv = stdenv-icx;
stdenv-icc = stdenv-icc;
stdenv-ifort = stdenv-ifort;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4
pkgs/intel-oneapi/update.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages -o amd64-packages
curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages -o all-packages

44
pkgs/libpsm2/default.nix Normal file
View File

@ -0,0 +1,44 @@
{ stdenv, lib, fetchFromGitHub, numactl, pkg-config }:
let
version = "11.2.185";
in
stdenv.mkDerivation {
pname = "libpsm2";
inherit version;
preConfigure= ''
export UDEVDIR=$out/etc/udev
substituteInPlace ./Makefile --replace "udevrulesdir}" "prefix}/etc/udev";
'';
enableParallelBuilding = true;
buildInputs = [ numactl pkg-config ];
installFlags = [
"DESTDIR=$(out)"
"UDEVDIR=/etc/udev"
"LIBPSM2_COMPAT_CONF_DIR=/etc"
];
src = fetchFromGitHub {
owner = "intel";
repo = "opa-psm2";
rev = "PSM2_${version}";
sha256 = "062hg4r6gz7pla9df70nqs5i2a3mp1wszmp4l0g771fykhhrxsjg";
};
postInstall = ''
mv $out/usr/* $out
rmdir $out/usr
'';
meta = with lib; {
homepage = "https://github.com/intel/opa-psm2";
description = "The PSM2 library supports a number of fabric media and stacks";
license = with licenses; [ gpl2 bsd3 ];
platforms = [ "x86_64-linux" ];
maintainers = [ maintainers.bzizou ];
};
}

129
pkgs/llvm-ompss2/clang.nix Normal file
View File

@ -0,0 +1,129 @@
{
llvmPackages_latest
, lib
, fetchFromGitHub
, cmake
, bash
, python3
, perl
, which
, elfutils
, libffi
, zlib
, pkg-config
, gcc # needed to set the rpath of libstdc++ for clang-tblgen
, enableDebug ? false
, useGit ? false
, gitUrl ? "ssh://git@bscpm04.bsc.es/llvm-ompss/llvm-mono.git"
, gitBranch ? "master"
, gitCommit ? "880e2341c56bad1dc14e8c369fb3356bec19018e"
}:
let
stdenv = llvmPackages_latest.stdenv;
release = rec {
version = "2025.06";
src = fetchFromGitHub {
owner = "bsc-pm";
repo = "llvm";
rev = "refs/tags/github-release-${version}";
hash = "sha256-ww9PpRmtz/M9IyLiZ8rAehx2UW4VpQt+svf4XfKBzKo=";
};
};
git = rec {
version = src.shortRev;
src = builtins.fetchGit {
url = gitUrl;
ref = gitBranch;
rev = gitCommit;
};
};
source = if (useGit) then git else release;
in stdenv.mkDerivation {
pname = "clang-ompss2";
inherit (source) src version;
enableParallelBuilding = true;
passthru = {
CC = "clang";
CXX = "clang++";
isClang = true;
isClangWithOmpss = true;
inherit gcc zlib;
};
nativeBuildInputs = [
bash
cmake
elfutils
llvmPackages_latest.lld
pkg-config
python3
perl
which
zlib
];
buildInputs = [
libffi
zlib
gcc.cc.lib # Required for libstdc++.so.6
];
# Error with -D_FORTIFY_SOURCE=2, see https://bugs.gentoo.org/636604:
# /build/source/compiler-rt/lib/tsan/dd/dd_interceptors.cpp:225:20:
# error: redefinition of 'realpath'
# Requires disabling the "fortify" set of flags, however, for performance we
# disable all:
hardeningDisable = [ "all" ];
cmakeBuildType = if enableDebug then "Debug" else "Release";
dontStrip = enableDebug;
dontUseCmakeBuildDir = true;
# Fix the host triple, as it has changed in a newer config.guess:
# https://git.savannah.gnu.org/gitweb/?p=config.git;a=commitdiff;h=ca9bfb8cc75a2be1819d89c664a867785c96c9ba
preConfigure = ''
mkdir -p build
cd build
cmakeDir="../llvm"
cmakeFlagsArray=(
"-DLLVM_HOST_TRIPLE=${stdenv.targetPlatform.config}"
"-DLLVM_TARGETS_TO_BUILD=host"
"-DLLVM_BUILD_LLVM_DYLIB=ON"
"-DLLVM_LINK_LLVM_DYLIB=ON"
# Required to run clang-ast-dump and clang-tblgen during build
"-DCMAKE_BUILD_RPATH=$PWD/lib:${zlib}/lib:${gcc.cc.lib}/lib"
"-DLLVM_ENABLE_LLD=ON"
"-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames"
"-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,--gdb-index"
"-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml"
"-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;lld"
"-DLLVM_ENABLE_ASSERTIONS=ON"
"-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
"-DCMAKE_INSTALL_BINDIR=bin"
"-DLLVM_ENABLE_ZLIB=FORCE_ON"
"-DLLVM_ENABLE_LIBXML2=OFF"
# Set the rpath to include external libraries (zlib) both on build and
# install
"-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON"
"-DCMAKE_INSTALL_RPATH=${zlib}/lib:${gcc.cc.lib}/lib"
"-DLLVM_APPEND_VC_REV=ON"
"-DLLVM_FORCE_VC_REVISION=${source.version}"
)
'';
# About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default
# nanos6 installation, but this is would require a recompilation of clang each
# time nanos6 is changed. Better to use the environment variable NANOS6_HOME,
# and specify nanos6 at run time.
}

View File

@ -0,0 +1,70 @@
{
stdenv
, lib
, gcc
, clangOmpss2Unwrapped
, openmp ? null
, wrapCCWith
, llvmPackages_latest
, 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";
let
homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME";
rtname = if ompss2rt.pname == "nanos6" then "libnanos6" else "libnodes";
ompname = if openmp.pname == "openmp-v" then "libompv" else "libomp";
# We need to replace the lld linker from bintools with our linker just built,
# otherwise we run into incompatibility issues when mixing compiler and linker
# versions.
bintools-unwrapped = llvmPackages_latest.tools.bintools-unwrapped.override {
lld = clangOmpss2Unwrapped;
};
bintools = llvmPackages_latest.tools.bintools.override {
bintools = bintools-unwrapped;
};
targetConfig = stdenv.targetPlatform.config;
inherit gcc;
cc = clangOmpss2Unwrapped;
gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)];
in wrapCCWith {
inherit cc bintools;
# extraPackages adds packages to depsTargetTargetPropagated
extraPackages = 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 "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
for dir in ${gcc.cc}/include/c++/*; do
echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags
done
for dir in ${gcc.cc}/include/c++/*/${targetConfig}; do
echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags
done
echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags
wrap clang++ $wrapper $ccPath/clang++
'' + optionalString (openmp != null) ''
echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook
'' + 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") ''
echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook
'';
}

View File

@ -0,0 +1,78 @@
{ lib
, llvmPackages_latest
, monorepoSrc
, runCommand
, cmake
, ninja
, llvm
, perl
, pkg-config
, version
, nosv
, ovni
, python3
, enableNosv ? false
, enableDebug ? false
, enableOvni ? false
}:
assert enableOvni -> enableNosv;
let
stdenv = llvmPackages_latest.stdenv;
in
stdenv.mkDerivation rec {
pname = "openmp" + (lib.optionalString enableNosv "-v");
inherit version;
src = runCommand "${pname}-src" {} ''
mkdir -p "$out"
cp -r ${monorepoSrc}/cmake "$out"
cp -r ${monorepoSrc}/openmp "$out"
'';
sourceRoot = "${src.name}/openmp";
nativeBuildInputs = [
cmake
ninja
perl
pkg-config
python3
] ++ lib.optionals enableNosv [
nosv
] ++ lib.optionals enableOvni [
ovni
];
doCheck = false;
hardeningDisable = [ "all" ];
cmakeBuildType = if enableDebug then "Debug" else "Release";
dontStrip = enableDebug;
separateDebugInfo = true;
cmakeFlags = [
"-DLIBOMP_OMPD_SUPPORT=OFF"
"-DOPENMP_ENABLE_LIBOMPTARGET=OFF"
];
# Remove support for GNU and Intel Openmp.
# Also, remove libomp if building with nosv, as there is no support to build
# only one runtime at a time.
postInstall = ''
rm -f $out/lib/libgomp*
rm -f $out/lib/libiomp*
'' + lib.optionalString enableNosv ''
rm -f $out/lib/libomp.*
rm -f $out/libllvmrt/libomp.*
'';
passthru = {
inherit nosv;
};
}

47
pkgs/lmbench/default.nix Normal file
View File

@ -0,0 +1,47 @@
{
lib,
stdenv,
libtirpc,
fetchFromGitHub
}:
stdenv.mkDerivation rec {
pname = "lmbench";
version = "941a0dcc";
# We use the intel repo as they have fixed some problems
src = fetchFromGitHub {
owner = "intel";
repo = pname;
rev = "941a0dcc0e7bdd9bb0dee05d7f620e77da8c43af";
sha256 = "sha256-SzwplRBO3V0R3m3p15n71ivYBMGoLsajFK2TapYxdqk=";
};
postPatch = ''
sed -i "s@/bin/rm@rm@g" $(find . -name Makefile)
'';
buildInputs = [ libtirpc ];
patches = [ ./fix-install.patch ./gcc-14.patch ];
hardeningDisable = [ "all" ];
enableParallelBuilding = false;
preBuild = ''
makeFlagsArray+=(
-C src
BASE=$out
CFLAGS=-Wno-implicit-int
CPPFLAGS=-I${libtirpc.dev}/include/tirpc
LDFLAGS=-ltirpc
)
'';
meta = {
description = "lmbench";
homepage = "http://www.bitmover.com/lmbench/";
maintainers = [ ];
platforms = lib.platforms.all;
};
}

View File

@ -0,0 +1,10 @@
--- a/src/Makefile
+++ b/src/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

77
pkgs/lmbench/gcc-14.patch Normal file
View File

@ -0,0 +1,77 @@
From a3c6e7d303cd8368e8d4e35be7cbc1997e801257 Mon Sep 17 00:00:00 2001
From: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Date: Mon, 21 Jul 2025 17:38:58 +0200
Subject: [PATCH] Misc fixes to build with gcc 14
---
src/bench.h | 2 ++
src/lat_select.c | 2 +-
src/lib_debug.c | 1 +
src/lib_sched.c | 2 +-
src/lib_timing.c | 2 +-
5 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/bench.h b/src/bench.h
index 8166408..4da9079 100644
--- a/src/bench.h
+++ b/src/bench.h
@@ -320,4 +320,6 @@ extern int handle_scheduler(int childno, int benchproc, int nbenchprocs);
extern char *rpc_xact_1();
extern char *client_rpc_xact_1();
+void lmbench_usage(int argc, char *argv[], char* usage);
+
#endif /* _BENCH_H */
diff --git a/src/lat_select.c b/src/lat_select.c
index 583b505..39df369 100644
--- a/src/lat_select.c
+++ b/src/lat_select.c
@@ -164,7 +164,7 @@ doit(iter_t iterations, void * cookie)
state_t * state = (state_t *)cookie;
fd_set nosave;
static struct timeval tv;
- static count = 0;
+ static int count = 0;
tv.tv_sec = 0;
tv.tv_usec = 0;
diff --git a/src/lib_debug.c b/src/lib_debug.c
index e8347dd..cf65312 100644
--- a/src/lib_debug.c
+++ b/src/lib_debug.c
@@ -1,5 +1,6 @@
#include "bench.h"
#include "lib_debug.h"
+#include <math.h>
/*
* return micro-seconds / iteration at the the fraction point.
diff --git a/src/lib_sched.c b/src/lib_sched.c
index aa83ae0..4f16bbf 100644
--- a/src/lib_sched.c
+++ b/src/lib_sched.c
@@ -91,7 +91,7 @@ handle_scheduler(int childno, int benchproc, int nbenchprocs)
childno * (nbenchprocs + 1) + benchproc);
} else {
/* default action: do nothing */
- return;
+ return 0;
}
return sched_pin(cpu % sched_ncpus());
diff --git a/src/lib_timing.c b/src/lib_timing.c
index af8cf68..7ec9652 100644
--- a/src/lib_timing.c
+++ b/src/lib_timing.c
@@ -1623,7 +1623,7 @@ bread(void* buf, long nbytes)
void
touch(char *buf, int nbytes)
{
- static psize;
+ static int psize;
if (!psize) {
psize = getpagesize();
--
2.49.0

65
pkgs/mcxx/default.nix Normal file
View File

@ -0,0 +1,65 @@
{
stdenv
, fetchFromGitHub
, autoreconfHook
, nanos6
, gperf
, python3
, gfortran
, pkg-config
, sqlite
, flex
, bison
, gcc
}:
stdenv.mkDerivation rec {
pname = "mcxx";
version = "2023.11";
passthru = {
CC = "mcc";
CXX = "mcxx";
};
# mcxx doesn't use tags, so we pick the same version of the ompss2 release
src = fetchFromGitHub {
owner = "bsc-pm";
repo = pname;
rev = "github-release-${version}";
hash = "sha256-GyBvyy/HD3t9rHSXAYZRMhn4o4Nm/HFfjuOS8J0LPu8=";
};
enableParallelBuilding = true;
nativeBuildInputs = [
autoreconfHook
bison
flex
python3
gfortran
pkg-config
gperf
gcc
];
buildInputs = [
nanos6
sqlite.dev
];
patches = [ ./intel.patch ];
preConfigure = ''
export ICC=icc
export ICPC=icpc
export IFORT=ifort
'';
configureFlags = [
"--enable-ompss-2"
"--with-nanos6=${nanos6}"
# Fails with "memory exhausted" with bison 3.7.1
# "--enable-bison-regeneration"
];
}

60
pkgs/mcxx/git.nix Normal file
View File

@ -0,0 +1,60 @@
{
stdenv
, fetchFromGitHub
, autoreconfHook
, nanos6
, gperf
, python
, gfortran
, pkg-config
, sqlite
, flex
, bison
, gcc
}:
stdenv.mkDerivation rec {
pname = "mcxx";
version = src.shortRev;
passthru = {
CC = "mcc";
CXX = "mcxx";
};
src = builtins.fetchGit {
url = "ssh://git@bscpm04.bsc.es/mercurium/mcxx";
ref = "master";
};
enableParallelBuilding = true;
buildInputs = [
autoreconfHook
nanos6
gperf
python
gfortran
pkg-config
sqlite.dev
bison
flex
gcc
];
# TODO: Not sure if we need this patch anymore (?)
#patches = [ ./intel.patch ];
preConfigure = ''
export ICC=icc
export ICPC=icpc
export IFORT=ifort
'';
configureFlags = [
"--enable-ompss-2"
"--with-nanos6=${nanos6}"
# Fails with "memory exhausted" with bison 3.7.1
# "--enable-bison-regeneration"
];
}

19
pkgs/mcxx/intel.patch Normal file
View File

@ -0,0 +1,19 @@
--- a/configure.ac 2020-07-10 16:15:11.431606455 +0200
+++ b/configure.ac 2020-07-10 16:15:24.291586572 +0200
@@ -367,16 +367,6 @@
[ enable_intel_compilers="yes"])
AC_MSG_RESULT([$enable_intel_compilers])
-
-IFORT=
-ICC=
-ICPC=
-if test x"$enable_intel_compilers" = x"yes";
-then
- AC_CHECK_PROG([IFORT], [ifort], [ifort])
- AC_CHECK_PROG([ICC], [icc], [icc])
- AC_CHECK_PROG([ICPC], [icpc], [icpc])
-fi
dnl --------------- END Intel Compilers ---------------------
mic_compilation="no"

59
pkgs/mcxx/rarias.nix Normal file
View File

@ -0,0 +1,59 @@
{ stdenv
, fetchgit
, autoreconfHook
, nanos6
, gperf
, python
, gfortran
, pkg-config
, sqlite
, flex
, bison
, gcc
}:
stdenv.mkDerivation rec {
name = "mcxx-rarias";
#version attribute ignored when using fetchgit:
#version = "2.2.0-70a299cf";
#src = /home/Computational/rarias/mcxx;
src = builtins.fetchGit {
url = "ssh://git@bscpm04.bsc.es/rarias/mcxx";
rev = "44129a6ac05b8f78b06e9e2eff71438b5ca4d29f";
};
enableParallelBuilding = true;
buildInputs = [
autoreconfHook
nanos6
gperf
python
gfortran
pkg-config
sqlite.dev
bison
flex
gcc
];
patches = [ ./intel.patch ];
preConfigure = ''
export ICC=icc
export ICPC=icpc
export IFORT=ifort
'';
configureFlags = [
"--enable-ompss-2"
"--with-nanos6=${nanos6}"
# "--enable-bison-regeneration"
];
# Regenerate ia32 builtins to add the ones for gcc9
#preBuild = ''
# make generate_builtins_ia32 GXX_X86_BUILTINS=${gcc}/bin/g++
#'';
}

36
pkgs/mpich/default.nix Normal file
View File

@ -0,0 +1,36 @@
{
stdenv
, lib
, libfabric
, mpich
, pmix
, gfortran
, symlinkJoin
}:
let
# pmix comes with the libraries in .out and headers in .dev
pmixAll = symlinkJoin {
name = "pmix-all";
paths = [ pmix.dev pmix.out ];
};
in mpich.overrideAttrs (old: {
buildInput = old.buildInputs ++ [
libfabric
pmixAll
];
configureFlags = [
"--enable-shared"
"--enable-sharedlib"
"--with-pm=no"
"--with-device=ch4:ofi"
"--with-pmi=pmix"
"--with-pmix=${pmixAll}"
"--with-libfabric=${libfabric}"
"--enable-g=log"
] ++ lib.optionals (lib.versionAtLeast gfortran.version "10") [
"FFLAGS=-fallow-argument-mismatch" # https://github.com/pmodels/mpich/issues/4300
"FCFLAGS=-fallow-argument-mismatch"
];
hardeningDisable = [ "all" ];
})

View File

@ -0,0 +1,32 @@
From 6fc5bef066ac011d6b15a7c090f4498b0b730818 Mon Sep 17 00:00:00 2001
From: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
Date: Fri, 12 Apr 2024 14:44:43 +0200
Subject: [PATCH] Add missing cstdint include
---
src/dependencies/DataTrackingSupport.hpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/dependencies/DataTrackingSupport.hpp b/src/dependencies/DataTrackingSupport.hpp
index 56226085..cdfd5e1c 100644
--- a/src/dependencies/DataTrackingSupport.hpp
+++ b/src/dependencies/DataTrackingSupport.hpp
@@ -1,13 +1,14 @@
/*
This file is part of Nanos6 and is licensed under the terms contained in the COPYING file.
- Copyright (C) 2020 Barcelona Supercomputing Center (BSC)
+ Copyright (C) 2020-2024 Barcelona Supercomputing Center (BSC)
*/
#ifndef DATA_TRACKING_SUPPORT_HPP
#define DATA_TRACKING_SUPPORT_HPP
#include "support/config/ConfigVariable.hpp"
+#include <cstdint>
class Task;
--
2.44.0

124
pkgs/nanos6/default.nix Normal file
View File

@ -0,0 +1,124 @@
{
stdenv
, lib
, fetchFromGitHub
, automake
, autoconf
, libtool
, pkg-config
, numactl
, hwloc
, papi
, boost
, ovni
, enableDebug ? false
, enableJemalloc ? true
, jemallocNanos6 ? null
, cachelineBytes ? 64
, enableGlibcxxDebug ? false
, useGit ? false
, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6"
, gitBranch ? "master"
, gitCommit ? "f82762b66c82b5174a8eaad33f6c2f335ac759b4"
}:
assert enableJemalloc -> (jemallocNanos6 != null);
with lib;
let
release = rec {
version = "4.3";
src = fetchFromGitHub {
owner = "bsc-pm";
repo = "nanos6";
rev = "version-${version}";
hash = "sha256-/c6WiKBsAo/01uvMRmjv0PMucbrgvaGmbxlPE6q+dfE=";
};
};
git = rec {
version = src.shortRev;
src = builtins.fetchGit {
url = gitUrl;
ref = gitBranch;
rev = gitCommit;
};
};
source = if (useGit) then git else release;
in
stdenv.mkDerivation (source // {
pname = "nanos6";
prePatch = ''
patchShebangs scripts/generate_config.sh
patchShebangs autogen.sh
'';
enableParallelBuilding = true;
preConfigure = ''
export CACHELINE_WIDTH=${toString cachelineBytes}
./autogen.sh
'' + lib.optionalString (useGit) ''
export NANOS6_GIT_VERSION=${gitCommit}
export NANOS6_GIT_BRANCH=${gitBranch}
'';
configureFlags = [
"--with-hwloc=${hwloc}"
"--disable-all-instrumentations"
"--enable-ovni-instrumentation"
"--with-ovni=${ovni}"
] ++
(optional enableJemalloc "--with-jemalloc=${jemallocNanos6}") ++
(optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG");
postConfigure = lib.optionalString (!enableDebug) ''
# Disable debug
sed -i 's/\([a-zA-Z0-9_]*nanos6_debug[a-zA-Z0-9_]*\)\s*[+]\?=.*/\1 =/g' Makefile.am
'';
# The "bindnow" flags are incompatible with ifunc resolution mechanism. We
# disable all by default, which includes bindnow.
hardeningDisable = [ "all" ];
# Keep debug symbols in the debug variant of the library
dontStrip = enableDebug;
separateDebugInfo = true;
nativeBuildInputs = [
autoconf
automake
libtool
pkg-config
# TODO: papi_version is needed for configure:
# ./configure: line 27378: papi_version: command not found
# This probably breaks cross-compilation
papi
];
buildInputs = [
boost
numactl
hwloc
papi
ovni
];
# Create a script that sets NANOS6_HOME
postInstall = ''
mkdir -p $out/nix-support
echo "export NANOS6_HOME=$out" >> $out/nix-support/setup-hook
'';
meta = with lib; {
homepage = "https://github.com/bsc-pm/nanos6";
description = "Nanos6 runtime for OmpSs-2" +
optionalString (enableDebug) " (with debug symbols)";
platforms = platforms.linux;
license = licenses.gpl3;
};
})

12
pkgs/nanos6/jemalloc.nix Normal file
View File

@ -0,0 +1,12 @@
{ jemalloc }:
jemalloc.overrideAttrs (old: {
configureFlags = old.configureFlags ++ [
"--with-jemalloc-prefix=nanos6_je_"
"--enable-stats"
];
hardeningDisable = [ "all" ];
meta = old.meta // {
description = old.meta.description + " (for Nanos6)";
};
})

90
pkgs/nix-wrap/default.nix Normal file
View File

@ -0,0 +1,90 @@
{
stdenv
, bashInteractive
, busybox
, nix
, writeText
, pkgsStatic
}:
let
bubblewrap = pkgsStatic.bubblewrap;
nixPrefix = "/gpfs/projects/bsc15/nix";
nixConfDir = "share";
nix_wrap_sh = writeText "nix-wrap.sh" ''
#!/usr/bin/env bash
#
busybox_bin="${nixPrefix}${busybox}/bin"
bubblewrap_bin="${nixPrefix}/${bubblewrap}/bin"
bashInteractive_bin="${bashInteractive}/bin"
nix_bin="${nix}/bin"
rootdir=$(mktemp -d)
tmpdir=$(mktemp -d)
args=(
--bind "$rootdir/" /
--bind "${nixPrefix}/nix" /nix
--bind "$busybox_bin" /bin
--dev-bind /dev /dev
--bind /boot /boot
--proc /proc
--bind /run /run
--bind /sys /sys
--bind "$tmpdir" /tmp
--bind "$PWD" "$PWD"
--bind /etc/host.conf /etc/host.conf
--bind /etc/hosts /etc/hosts
--bind /etc/networks /etc/networks
--bind /etc/passwd /etc/passwd
--bind /etc/group /etc/group
--bind /etc/nsswitch.conf /etc/nsswitch.conf
--bind /etc/resolv.conf /etc/resolv.conf
)
export PATH="/bin:$bashInteractive_bin"
export PATH="$nix_bin:$PATH"
export TMPDIR=/tmp
export PS1="[nix-wrap] \u@\h \W $ "
export NIX_CONF_DIR=@out@/share
if [ $# -eq 0 ]; then
"$bubblewrap_bin/bwrap" ''${args[@]} /bin/sh
else
"$bubblewrap_bin/bwrap" ''${args[@]} "''${@}"
fi
'';
nix_conf = writeText "nix.conf" ''
experimental-features = nix-command flakes
sandbox-fallback = false
'';
in
stdenv.mkDerivation rec {
version = "0.0.1";
name = "nix-wrap";
buildInputs = [
bashInteractive
busybox
nix
];
src = null;
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
dontPatchShebangs = true;
NIX_DEBUG = 0;
installPhase = ''
mkdir -p $out/bin
substituteAll ${nix_wrap_sh} $out/bin/nix-wrap
chmod +x $out/bin/nix-wrap
mkdir -p $out/share
cp ${nix_conf} $out/share/nix.conf
'';
}

219
pkgs/nix/default.nix Normal file
View File

@ -0,0 +1,219 @@
{ lib, fetchurl, fetchFromGitHub, callPackage
, storeDir ? "/nix/store"
, stateDir ? "/nix/var"
, confDir ? "/etc"
, boehmgc
, stdenv, llvmPackages_6
}:
let
common =
{ lib, stdenv, fetchpatch, perl, curl, bzip2, sqlite, openssl ? null, xz
, bash, coreutils, gzip, gnutar
, pkg-config, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json
, autoreconfHook, autoconf-archive, bison, flex, libxml2, libxslt, docbook5, docbook_xsl_ns
, jq, libarchive, rustc, cargo
# Used by tests
, gmock
, busybox-sandbox-shell
, storeDir
, stateDir
, confDir
, withLibseccomp ? lib.any (lib.meta.platformMatch stdenv.hostPlatform) libseccomp.meta.platforms, libseccomp
, withAWS ? stdenv.isLinux || stdenv.isDarwin, aws-sdk-cpp
, name, suffix ? "", src, crates ? null
}:
let
sh = busybox-sandbox-shell;
nix = stdenv.mkDerivation rec {
inherit name src;
version = lib.getVersion name;
is24 = lib.versionAtLeast version "2.4pre";
isExactly23 = lib.versionAtLeast version "2.3" && lib.versionOlder version "2.4";
VERSION_SUFFIX = suffix;
outputs = [ "out" "dev" "man" "doc" ];
nativeBuildInputs =
[ pkg-config ]
++ lib.optionals is24 [ autoreconfHook autoconf-archive bison flex libxml2 libxslt
docbook5 docbook_xsl_ns jq gmock ];
buildInputs =
[ curl openssl sqlite xz bzip2 nlohmann_json
brotli boost editline
]
++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium
++ lib.optionals is24 [ libarchive rustc cargo ]
++ lib.optional withLibseccomp libseccomp
++ lib.optional withAWS
((aws-sdk-cpp.override {
apis = ["s3" "transfer"];
customMemoryManagement = false;
}).overrideDerivation (args: {
patches = args.patches or [] ++ [(fetchpatch {
url = "https://github.com/edolstra/aws-sdk-cpp/commit/7d58e303159b2fb343af9a1ec4512238efa147c7.patch";
sha256 = "103phn6kyvs1yc7fibyin3lgxz699qakhw671kl207484im55id1";
})];
}));
propagatedBuildInputs = [ boehmgc ];
# Seems to be required when using std::atomic with 64-bit types
NIX_LDFLAGS = lib.optionalString (stdenv.hostPlatform.system == "armv5tel-linux" || stdenv.hostPlatform.system == "armv6l-linux") "-latomic";
preConfigure =
# Copy libboost_context so we don't get all of Boost in our closure.
# https://github.com/NixOS/nixpkgs/issues/45462
''
mkdir -p $out/lib
cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib
rm -f $out/lib/*.a
${lib.optionalString stdenv.isLinux ''
chmod u+w $out/lib/*.so.*
patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.*
''}
'' +
# Unpack the Rust crates.
lib.optionalString is24 ''
tar xvf ${crates} -C nix-rust/
mv nix-rust/nix-vendored-crates* nix-rust/vendor
'' +
# For Nix-2.3, patch around an issue where the Nix configure step pulls in the
# build system's bash and other utilities when cross-compiling
lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform && isExactly23) ''
mkdir tmp/
substitute corepkgs/config.nix.in tmp/config.nix.in \
--subst-var-by bash ${bash}/bin/bash \
--subst-var-by coreutils ${coreutils}/bin \
--subst-var-by bzip2 ${bzip2}/bin/bzip2 \
--subst-var-by gzip ${gzip}/bin/gzip \
--subst-var-by xz ${xz}/bin/xz \
--subst-var-by tar ${gnutar}/bin/tar \
--subst-var-by tr ${coreutils}/bin/tr
mv tmp/config.nix.in corepkgs/config.nix.in
'';
configureFlags =
[ "--with-store-dir=${storeDir}"
"--localstatedir=${stateDir}"
"--sysconfdir=${confDir}"
"--disable-init-state"
"--enable-gc"
]
++ lib.optionals stdenv.isLinux [
"--with-sandbox-shell=${sh}/bin/busybox"
]
++ lib.optional (
stdenv.hostPlatform != stdenv.buildPlatform && stdenv.hostPlatform ? nix && stdenv.hostPlatform.nix ? system
) ''--with-system=${stdenv.hostPlatform.nix.system}''
# RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50
++ lib.optional (!withLibseccomp) "--disable-seccomp-sandboxing";
makeFlags = [ "profiledir=$(out)/etc/profile.d" ];
installFlags = [ "sysconfdir=$(out)/etc" ];
doInstallCheck = false;
# socket path becomes too long otherwise
#preInstallCheck = lib.optional stdenv.isDarwin ''
# export TMPDIR=$NIX_BUILD_TOP
#'';
separateDebugInfo = stdenv.isLinux;
enableParallelBuilding = true;
meta = {
description = "Powerful package manager that makes package management reliable and reproducible";
longDescription = ''
Nix is a powerful package manager for Linux and other Unix systems that
makes package management reliable and reproducible. It provides atomic
upgrades and rollbacks, side-by-side installation of multiple versions of
a package, multi-user package management and easy setup of build
environments.
'';
homepage = "https://nixos.org/";
license = lib.licenses.lgpl2Plus;
maintainers = [ lib.maintainers.eelco ];
platforms = lib.platforms.unix;
outputsToInstall = [ "out" "man" ];
};
passthru = {
perl-bindings = stdenv.mkDerivation {
pname = "nix-perl";
inherit version;
inherit src;
postUnpack = "sourceRoot=$sourceRoot/perl";
# This is not cross-compile safe, don't have time to fix right now
# but noting for future travellers.
nativeBuildInputs =
[ perl pkg-config curl nix libsodium boost autoreconfHook autoconf-archive ];
configureFlags =
[ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}"
"--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}"
];
preConfigure = "export NIX_STATE_DIR=$TMPDIR";
preBuild = "unset NIX_INDENT_MAKE";
};
};
};
in nix;
in rec {
nix = nixUnstable;
nixUnstable = lib.lowPrio (callPackage common rec {
name = "nix-2.4${suffix}";
suffix = "pre7534_b92f58f6";
#src = /home/Computational/rarias/nix/nix-rodarima;
src = fetchFromGitHub {
owner = "rodarima";
repo = "nix";
rev = "3a642187c33ed46d952d3a50a83b2576b704fab7";
sha256 = "0s8is2czpkcj1x1kcjqgbnsbbl03w3fwjjiclsd44zh1ij3wb90s";
};
crates = fetchurl {
url = "https://hydra.nixos.org/build/118797694/download/1/nix-vendored-crates-2.4pre7534_b92f58f6.tar.xz";
sha256 = "a4c2612bbd81732bbb899bc0c230e07b16f6b6150ffbb19c4907dedbbc2bf9fc";
};
inherit storeDir stateDir confDir boehmgc;
});
nixFlakes = lib.lowPrio (callPackage common rec {
name = "nix-2.4${suffix}";
suffix = "pre20200521_00b562c";
src = fetchFromGitHub {
owner = "NixOS";
repo = "nix";
rev = "00b562c87ec4c3bbe514f5dc1f4d1c41f66f66bf";
sha256 = "0s8is2czpkcj1x1kcjqgbnsbbl03w3fwjjiclsd44zh1ij3wb90s";
};
crates = fetchurl {
url = "https://hydra.nixos.org/build/118093786/download/1/nix-vendored-crates-2.4pre20200501_941f952.tar.xz";
sha256 = "060f4n5srdbb8vsj0m14aqch7im79a4h5g3nrs41p1xc602vhcdl";
};
inherit storeDir stateDir confDir boehmgc;
});
}

214
pkgs/nix/static.nix Normal file
View File

@ -0,0 +1,214 @@
{ lib, fetchurl, fetchFromGitHub, callPackage
, storeDir ? "/nix/store"
, stateDir ? "/nix/var"
, confDir ? "/etc"
, boehmgc
, stdenv, llvmPackages_6
, sandbox-shell ? "/bin/sh"
}:
let
enableStatic = true;
common =
{ lib, stdenv, fetchpatch, perl, curl, bzip2, sqlite, openssl ? null, xz
, bash, coreutils, gzip, gnutar
, pkg-config, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json
, autoreconfHook, autoconf-archive, bison, flex, libxml2, libxslt, docbook5, docbook_xsl_ns
, jq, libarchive
# Used by tests
, gmock
, storeDir
, stateDir
, confDir
, withLibseccomp ? lib.any (lib.meta.platformMatch stdenv.hostPlatform) libseccomp.meta.platforms, libseccomp
, withAWS ? !enableStatic && (stdenv.isLinux || stdenv.isDarwin), aws-sdk-cpp
, enableStatic ? true
, name, suffix ? "", src
}:
let
nix = stdenv.mkDerivation rec {
inherit name src;
version = lib.getVersion name;
is24 = lib.versionAtLeast version "2.4pre";
isExactly23 = lib.versionAtLeast version "2.3" && lib.versionOlder version "2.4";
VERSION_SUFFIX = suffix;
outputs = [ "out" "dev" "man" "doc" ];
nativeBuildInputs =
[ pkg-config ]
++ lib.optionals is24 [ autoreconfHook autoconf-archive bison flex libxml2 libxslt
docbook5 docbook_xsl_ns jq ];
buildInputs =
[ curl openssl sqlite xz bzip2 nlohmann_json
brotli boost editline boehmgc
]
++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium
++ lib.optionals is24 [ libarchive gmock ]
++ lib.optional withLibseccomp libseccomp
++ lib.optional withAWS
((aws-sdk-cpp.override {
apis = ["s3" "transfer"];
customMemoryManagement = false;
}).overrideDerivation (args: {
patches = args.patches or [] ++ [(fetchpatch {
url = "https://github.com/edolstra/aws-sdk-cpp/commit/7d58e303159b2fb343af9a1ec4512238efa147c7.patch";
sha256 = "103phn6kyvs1yc7fibyin3lgxz699qakhw671kl207484im55id1";
})];
}));
propagatedBuildInputs = [ boehmgc ];
# Seems to be required when using std::atomic with 64-bit types
NIX_LDFLAGS =
# need to list libraries individually until
# https://github.com/NixOS/nix/commit/3e85c57a6cbf46d5f0fe8a89b368a43abd26daba
# is in a release
lib.optionalString enableStatic "-lssl -lbrotlicommon -lssh2 -lz -lnghttp2 -lcrypto"
# need to detect it here until
# https://github.com/NixOS/nix/commits/74b4737d8f0e1922ef5314a158271acf81cd79f8
# is in a release
+ lib.optionalString (stdenv.hostPlatform.system == "armv5tel-linux" || stdenv.hostPlatform.system == "armv6l-linux") "-latomic";
preConfigure =
# Copy libboost_context so we don't get all of Boost in our closure.
# https://github.com/NixOS/nixpkgs/issues/45462
lib.optionalString (!enableStatic) ''
mkdir -p $out/lib
cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib
rm -f $out/lib/*.a
${lib.optionalString stdenv.isLinux ''
chmod u+w $out/lib/*.so.*
patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.*
''}
'' +
# For Nix-2.3, patch around an issue where the Nix configure step pulls in the
# build system's bash and other utilities when cross-compiling
lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform && isExactly23) ''
mkdir tmp/
substitute corepkgs/config.nix.in tmp/config.nix.in \
--subst-var-by bash ${bash}/bin/bash \
--subst-var-by coreutils ${coreutils}/bin \
--subst-var-by bzip2 ${bzip2}/bin/bzip2 \
--subst-var-by gzip ${gzip}/bin/gzip \
--subst-var-by xz ${xz}/bin/xz \
--subst-var-by tar ${gnutar}/bin/tar \
--subst-var-by tr ${coreutils}/bin/tr
mv tmp/config.nix.in corepkgs/config.nix.in
'';
configureFlags =
[ "--with-store-dir=${storeDir}"
"--localstatedir=${stateDir}"
"--sysconfdir=${confDir}"
"--disable-init-state"
"--enable-gc"
]
++ lib.optionals stdenv.isLinux [
"--with-sandbox-shell=${sandbox-shell}"
]
++ lib.optional (
stdenv.hostPlatform != stdenv.buildPlatform && stdenv.hostPlatform ? nix && stdenv.hostPlatform.nix ? system
) ''--with-system=${stdenv.hostPlatform.nix.system}''
# RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50
++ lib.optional (!withLibseccomp) "--disable-seccomp-sandboxing";
makeFlags = [ "profiledir=$(out)/etc/profile.d" ]
++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "PRECOMPILE_HEADERS=0";
installFlags = [ "sysconfdir=$(out)/etc" ];
doInstallCheck = true; # not cross
# socket path becomes too long otherwise
preInstallCheck = lib.optional stdenv.isDarwin ''
export TMPDIR=$NIX_BUILD_TOP
'';
separateDebugInfo = stdenv.isLinux;
enableParallelBuilding = true;
meta = {
description = "Powerful package manager that makes package management reliable and reproducible";
longDescription = ''
Nix is a powerful package manager for Linux and other Unix systems that
makes package management reliable and reproducible. It provides atomic
upgrades and rollbacks, side-by-side installation of multiple versions of
a package, multi-user package management and easy setup of build
environments.
'';
homepage = "https://nixos.org/";
license = lib.licenses.lgpl2Plus;
maintainers = [ lib.maintainers.eelco ];
platforms = lib.platforms.unix;
outputsToInstall = [ "out" "man" ];
};
passthru = {
perl-bindings = stdenv.mkDerivation {
pname = "nix-perl";
inherit version;
inherit src;
postUnpack = "sourceRoot=$sourceRoot/perl";
# This is not cross-compile safe, don't have time to fix right now
# but noting for future travellers.
nativeBuildInputs =
[ perl pkg-config curl nix libsodium boost autoreconfHook autoconf-archive ];
configureFlags =
[ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}"
"--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}"
];
preConfigure = "export NIX_STATE_DIR=$TMPDIR";
preBuild = "unset NIX_INDENT_MAKE";
};
};
};
in nix;
in rec {
nix = nixStable;
nixStable = callPackage common (rec {
name = "nix-2.3.7";
src = fetchurl {
url = "https://nixos.org/releases/nix/${name}/${name}.tar.xz";
sha256 = "dd8f52849414e5a878afe7e797aa4e22bab77c875d9da5a38d5f1bada704e596";
};
inherit storeDir stateDir confDir boehmgc;
} // lib.optionalAttrs stdenv.cc.isClang {
stdenv = llvmPackages_6.stdenv;
});
nixUnstable = lib.lowPrio (callPackage common rec {
name = "nix-2.4${suffix}";
suffix = "pre20200721_ff314f1";
src = fetchFromGitHub {
owner = "NixOS";
repo = "nix";
rev = "ff314f186e3f91d87af6ad96c0ae3b472494b940";
hash = "sha256-QibpLo4/gf2xYGoeQcgjZzH/qy5TBRVH+QCHgqOwur0=";
};
inherit storeDir stateDir confDir boehmgc;
});
nixFlakes = nixUnstable;
}

17
pkgs/nix/upload.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
# This post build hook sends the closure of the just built derivation to the
# target machine. In our case this is the MareNostrum4 cluster.
# set -e fails as the profile runs some erroring programs
# We need the profile to load nix in the $PATH
. /etc/profile
set -eu
set -f # disable globbing
export IFS=' '
nixroot=/gpfs/projects/bsc15/nix
store=$nixroot/nix/store
target=ssh://mn
nix copy --to $target $OUT_PATHS

18
pkgs/nixtools/default.nix Normal file
View File

@ -0,0 +1,18 @@
{
stdenv
, glibc
}:
stdenv.mkDerivation rec {
pname = "nixtools";
version = "${src.shortRev}";
src = builtins.fetchGit {
url = "ssh://git@bscpm04.bsc.es/rarias/nixtools";
ref = "master";
rev = "a103e392048ace3ed88ce74648b32c9e6ed094da";
};
buildInputs = [ glibc.static ];
makeFlags = [ "DESTDIR=$(out)" ];
preBuild = "env";
dontPatchShebangs = true;
}

84
pkgs/nodes/default.nix Normal file
View File

@ -0,0 +1,84 @@
{
stdenv
, lib
, fetchFromGitHub
, pkg-config
, perl
, numactl
, hwloc
, boost
, autoreconfHook
, ovni
, nosv
, clangOmpss2
, useGit ? false
, gitUrl ? "ssh://git@gitlab-internal.bsc.es/nos-v/nodes.git"
, gitBranch ? "master"
, gitCommit ? "6002ec9ae6eb876d962cc34366952a3b26599ba6"
}:
with lib;
let
release = rec {
version = "1.3";
src = fetchFromGitHub {
owner = "bsc-pm";
repo = "nodes";
rev = "version-${version}";
hash = "sha256-cFb9pxcjtkMmH0CsGgUO9LTdXDNh7MCqicgGWawLrsU=";
};
};
git = rec {
version = src.shortRev;
src = builtins.fetchGit {
url = gitUrl;
ref = gitBranch;
rev = gitCommit;
};
};
source = if (useGit) then git else release;
in
stdenv.mkDerivation rec {
pname = "nodes";
inherit (source) src version;
enableParallelBuilding = true;
dontStrip = true;
separateDebugInfo = true;
configureFlags = [
"--with-nosv=${nosv}"
"--with-ovni=${ovni}"
] ++ lib.optionals doCheck [
"--with-nodes-clang=${clangOmpss2}"
];
doCheck = false;
nativeCheckInputs = [
clangOmpss2
];
# The "bindnow" flags are incompatible with ifunc resolution mechanism. We
# disable all by default, which includes bindnow.
hardeningDisable = [ "all" ];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
boost
numactl
hwloc
nosv
ovni
];
passthru = {
inherit nosv;
};
}

62
pkgs/nosv/default.nix Normal file
View File

@ -0,0 +1,62 @@
{
stdenv
, lib
, autoreconfHook
, fetchFromGitHub
, pkg-config
, numactl
, hwloc
, papi
, enablePapi ? true
, cacheline ? 64 # bits
, ovni ? null
, useGit ? false
, gitUrl ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git"
, gitBranch ? "master"
, gitCommit ? "9f47063873c3aa9d6a47482a82c5000a8c813dd8"
}:
with lib;
let
release = rec {
version = "3.2.0";
src = fetchFromGitHub {
owner = "bsc-pm";
repo = "nos-v";
rev = "${version}";
hash = "sha256-yaz92426EM8trdkBJlISmAoG9KJCDTvoAW/HKrasvOw=";
};
};
git = rec {
version = src.shortRev;
src = builtins.fetchGit {
url = gitUrl;
ref = gitBranch;
rev = gitCommit;
};
};
source = if (useGit) then git else release;
in
stdenv.mkDerivation rec {
pname = "nosv";
inherit (source) src version;
hardeningDisable = [ "all" ];
dontStrip = true;
separateDebugInfo = true;
configureFlags = [
"--with-ovni=${ovni}"
"CACHELINE_WIDTH=${toString cacheline}"
];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
numactl
hwloc
ovni
] ++ lib.optionals enablePapi [ papi ];
}

120
pkgs/openmpi/default.nix Normal file
View File

@ -0,0 +1,120 @@
{ stdenv, lib, fetchurl, fetchpatch, gfortran, perl, libnl
, rdma-core, zlib, numactl, libevent, hwloc, targetPackages, symlinkJoin
, libpsm2, libfabric, pmix, pmi2, ucx
# Enable CUDA support
, cudaSupport ? false, cudatoolkit ? null
# Enable the Sun Grid Engine bindings
, enableSGE ? false
# Pass PATH/LD_LIBRARY_PATH to point to current mpirun by default
, enablePrefix ? false
# Enable libfabric support (necessary for Omnipath networks) on x86_64 linux
, fabricSupport ? stdenv.isLinux && stdenv.isx86_64
# Enable mpi_cxx.so
, enableCxx ? false
}:
assert !cudaSupport || cudatoolkit != null;
let
version = "4.0.4";
cudatoolkit_joined = symlinkJoin {
name = "${cudatoolkit.name}-unsplit";
paths = [ cudatoolkit.out cudatoolkit.lib ];
};
in stdenv.mkDerivation rec {
pname = "openmpi";
inherit version;
src = with lib.versions; fetchurl {
url = "https://www.open-mpi.org/software/ompi/v${major version}.${minor version}/downloads/${pname}-${version}.tar.bz2";
sha256 = "1i0slg2dxjdgw513aml1n9dsbdxn2fimi2b5712d5r9z4ar4xqj7";
};
postPatch = ''
patchShebangs ./
# Ensure build is reproducible
ts=`date -d @$SOURCE_DATE_EPOCH`
sed -i 's/OPAL_CONFIGURE_USER=.*/OPAL_CONFIGURE_USER="nixbld"/' configure
sed -i 's/OPAL_CONFIGURE_HOST=.*/OPAL_CONFIGURE_HOST="localhost"/' configure
sed -i "s/OPAL_CONFIGURE_DATE=.*/OPAL_CONFIGURE_DATE=\"$ts\"/" configure
find -name "Makefile.in" -exec sed -i "s/\`date\`/$ts/" \{} \;
'';
buildInputs = with stdenv; [ gfortran zlib ]
++ lib.optionals isLinux [ libnl numactl pmix ucx ]
++ lib.optionals cudaSupport [ cudatoolkit ]
++ [ libevent hwloc ]
++ lib.optional (isLinux || isFreeBSD) rdma-core
++ lib.optional fabricSupport [ libpsm2 libfabric ];
nativeBuildInputs = [ perl ];
configureFlags = with stdenv; lib.optional (!cudaSupport) "--disable-mca-dso"
++ lib.optionals isLinux [
"--with-libnl=${libnl.dev}"
"--with-pmix=${pmix}"
"--with-pmix-libdir=${pmix}/lib"
"--with-pmi=${pmi2}"
"--with-pmi-libdir=${pmi2}/lib"
] ++ lib.optional enableSGE "--with-sge"
++ lib.optional enablePrefix "--enable-mpirun-prefix-by-default"
# TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build
# https://github.com/openucx/ucx
# https://www.open-mpi.org/faq/?category=buildcuda
++ lib.optionals cudaSupport [ "--with-cuda=${cudatoolkit_joined}" "--enable-dlopen" ]
++ lib.optionals fabricSupport [ "--with-psm2=${libpsm2}" "--with-libfabric=${libfabric}" ]
++ lib.optional enableCxx "--enable-mpi-cxx"
;
enableParallelBuilding = true;
hardeningDisable = [ "all" ];
postInstall = ''
rm -f $out/lib/*.la
'';
postFixup = ''
# default compilers should be indentical to the
# compilers at build time
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \
$out/share/openmpi/mpicc-wrapper-data.txt
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \
$out/share/openmpi/ortecc-wrapper-data.txt
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}c++:' \
$out/share/openmpi/mpic++-wrapper-data.txt
sed -i 's:compiler=.*:compiler=${gfortran}/bin/${gfortran.targetPrefix}gfortran:' \
$out/share/openmpi/mpifort-wrapper-data.txt
'';
doCheck = true;
passthru = {
inherit cudaSupport cudatoolkit;
};
meta = with lib; {
homepage = "https://www.open-mpi.org/";
description = "Open source MPI-3 implementation";
longDescription = "The Open MPI Project is an open source MPI-3 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers.";
maintainers = with maintainers; [ markuskowa ];
license = licenses.bsd3;
platforms = platforms.unix;
# In order to use OpenMPI with Extrae we need to keep the Extrae libraries
# rather than the ones from OpenMPI. This happens with libompitrace.so, so
# we set to a lower priority (higher value) the OpenMPI package.
priority = 10;
};
}

117
pkgs/openmpi/with-slurm.nix Normal file
View File

@ -0,0 +1,117 @@
{ stdenv, lib, fetchurl, fetchpatch, gfortran, perl, libnl
, rdma-core, zlib, numactl, libevent, hwloc, targetPackages, symlinkJoin
, libpsm2, libfabric
# Enable CUDA support
, cudaSupport ? false, cudatoolkit ? null
# Enable the Sun Grid Engine bindings
, enableSGE ? false
# Pass PATH/LD_LIBRARY_PATH to point to current mpirun by default
, enablePrefix ? false
# Enable libfabric support (necessary for Omnipath networks) on x86_64 linux
, fabricSupport ? stdenv.isLinux && stdenv.isx86_64
# Enable mpi_cxx.so
, enableCxx ? false
, slurm
}:
assert !cudaSupport || cudatoolkit != null;
let
version = "4.0.3";
cudatoolkit_joined = symlinkJoin {
name = "${cudatoolkit.name}-unsplit";
paths = [ cudatoolkit.out cudatoolkit.lib ];
};
in stdenv.mkDerivation rec {
pname = "openmpi";
inherit version;
src = with lib.versions; fetchurl {
url = "https://www.open-mpi.org/software/ompi/v${major version}.${minor version}/downloads/${pname}-${version}.tar.bz2";
sha256 = "00zxcw99gr5n693cmcmn4f6a47vx1ywna895p0x7p163v37gw0hl";
};
postPatch = ''
patchShebangs ./
# Ensure build is reproducible
ts=`date -d @$SOURCE_DATE_EPOCH`
sed -i 's/OPAL_CONFIGURE_USER=.*/OPAL_CONFIGURE_USER="nixbld"/' configure
sed -i 's/OPAL_CONFIGURE_HOST=.*/OPAL_CONFIGURE_HOST="localhost"/' configure
sed -i "s/OPAL_CONFIGURE_DATE=.*/OPAL_CONFIGURE_DATE=\"$ts\"/" configure
find -name "Makefile.in" -exec sed -i "s/\`date\`/$ts/" \{} \;
'';
buildInputs = with stdenv; [ gfortran zlib ]
++ lib.optionals isLinux [ libnl numactl ]
++ lib.optionals cudaSupport [ cudatoolkit ]
++ [ libevent hwloc ]
++ lib.optional (isLinux || isFreeBSD) rdma-core
++ lib.optional fabricSupport [ libpsm2 libfabric ]
++ [ slurm ];
nativeBuildInputs = [ perl ];
configureFlags = with stdenv; lib.optional (!cudaSupport) "--disable-mca-dso"
++ lib.optional isLinux "--with-libnl=${libnl.dev}"
++ lib.optional enableSGE "--with-sge"
++ lib.optional enablePrefix "--enable-mpirun-prefix-by-default"
# TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build
# https://github.com/openucx/ucx
# https://www.open-mpi.org/faq/?category=buildcuda
++ lib.optionals cudaSupport [ "--with-cuda=${cudatoolkit_joined}" "--enable-dlopen" ]
++ lib.optionals fabricSupport [ "--with-psm2=${libpsm2}" "--with-libfabric=${libfabric}" ]
++ lib.optional enableCxx "--enable-mpi-cxx"
++ [ "--with-slurm=${slurm}" "--with-pmi" "--enable-static" "--disable-dlopen" ]
;
enableParallelBuilding = true;
postInstall = ''
rm -f $out/lib/*.la
'';
postFixup = ''
# default compilers should be indentical to the
# compilers at build time
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \
$out/share/openmpi/mpicc-wrapper-data.txt
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \
$out/share/openmpi/ortecc-wrapper-data.txt
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}c++:' \
$out/share/openmpi/mpic++-wrapper-data.txt
sed -i 's:compiler=.*:compiler=${gfortran}/bin/${gfortran.targetPrefix}gfortran:' \
$out/share/openmpi/mpifort-wrapper-data.txt
'';
doCheck = true;
passthru = {
inherit cudaSupport cudatoolkit;
};
meta = with lib; {
homepage = "https://www.open-mpi.org/";
description = "Open source MPI-3 implementation";
longDescription = "The Open MPI Project is an open source MPI-3 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers.";
maintainers = with maintainers; [ markuskowa ];
license = licenses.bsd3;
platforms = platforms.unix;
# In order to use OpenMPI with Extrae we need to keep the Extrae libraries
# rather than the ones from OpenMPI. This happens with libompitrace.so, so
# we set to a lower priority (higher value) the OpenMPI package.
priority = 10;
};
}

48
pkgs/osu/default.nix Normal file
View File

@ -0,0 +1,48 @@
{
stdenv
, fetchurl
, mpi
, lib
, symlinkJoin
}:
let
mpiAll = symlinkJoin {
name = "mpi-all";
paths = [ mpi.all ];
};
in
stdenv.mkDerivation rec {
version = "7.1-1";
name = "osu-micro-benchmarks-${version}";
src = fetchurl {
url = "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-${version}.tar.gz";
sha256 = "sha256-hfTdi+HfMSVeIyhSdprluC6HpfsUvi+Ouhrp3o/+ORo=";
};
doCheck = true;
enableParallelBuilding = true;
nativeBuildInputs = [ mpiAll ];
buildInputs = [ mpiAll ];
hardeningDisable = [ "all" ];
configureFlags = [
"CC=mpicc"
"CXX=mpicxx"
];
postInstall = ''
mkdir -p $out/bin
for f in $(find $out -executable -type f); do
ln -s "$f" $out/bin/$(basename "$f")
done
'';
meta = {
description = "OSU Micro-Benchmarks";
homepage = "http://mvapich.cse.ohio-state.edu/benchmarks/";
maintainers = [ ];
platforms = lib.platforms.all;
};
}

17
pkgs/otf/default.nix Normal file
View File

@ -0,0 +1,17 @@
{
stdenv
#, mkDerivation
, fetchurl
}:
stdenv.mkDerivation rec {
version = "1.2.18";
pname = "otf";
src = fetchurl {
url =
"http://paratools01.rrp.net/wp-content/uploads/2016/06/OTF-SRC-${version}.tar.gz";
sha256 = "10k1hyyn6w4lf5kbn1krfacaspvn1xg3qgn4027xal3hjf3kkxap";
};
patches = [ ./printf.patch ];
}

11
pkgs/otf/printf.patch Normal file
View File

@ -0,0 +1,11 @@
--- a/tools/otfconfig/otfconfig.c 2020-11-21 13:55:23.195530435 +0100
+++ b/tools/otfconfig/otfconfig.c 2020-11-21 13:55:53.112402154 +0100
@@ -75,7 +75,7 @@ int main( int argc, char** argv ) {
strcat( tmp, "\n" );
- printf( tmp );
+ printf("%s", tmp );
}
}

View File

@ -1,67 +0,0 @@
final: prev:
{
# Set MPICH as default
mpi = final.mpich;
# Configure the network for MPICH
mpich = with final; let
# pmix comes with the libraries in .out and headers in .dev
pmixAll = symlinkJoin {
name = "pmix-all";
paths = [ pmix.dev pmix.out ];
};
in prev.mpich.overrideAttrs (old: {
buildInput = old.buildInputs ++ [
libfabric
pmixAll
];
configureFlags = [
"--enable-shared"
"--enable-sharedlib"
"--with-pm=no"
"--with-device=ch4:ofi"
"--with-pmi=pmix"
"--with-pmix=${pmixAll}"
"--with-libfabric=${libfabric}"
"--enable-g=log"
] ++ lib.optionals (lib.versionAtLeast gfortran.version "10") [
"FFLAGS=-fallow-argument-mismatch" # https://github.com/pmodels/mpich/issues/4300
"FCFLAGS=-fallow-argument-mismatch"
];
});
slurm = prev.slurm.overrideAttrs (old: {
patches = (old.patches or []) ++ [
# See https://bugs.schedmd.com/show_bug.cgi?id=19324
./slurm-rank-expansion.patch
];
# Install also the pam_slurm_adopt library to restrict users from accessing
# nodes with no job allocated.
postBuild = (old.postBuild or "") + ''
pushd contribs/pam_slurm_adopt
make "PAM_DIR=$out/lib/security"
popd
'';
postInstall = (old.postInstall or "") + ''
pushd contribs/pam_slurm_adopt
make "PAM_DIR=$out/lib/security" install
popd
'';
});
prometheus-slurm-exporter = prev.callPackage ./slurm-exporter.nix { };
meteocat-exporter = prev.callPackage ./meteocat-exporter/default.nix { };
upc-qaire-exporter = prev.callPackage ./upc-qaire-exporter/default.nix { };
cudainfo = prev.callPackage ./cudainfo/default.nix { };
amd-uprof = prev.callPackage ./amd-uprof/default.nix { };
# FIXME: Extend this to all linuxPackages variants. Open problem, see:
# https://discourse.nixos.org/t/whats-the-right-way-to-make-a-custom-kernel-module-available/4636
linuxPackages = prev.linuxPackages.extend (_final: _prev: {
amd-uprof-driver = _prev.callPackage ./amd-uprof/driver.nix { };
});
linuxPackages_latest = prev.linuxPackages_latest.extend(_final: _prev: {
amd-uprof-driver = _prev.callPackage ./amd-uprof/driver.nix { };
});
}

58
pkgs/ovni/default.nix Normal file
View File

@ -0,0 +1,58 @@
{
stdenv
, lib
, cmake
, mpi
, fetchFromGitHub
, useGit ? false
, gitBranch ? "master"
, gitUrl ? "ssh://git@bscpm04.bsc.es/rarias/ovni.git"
, gitCommit ? "e4f62382076f0cf0b1d08175cf57cc0bc51abc61"
, enableDebug ? false
# Only enable MPI if the build is native (fails on cross-compilation)
, useMpi ? (stdenv.buildPlatform.canExecute stdenv.hostPlatform)
}:
let
release = rec {
version = "1.12.0";
src = fetchFromGitHub {
owner = "bsc-pm";
repo = "ovni";
rev = "${version}";
hash = "sha256-H04JvsVKrdqr3ON7JhU0g17jjlg/jzQ7eTfx9vUNd3E=";
} // { shortRev = "a73afcf"; };
};
git = rec {
version = src.shortRev;
src = builtins.fetchGit {
url = gitUrl;
ref = gitBranch;
rev = gitCommit;
};
};
source = if (useGit) then git else release;
in
stdenv.mkDerivation rec {
pname = "ovni";
inherit (source) src version;
dontStrip = true;
separateDebugInfo = true;
postPatch = ''
patchShebangs --build test/
'';
nativeBuildInputs = [ cmake ] ++ lib.optionals (useMpi) [ mpi ];
buildInputs = lib.optionals (useMpi) [ mpi ];
cmakeBuildType = if (enableDebug) then "Debug" else "Release";
cmakeFlags = [
"-DOVNI_GIT_COMMIT=${src.shortRev}"
] ++ lib.optionals (!useMpi) [ "-DUSE_MPI=OFF" ];
preCheck = ''
export CTEST_OUTPUT_ON_FAILURE=1
'';
doCheck = true;
checkTarget = "test";
hardeningDisable = [ "all" ];
}

View File

@ -0,0 +1,22 @@
{ stdenv
, popt
}:
stdenv.mkDerivation rec {
pname = "pscom";
version = "5.4.6-1";
src = builtins.fetchTarball {
url = "https://github.com/ParaStation/${pname}/archive/${version}.tar.gz";
sha256 = "1n9ic0j94iy09j287cfpfy0dd2bk17qakf1ml669jkibxbc5fqk8";
};
postPatch = ''
patchShebangs ./
'';
buildInputs = [ popt ];
preferLocalBuild = true;
enableParallelBuilding = false;
}

View File

@ -0,0 +1,33 @@
{ stdenv
, pscom
, perl
}:
stdenv.mkDerivation rec {
pname = "psmpi";
version = "5.4.6-1";
src = builtins.fetchTarball {
url = "https://github.com/ParaStation/${pname}/archive/${version}.tar.gz";
sha256 = "1kr624216fz8pmfgbwdb3ks77pr6zhrssmn16j3pwaq5mkf3i9wc";
};
postPatch = ''
patchShebangs ./
echo "${version}" > VERSION
'';
preferLocalBuild = true;
buildInputs = [ pscom ];
nativeBuildInputs = [ perl ];
#makeFlags = [ "V=1" ];
configureFlags = [
"--with-confset=default"
"--with-threading"
"--disable-fortran"
"MPICH2_LDFLAGS=-lpsco"
];
enableParallelBuilding = false;
}

91
pkgs/paraver/default.nix Normal file
View File

@ -0,0 +1,91 @@
{
stdenv
, fetchFromGitHub
, autoreconfHook
, boost
, libxml2
, xml2
, wxGTK32
, autoconf
, automake
, paraverKernel
, openssl
, glibcLocales
, wrapGAppsHook
}:
let
wx = wxGTK32;
in
stdenv.mkDerivation rec {
pname = "wxparaver";
version = "4.12.0";
src = fetchFromGitHub {
owner = "bsc-performance-tools";
repo = "wxparaver";
rev = "v${version}";
sha256 = "sha256-YsO5gsuEFQdki3lQudEqgo5WXOt/fPdvNw5OxZQ86Zo=";
};
patches = [
./do-not-steal-focus-on-redraw.patch
# Fix for boost >=1.87 (thanks to gamezelda)
# https://aur.archlinux.org/cgit/aur.git/commit/?h=wxparaver&id=b0dcd08c472536e0a1a3cc1dfbc4c77d9f5e0d47
./fix-boost-87.patch
];
hardeningDisable = [ "all" ];
# Fix the PARAVER_HOME variable
postPatch = ''
sed -i 's@^PARAVER_HOME=.*$@PARAVER_HOME='$out'@g' docs/wxparaver
sed -i '1aexport LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"' docs/wxparaver
'';
dontStrip = true;
enableParallelBuilding = true;
preConfigure = ''
export CFLAGS="-O3"
export CXXFLAGS="-O3"
'';
configureFlags = [
"--with-boost=${boost}"
"--with-wx-config=${wx}/bin/wx-config"
"--with-paraver=${paraverKernel}"
"--with-openssl=${openssl.dev}"
];
nativeBuildInputs = [
autoconf
automake
autoreconfHook
wrapGAppsHook
];
buildInputs = [
boost
libxml2.dev
xml2
wx
paraverKernel
openssl.dev
];
postInstall = ''
mkdir -p $out/include
mkdir -p $out/lib/paraver-kernel
mkdir -p $out/share/filters-config
cp -p ${paraverKernel}/bin/* $out/bin
# cp -p ${paraverKernel}/include/* $out/include
cp -a ${paraverKernel}/lib/paraver-kernel $out/lib/paraver-kernel
cp -p ${paraverKernel}/share/filters-config/* $out/share/filters-config
# Move man files to proper location
mkdir -p $out/share/man
mv $out/share/doc/wxparaver_help_contents/man $out/share/man/man1
'';
}

View File

@ -0,0 +1,26 @@
From 2b185e1b5ce52808b3026334851dbcd5a640ed4d Mon Sep 17 00:00:00 2001
From: aleixbonerib <aleix.boneribo@bsc.es>
Date: Mon, 10 Jun 2024 20:59:45 +0200
Subject: [PATCH] fix: do not set focus on redraw
Some wm can change the window size without focusing. Right now, when the
plot is resized it takes back focus.
---
src/gtimeline.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/gtimeline.cpp b/src/gtimeline.cpp
index 23ebef2..a896066 100644
--- a/src/gtimeline.cpp
+++ b/src/gtimeline.cpp
@@ -899,7 +899,6 @@ void gTimeline::redraw()
drawZone->Refresh();
- SetFocus();
}
--
2.44.1

View File

@ -0,0 +1,120 @@
commit c2fa29f7f1bbde86f41417b198610253fff93667
Author: Rodrigo Arias <rodarima@gmail.com>
Date: Thu Mar 2 13:14:56 2023 +0100
Add the PCF option DONT_EXPAND_COLORS
Allows the user to specify the complete palette in the PCF, preventing
Paraver from expanding the colors.
diff --git a/api/semanticcolor.cpp b/api/semanticcolor.cpp
index 9f86960..22859eb 100644
--- a/api/semanticcolor.cpp
+++ b/api/semanticcolor.cpp
@@ -295,8 +295,9 @@ rgb SemanticColor::getColor( PRV_UINT32 pos ) const
{
if( pos == 0 && ParaverConfig::getInstance()->getColorsTimelineUseZero() )
return ParaverConfig::getInstance()->getColorsTimelineColorZero();
- pos = pos % colors.size();
- return colors[ pos ];
+ // Skip the black at 0
+ pos = pos % (colors.size() - 1);
+ return colors[ pos + 1 ];
}
void SemanticColor::setColor( PRV_UINT32 whichPos, rgb whichColor )
@@ -314,6 +315,12 @@ void SemanticColor::setColor( PRV_UINT32 whichPos, rgb whichColor )
colors[ whichPos ] = whichColor;
}
+void SemanticColor::cutAfter( PRV_UINT32 pos )
+{
+ if ( pos < colors.size() )
+ colors.erase( colors.begin() + pos, colors.end() );
+}
+
void SemanticColor::setCustomColor( TSemanticValue whichValue, rgb color )
{
customPalette[ whichValue ] = color;
diff --git a/api/semanticcolor.h b/api/semanticcolor.h
index a079556..bddf3d8 100644
--- a/api/semanticcolor.h
+++ b/api/semanticcolor.h
@@ -114,6 +114,7 @@ class SemanticColor
// Code Color methods
PRV_UINT32 getNumColors() const;
void setColor( PRV_UINT32 pos, rgb color );
+ void cutAfter( PRV_UINT32 pos );
void setCustomColor( TSemanticValue whichValue, rgb color );
bool existCustomColors() const;
const std::map<TSemanticValue, rgb>& getCustomPalette() const;
diff --git a/api/trace.cpp b/api/trace.cpp
index b0d2050..ee2ab69 100644
--- a/api/trace.cpp
+++ b/api/trace.cpp
@@ -461,12 +461,21 @@ void TraceProxy::parsePCF( const string& whichFile )
rgb tmpColor;
const std::map< uint32_t, PCFFileParser<>::rgb >& semanticColors = pcfParser.getSemanticColors();
+ uint32_t maxValue = 0;
+
for ( auto it : semanticColors )
{
std::tie( tmpColor.red, tmpColor.green, tmpColor.blue ) = it.second;
mySemanticColor.setColor( it.first, tmpColor );
+ if (it.first > maxValue)
+ maxValue = it.first;
}
+ // Cut the palette after the highest defined value, so there are no
+ // extra expanded values
+ if ( !pcfParser.expandColors )
+ mySemanticColor.cutAfter(maxValue);
+
myEventLabels = EventLabels( pcfParser );
myStateLabels = StateLabels( pcfParser );
diff --git a/utils/traceparser/pcffileparser.cpp b/utils/traceparser/pcffileparser.cpp
index 9245955..3a1aecb 100644
--- a/utils/traceparser/pcffileparser.cpp
+++ b/utils/traceparser/pcffileparser.cpp
@@ -286,6 +286,7 @@ constexpr char PCF_LABEL_SPEED[] = "SPEED";
constexpr char PCF_LABEL_FLAG_ICONS[] = "FLAG_ICONS";
constexpr char PCF_LABEL_NUM_OF_STATE_COLORS[] = "NUM_OF_STATE_COLORS";
constexpr char PCF_LABEL_YMAX_SCALE[] = "YMAX_SCALE";
+constexpr char PCF_LABEL_DONT_EXPAND_COLORS[] = "DONT_EXPAND_COLORS";
template< typename dummyParser = std::nullptr_t >
class DefaultOptionsParser : public PCFFileParser<>::SectionParser<>
@@ -293,12 +294,13 @@ class DefaultOptionsParser : public PCFFileParser<>::SectionParser<>
public:
DefaultOptionsParser( PCFFileParser<> *whichMainParser ) : PCFFileParser<>::SectionParser<>( whichMainParser )
{
- parameterSetter[ PCF_LABEL_LEVEL ] = [this]( std::string line ) { mainParser->level = line; };
- parameterSetter[ PCF_LABEL_UNITS ] = [this]( std::string line ) { mainParser->units = line; };
- parameterSetter[ PCF_LABEL_LOOK_BACK ] = [this]( std::string line ) { mainParser->lookBack = line; };
- parameterSetter[ PCF_LABEL_SPEED ] = [this]( std::string line ) { mainParser->speed = line; };
- parameterSetter[ PCF_LABEL_FLAG_ICONS ] = [this]( std::string line ) { mainParser->flagIcons = line; };
- parameterSetter[ PCF_LABEL_YMAX_SCALE ] = [this]( std::string line ) { mainParser->ymaxScale = line; };
+ parameterSetter[ PCF_LABEL_LEVEL ] = [this]( std::string line ) { mainParser->level = line; };
+ parameterSetter[ PCF_LABEL_UNITS ] = [this]( std::string line ) { mainParser->units = line; };
+ parameterSetter[ PCF_LABEL_LOOK_BACK ] = [this]( std::string line ) { mainParser->lookBack = line; };
+ parameterSetter[ PCF_LABEL_SPEED ] = [this]( std::string line ) { mainParser->speed = line; };
+ parameterSetter[ PCF_LABEL_FLAG_ICONS ] = [this]( std::string line ) { mainParser->flagIcons = line; };
+ parameterSetter[ PCF_LABEL_YMAX_SCALE ] = [this]( std::string line ) { mainParser->ymaxScale = line; };
+ parameterSetter[ PCF_LABEL_DONT_EXPAND_COLORS ] = [this]( std::string line ) { mainParser->expandColors = false; };
}
virtual ~DefaultOptionsParser() = default;
diff --git a/utils/traceparser/pcffileparser.h b/utils/traceparser/pcffileparser.h
index 5fe2634..c12ecc8 100644
--- a/utils/traceparser/pcffileparser.h
+++ b/utils/traceparser/pcffileparser.h
@@ -100,6 +100,7 @@ class PCFFileParser
void setEventLabel( TEventType eventType, const std::string& label );
void setEventValues( TEventType eventType, const std::map< TEventValue, std::string >& values );
void setEventValueLabel( TEventType eventType, TEventValue eventValue, const std::string& label );
+ bool expandColors = true;
private:
struct EventTypeData

View File

@ -0,0 +1,87 @@
From 7ecd888e2ebb9e8c5582851d3c50bff61022708e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram@gmail.com>
Date: Sat, 29 Mar 2025 18:14:25 +0000
Subject: [PATCH] tutorialsdownload: Fix Boost ASIO 1.87.0 removals
---
src/tutorialsdownload.cpp | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/src/tutorialsdownload.cpp b/src/tutorialsdownload.cpp
index a1921fd..6ce9dc2 100644
--- a/src/tutorialsdownload.cpp
+++ b/src/tutorialsdownload.cpp
@@ -121,13 +121,13 @@ void TutorialsProgress::updateInstall( int whichValue )
class client
{
public:
- client( boost::asio::io_service& io_service,
+ client( boost::asio::io_context& io_context,
boost::asio::ssl::context& context,
const std::string& server, const std::string& path,
ofstream& storeFile,
TutorialsProgress *progress )
- : resolver_( io_service ),
- socket_( io_service, context ),
+ : resolver_( io_context ),
+ socket_( io_context, context ),
store_( storeFile ),
progress_( progress )
{
@@ -143,8 +143,7 @@ class client
// Start an asynchronous resolve to translate the server and service names
// into a list of endpoints.
- tcp::resolver::query query( server, "https" );
- resolver_.async_resolve( query,
+ resolver_.async_resolve( server, "https",
boost::bind( &client::handle_resolve,
this,
boost::asio::placeholders::error,
@@ -154,7 +153,7 @@ class client
private:
void handle_resolve( const boost::system::error_code& err,
- tcp::resolver::iterator endpoint_iterator )
+ const tcp::resolver::results_type& endpoints )
{
if ( !err )
{
@@ -162,7 +161,7 @@ class client
socket_.set_verify_callback( boost::bind( &client::verify_certificate, this, _1, _2 ) );
boost::asio::async_connect( socket_.lowest_layer(),
- endpoint_iterator,
+ endpoints,
boost::bind( &client::handle_connect,
this,
boost::asio::placeholders::error ) );
@@ -536,9 +535,9 @@ bool TutorialsDownload::downloadTutorialsList() const
boost::asio::ssl::context ctx( boost::asio::ssl::context::sslv23 );
ctx.set_default_verify_paths();
- boost::asio::io_service io_service;
- client c( io_service, ctx, server, path, storeFile, nullptr );
- io_service.run();
+ boost::asio::io_context io_context;
+ client c( io_context, ctx, server, path, storeFile, nullptr );
+ io_context.run();
doneDownload = true;
}
@@ -580,9 +579,9 @@ bool TutorialsDownload::download( const TutorialData& whichTutorial, string& tut
boost::asio::ssl::context ctx( boost::asio::ssl::context::sslv23 );
ctx.set_default_verify_paths();
- boost::asio::io_service io_service;
- client c( io_service, ctx, std::string( server.mb_str() ), std::string( path.mb_str() ), storeFile, &progress );
- io_service.run();
+ boost::asio::io_context io_context;
+ client c( io_context, ctx, std::string( server.mb_str() ), std::string( path.mb_str() ), storeFile, &progress );
+ io_context.run();
}
catch ( ParaverKernelException& e )
{
--
2.49.0

View File

@ -0,0 +1,23 @@
commit 60aa3ffa05f6b40db191a880e9e622d608744c1f
Author: Aleix Boné <aleix.boneribo@bsc.es>
Date: Sun Jul 21 12:11:30 2025 +0200
fix libxml2 deprecated macro
diff --git a/configure.ac b/configure.ac
index 7fe1876..3ce1091 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,7 +46,10 @@ AC_PROG_CPP
AC_PROG_CXXCPP
AC_PROG_SED
-AM_PATH_XML2
+PKG_PROG_PKG_CONFIG
+PKG_CHECK_MODULES([XML], [libxml-2.0])
+
+AC_SUBST(XML_CPPFLAGS, $XML_CFLAGS)
AX_BOOST_BASE(1.36)
AX_BOOST_SERIALIZATION

60
pkgs/paraver/kernel.nix Normal file
View File

@ -0,0 +1,60 @@
{
stdenv
, fetchFromGitHub
, autoreconfHook
, boost
, libxml2
, xml2
, autoconf
, automake
, pkg-config
, zlib
}:
stdenv.mkDerivation rec {
pname = "paraver-kernel";
version = "4.12.0";
src = fetchFromGitHub {
owner = "bsc-performance-tools";
repo = "paraver-kernel";
rev = "v${version}";
sha256 = "sha256-Xs7g8ITZhPt00v7o2WlTddbou8C8Rc9kBMFpl2WsCS4=";
};
patches = [
# https://github.com/bsc-performance-tools/paraver-kernel/pull/11
# TODO: add this back if it's still relevant
# ./dont-expand-colors.patch
./fix-libxml2-deprecation.patch
];
hardeningDisable = [ "all" ];
enableParallelBuilding = true;
dontStrip = true;
preConfigure = ''
export CFLAGS="-O3 -DPARALLEL_ENABLED"
export CXXFLAGS="-O3 -DPARALLEL_ENABLED"
'';
configureFlags = [
"--with-boost=${boost}"
"--enable-openmp"
];
nativeBuildInputs = [
autoreconfHook
autoconf
automake
pkg-config
];
buildInputs = [
boost
libxml2.dev
xml2
zlib
];
}

View File

@ -0,0 +1,286 @@
--- a/src/wxparaver/src/gtimeline.cpp 2019-09-13 13:18:03.000000000 +0200
+++ b/src/wxparaver/src/gtimeline.cpp 2020-11-30 13:18:50.121429888 +0100
@@ -607,8 +607,8 @@
// Paint blank image while redrawing
wxClientDC dc( drawZone );
#ifdef __WXGTK__
- dc.DrawBitmap( bufferImage, 0, 0, false );
- drawZone->Update();
+// dc.DrawBitmap( bufferImage, 0, 0, false );
+// drawZone->Update();
#endif
if( !drawAxis( bufferDraw, selectedSet ) )
@@ -1365,13 +1365,66 @@
void gTimeline::drawRowEvents( wxDC& eventdc, wxDC& eventmaskdc, TObjectOrder rowPos, hash_set< PRV_INT32 >& eventsToDraw )
{
+ int last_x = -100, x, xx;
+ int i, neigh, max_x;
+
+ /* Keep track of other events in nearby pixels */
+ max_x = myWindow->getWidth();
+ int *table = new int[max_x];
+
+ for(i=0; i<max_x; i++)
+ {
+ table[i] = 0;
+ }
+
for( hash_set< PRV_INT32 >::iterator it = eventsToDraw.begin(); it != eventsToDraw.end(); ++it )
{
+ /* Add a new event in the x position in the table */
+ x = *it;
+ assert(0 <= x);
+ assert(x < max_x);
+ table[*it]++;
+ }
+
+ for( hash_set< PRV_INT32 >::iterator it = eventsToDraw.begin(); it != eventsToDraw.end(); ++it )
+ {
+ /*
+ * Draws an event with 4 segments: AE, BF, CG and DH
+ *
+ * A B C D
+ * * * * *
+ * * * * *
+ * * * * *
+ * * F G H
+ * *
+ * *
+ * E
+ */
+
+ /* If the event is very close to another one, we paint it red, so we
+ * now that we may need to zoom to see more closely how many events
+ * are there. Otherwise we paint it green. */
+ x = *it;
+
+ /* Count neighbour events */
+ neigh = 0;
+ for(xx=x-5; xx<=x+5; xx++)
+ {
+ if(0 <= xx && xx < max_x)
+ neigh += table[xx];
+ }
+
+ /* Paint the event red if there are more events close */
+ if(neigh > 1)
+ eventdc.SetPen( *wxRED_PEN );
+ else
+ eventdc.SetPen( *wxGREEN_PEN );
+
eventdc.DrawLine( *it, rowPos - 6, *it, rowPos );
- eventdc.DrawLine( *it+1, rowPos - 6, *it+1, rowPos-3 );
- eventdc.DrawLine( *it+2, rowPos - 6, *it+2, rowPos-3 );
- eventdc.DrawLine( *it+3, rowPos - 6, *it+3, rowPos-3 );
- eventdc.DrawLine( *it+4, rowPos - 6, *it+4, rowPos-3 );
+// eventdc.DrawLine( *it+1, rowPos - 6, *it+1, rowPos-3 );
+// eventdc.DrawLine( *it+2, rowPos - 6, *it+2, rowPos-3 );
+// eventdc.DrawLine( *it+3, rowPos - 6, *it+3, rowPos-3 );
+// eventdc.DrawLine( *it+4, rowPos - 6, *it+4, rowPos-3 );
#ifndef __WXMAC__
eventmaskdc.DrawLine( *it, rowPos - 6, *it, rowPos );
eventmaskdc.DrawLine( *it+1, rowPos - 6, *it+1, rowPos-3 );
@@ -1379,8 +1432,12 @@
eventmaskdc.DrawLine( *it+3, rowPos - 6, *it+3, rowPos-3 );
eventmaskdc.DrawLine( *it+4, rowPos - 6, *it+4, rowPos-3 );
#endif
+
+ last_x = x;
}
+ delete table;
+
}
@@ -2427,7 +2484,7 @@
motionEvent = event;
if( !event.ShiftDown() )
- timerMotion->Start( 20, true );
+ timerMotion->Start( 2, true );
wxMemoryDC dc( bufferImage );
// PRV_UINT32 precision = ParaverConfig::getInstance()->getTimelinePrecision();
@@ -4651,12 +4708,18 @@
void gTimeline::OnTimerMotion( wxTimerEvent& event )
{
+ int mx, my;
+
+ mx = motionEvent.GetX();
+ my = motionEvent.GetY();
+
if( motionEvent.GetX() < objectAxisPos + 1 || motionEvent.GetX() > bufferImage.GetWidth() - drawBorder ||
motionEvent.GetY() < drawBorder || motionEvent.GetY() > timeAxisPos - 1 )
return;
wxMemoryDC dc( bufferImage );
wxColour tmpColor;
+ wxClientDC paintDC( drawZone );
wxString label;
if( zooming || timing || wxGetApp().GetGlobalTiming() )
@@ -4704,7 +4767,11 @@
#endif
if( tmpColor == backgroundColour )
+ {
+ /* Just clean and exit */
+ paintDC.DrawBitmap( drawImage, 0, 0 );
return;
+ }
rgb color = { (ParaverColor)tmpColor.Red(), (ParaverColor)tmpColor.Green(), (ParaverColor)tmpColor.Blue() };
TSemanticValue firstValue, secondValue;
@@ -4762,38 +4829,109 @@
}
}
-#ifndef __WXGTK__
- wxClientDC paintDC( drawZone );
- #ifdef __WXMAC__
- drawStackedImages( paintDC );
- #else
- paintDC.DrawBitmap( drawImage, 0, 0 );
- #endif
-#else
- #if wxMAJOR_VERSION<3
- wxPaintDC paintDC( drawZone );
- #else
- wxClientDC paintDC( drawZone );
- #endif
- paintDC.DrawBitmap( drawImage, 0, 0 );
-#endif
-
paintDC.SetFont( semanticFont );
+ paintDC.SetPen( backgroundColour );
+ paintDC.SetBrush( backgroundColour );
+ paintDC.SetTextForeground( foregroundColour );
+
+ /* Draw the label close to the mouse, so it's easier to follow */
+ int label_x0, label_y0;
+ label_x0 = mx + 20;
+ label_y0 = my + 20;
+ paintDC.SetPen( *wxBLACK_PEN );
+ paintDC.SetBrush( *wxBLACK_BRUSH );
+
+ /* Draw a filled black rectangle behind the label, so is easy to read
+ * when placed over multiple colors from the trace */
+ int rect_x0, rect_y0, rect_w, rect_h;
+ rect_x0 = label_x0 - 5;
+ rect_y0 = label_y0 - 5;
+
+ TObjectOrder row;
+ TTime time;
+
+ /* Fills "row" and "time" objects if is over a TimeObject (?) */
+ bool print_duration = true;
+ double tp, tn;
+
+ /* This whole thing to get the event is completely crap. We may get a
+ * pixel here that belong to a different event, probably due to
+ * rounding operations when dealing with time.
+ *
+ * To avoid giving misleading information, we only print the time when
+ * both neighbour pixels are also from the same event */
+ print_duration &= pixelToTimeObject(mx, my, time, row);
+ print_duration &= pixelToTimeObject(mx-2, my, tp, row);
+ print_duration &= pixelToTimeObject(mx+2, my, tn, row);
+
+ if(time <= tp) print_duration = false;
+ if(tn <= time) print_duration = false;
+
+ //computeWhatWhere(time, row, 0.0, false, false);
+
+ //printf("time = %e\n", time);
+ //printf("begin time = %e\n", myWindow->getBeginTime(row));
+
+ if(print_duration)
+ {
+ double t0, t1, t, dt;
+ t = time;
+
+ myWindow->init(t, CREATEEVENTS + CREATECOMMS, false );
+ myWindow->initRow(row, t, CREATEEVENTS + CREATECOMMS, false );
+
+ t0 = myWindow->getBeginTime(row);
+ t1 = myWindow->getEndTime(row);
+
+ //printf("t0=%e t=%e t1=%e\n", t0, t, t1);
+ while(!(t0 <= t && t <= t1))
+ {
+ myWindow->calcNext(row);
+ t0 = myWindow->getBeginTime(row);
+ t1 = myWindow->getEndTime(row);
+ //printf("t0=%e t=%e t1=%e\n", t0, t, t1);
+ if(t0 > t)
+ {
+ //printf("we are out\n");
+ break;
+ }
+ }
+
+ /* Only add the duration if we are more than one pixel away from the
+ * border */
+ if(t0 < tp && tn < t1)
+ {
+ if(t0 > t)
+ dt = 0;
+ else
+ dt = t1 - t0;
+
+ assert(t0 <= time);
+ assert(time <= t1);
+
+ wxString duration = wxString::FromAscii( LabelConstructor::timeLabel(
+ myWindow->traceUnitsToWindowUnits( dt ),
+ myWindow->getTimeUnit(),
+ ParaverConfig::getInstance()->getTimelinePrecision() ).c_str() );
+
+ label << wxT( " (" ) << duration << wxT(")");
+ }
+ }
+
wxSize objectExt = paintDC.GetTextExtent( label );
+ rect_w = objectExt.GetWidth() + 10;
+ rect_h = objectExt.GetHeight() + 10;
+
+ /* Erase previous bitmap */
+ paintDC.DrawBitmap( drawImage, 0, 0 );
+
+ /* Draw black rectangle */
+ paintDC.DrawRectangle( rect_x0, rect_y0, rect_w, rect_h );
+ /* Then place the label */
+ paintDC.DrawText( label, label_x0, label_y0);
paintDC.SetPen( backgroundColour );
paintDC.SetBrush( backgroundColour );
-// paintDC.DrawRectangle( ( bufferImage.GetWidth() - objectAxisPos ) / 2, timeAxisPos + 1, objectExt.GetWidth() + 30, bufferImage.GetHeight() - timeAxisPos );
- if( !( zooming || timing || wxGetApp().GetGlobalTiming() ) )
- {
- paintDC.SetBrush( tmpColor );
- paintDC.DrawRectangle( ( bufferImage.GetWidth() - objectAxisPos ) / 2, timeAxisPos + 2, 10, bufferImage.GetHeight() - timeAxisPos - 3 );
- }
- paintDC.SetTextForeground( foregroundColour );
- if( zooming )
- paintDC.DrawText( label, ( bufferImage.GetWidth() - objectAxisPos ) / 2 + objectAxisPos - ( objectExt.GetWidth() / 2 ), timeAxisPos + 3 );
- else
- paintDC.DrawText( label, ( bufferImage.GetWidth() - objectAxisPos ) / 2 + 12, timeAxisPos + 3 );
}
void gTimeline::OnTimerWheel( wxTimerEvent& event )
@@ -5075,7 +5213,11 @@
endRow = TObjectOrder( floor( ( y - drawBorder - 1 ) / heightPerRow ) );
if( endRow >= numObjects )
+ {
endRow = numObjects - 1;
+ printf("endRow exceeds numObjects, capped to %d\n", endRow);
+ }
+ //printf("endRow = %d\n", endRow);
onObject = selected[ endRow ];
return true;

77
pkgs/paraver/release.nix Normal file
View File

@ -0,0 +1,77 @@
{
stdenv
, lib
, fetchFromGitHub
, boost
, libxml2
, xml2
, fetchurl
, wxGTK32
, autoconf
, automake
, openssl # For boost
# Custom patches :)
, enableMouseLabel ? false
}:
with lib;
let
wx = wxGTK32;
in
stdenv.mkDerivation rec {
pname = "wxparaver";
version = "4.10.6";
src = fetchurl {
url = "https://ftp.tools.bsc.es/wxparaver/wxparaver-${version}-src.tar.bz2";
sha256 = "a7L15viCXtQS9vAsdFzCFlUavUzl4Y0yOYmVSCrdWBU=";
};
patches = []
++ optional (enableMouseLabel) ./mouse-label.patch;
enableParallelBuilding = true;
# What would we do without the great gamezelda:
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wxparaver
postPatch = ''
pushd src/wxparaver
sed -i \
-e 's|-lparaver-api -lparaver-kernel|-L../../paraver-kernel/src/.libs -L../../paraver-kernel/api/.libs -lparaver-api -lparaver-kernel -lssl -lcrypto -ldl|g' \
-e '$awxparaver_bin_CXXFLAGS = @CXXFLAGS@ -I../../paraver-kernel -I../../paraver-kernel/api' \
src/Makefile.am
sed -i 's| -L$PARAVER_LIBDIR||g' configure.ac
popd
# Patch shebang as /usr/bin/env is missing in nix
sed -i '1c#!/bin/sh' src/paraver-cfgs/install.sh
'';
#TODO: Move the sed commands to proper patches (and maybe send them upstream?)
preConfigure = ''
pushd src/wxparaver
autoreconf -i -f
popd
'';
configureFlags = [
"--with-boost=${boost}"
"--with-wx-config=${wx}/bin/wx-config"
];
nativeBuildInputs = [
autoconf
automake
];
buildInputs = [
boost
xml2
libxml2.dev
wx
openssl.dev
];
}

View File

@ -0,0 +1,47 @@
{
stdenv
, fetchFromGitHub
, boost
, libxml2
, xml2
, fetchurl
, wxGTK30-gtk3
, paraver-kernel
}:
let
wx = wxGTK30-gtk3;
in
stdenv.mkDerivation rec {
pname = "wxparaver";
version = "4.8.2";
src = fetchurl {
url = "https://ftp.tools.bsc.es/wxparaver/wxparaver-${version}-src.tar.bz2";
sha256 = "0b8rrhnf7h8j72pj6nrxkrbskgg9b5w60nxi47nxg6275qvfq8hd";
};
postUnpack = "sourceRoot=$sourceRoot/src/wxparaver";
enableParallelBuilding = true;
preConfigure = ''
configureFlagsArray=(
"--with-boost=${boost}"
"--with-wx-config=${wx}/bin/wx-config"
--with-wxpropgrid-dir=
"--with-paraver=${paraver-kernel}"
"--enable-debug=yes"
"CXXFLAGS=-g"
"CFLAGS=-g"
)
'';
buildInputs = [
boost
xml2
libxml2.dev
wx
paraver-kernel
];
}

84
pkgs/perf/default.nix Normal file
View File

@ -0,0 +1,84 @@
{ lib, stdenv, kernel, elfutils, python2, python3, perl, newt, slang, asciidoc, xmlto, makeWrapper
, docbook_xsl, docbook_xml_dtd_45, libxslt, flex, bison, pkg-config, libunwind, binutils
, libiberty, audit, libbfd, libopcodes, openssl, systemtap, numactl
, zlib, withGtk ? false, gtk2 ? null
, babeltrace
}:
with lib;
assert withGtk -> gtk2 != null;
assert versionAtLeast kernel.version "3.12";
stdenv.mkDerivation {
name = "perf-linux-${kernel.version}";
inherit (kernel) src;
preConfigure = ''
cd tools/perf
substituteInPlace Makefile \
--replace /usr/include/elfutils $elfutils/include/elfutils
for x in util/build-id.c util/dso.c; do
substituteInPlace $x --replace /usr/lib/debug /run/current-system/sw/lib/debug
done
if [ -f bash_completion ]; then
sed -i 's,^have perf,_have perf,' bash_completion
fi
'';
makeFlags = [
"prefix=$(out)"
"WERROR=0"
"LIBBABELTRACE=1"
"LIBBABELTRACE_DIR=${babeltrace}"
] ++ kernel.makeFlags;
hardeningDisable = [ "format" ];
# perf refers both to newt and slang
nativeBuildInputs = [
asciidoc xmlto docbook_xsl docbook_xml_dtd_45 libxslt
flex bison libiberty audit makeWrapper pkg-config python3
];
buildInputs = [
elfutils newt slang libunwind libbfd zlib openssl systemtap.stapBuild numactl
libopcodes python3 perl babeltrace
] ++ lib.optional withGtk gtk2
++ (if (versionAtLeast kernel.version "4.19") then [ python3 ] else [ python2 ]);
# Note: we don't add elfutils to buildInputs, since it provides a
# bad `ld' and other stuff.
NIX_CFLAGS_COMPILE = toString [
"-Wno-error=cpp"
"-Wno-error=bool-compare"
"-Wno-error=deprecated-declarations"
"-DOBJDUMP_PATH=\"${binutils}/bin/objdump\""
"-Wno-error=stringop-truncation"
];
postPatch = ''
patchShebangs scripts/bpf_helpers_doc.py
'';
doCheck = false; # requires "sparse"
doInstallCheck = false; # same
separateDebugInfo = true;
installFlags = [ "install" "install-man" "ASCIIDOC8=1" "prefix=$(out)" ];
preFixup = ''
wrapProgram $out/bin/perf \
--prefix PATH : "${binutils}/bin"
'';
meta = {
homepage = "https://perf.wiki.kernel.org/";
description = "Linux tools to profile with performance counters";
maintainers = with lib.maintainers; [viric];
platforms = with lib.platforms; linux;
};
}

48
pkgs/pmix/pmix2.nix Normal file
View File

@ -0,0 +1,48 @@
{ stdenv, lib, fetchFromGitHub, perl, autoconf, automake
, libtool, flex, libevent, hwloc, munge, zlib
} :
let
version = "2.2.4";
in stdenv.mkDerivation {
pname = "pmix";
inherit version;
src = fetchFromGitHub {
repo = "openpmix";
owner = "openpmix";
rev = "v${version}";
sha256 = "1wc4sbnbg20lp6l6pk1sawrf5wrdajcijd1cmrpp1d6h9nv23ggv";
};
postPatch = ''
patchShebangs ./autogen.pl
patchShebangs ./config
'';
nativeBuildInputs = [ perl autoconf automake libtool flex ];
buildInputs = [ libevent hwloc munge zlib ];
configureFlags = [
"--with-libevent=${libevent.dev}"
"--with-munge=${munge}"
"--with-hwloc=${hwloc.dev}"
];
preConfigure = ''
./autogen.pl
'';
enableParallelBuilding = true;
meta = with lib; {
description = "Process Management Interface for HPC environments";
homepage = "https://openpmix.github.io/";
license = licenses.bsd3;
maintainers = [ maintainers.markuskowa ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,58 @@
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, docutils
, pandoc, ethtool, iproute, libnl, udev, python, perl
, makeWrapper
} :
let
version = "31.1";
in stdenv.mkDerivation {
pname = "rdma-core";
inherit version;
src = fetchFromGitHub {
owner = "linux-rdma";
repo = "rdma-core";
rev = "v${version}";
sha256 = "1xkmdix6mgv6kjjj6wi844bfddhl0ybalrp5g8pf5izasc43brg7";
};
nativeBuildInputs = [ cmake pkg-config pandoc docutils makeWrapper ];
buildInputs = [ libnl ethtool iproute udev python perl ];
cmakeFlags = [
"-DCMAKE_INSTALL_RUNDIR=/run"
"-DCMAKE_INSTALL_SHAREDSTATEDIR=/var/lib"
];
postPatch = ''
substituteInPlace srp_daemon/srp_daemon.sh.in \
--replace /bin/rm rm
'';
postInstall = ''
# cmake script is buggy, move file manually
mkdir -p $out/${perl.libPrefix}
mv $out/share/perl5/* $out/${perl.libPrefix}
'';
postFixup = ''
for pls in $out/bin/{ibfindnodesusing.pl,ibidsverify.pl}; do
echo "wrapping $pls"
chmod +x "$pls"
wrapProgram $pls --prefix PERL5LIB : "$out/${perl.libPrefix}"
done
# Remove the binaries as they pull systemd
rm -rf $out/bin
rm -rf $out/sbin
'';
meta = with lib; {
description = "RDMA Core Userspace Libraries and Daemons";
homepage = "https://github.com/linux-rdma/rdma-core";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = with maintainers; [ markuskowa ];
};
}

View File

@ -0,0 +1,13 @@
diff --git a/src/common/env.c b/src/common/env.c
index 987846d..73d3b3b 100644
--- a/src/common/env.c
+++ b/src/common/env.c
@@ -1941,7 +1941,7 @@ char **env_array_user_default(const char *username, int timeout, int mode,
char **env = NULL;
char *starttoken = "XXXXSLURMSTARTPARSINGHEREXXXX";
char *stoptoken = "XXXXSLURMSTOPPARSINGHEREXXXXX";
- char cmdstr[256], *env_loc = NULL;
+ char cmdstr[MAXPATHLEN], *env_loc = NULL;
char *stepd_path = NULL;
int fd1, fd2, fildes[2], found, fval, len, rc, timeleft;
int buf_read, buf_rem, config_timeout;

View File

@ -0,0 +1,87 @@
{ stdenv, lib, fetchFromGitHub, pkg-config, libtool, curl
, python3, munge, perl, pam, zlib, shadow, coreutils
, ncurses, libmysqlclient, lua, hwloc, numactl
, readline, freeipmi, xorg, lz4, rdma-core, nixosTests
, pmix, enableX11 ? false
}:
stdenv.mkDerivation rec {
pname = "slurm";
version = "16.05.8.1";
# N.B. We use github release tags instead of https://www.schedmd.com/downloads.php
# because the latter does not keep older releases.
src = fetchFromGitHub {
owner = "SchedMD";
repo = "slurm";
# The release tags use - instead of .
rev = "${pname}-${builtins.replaceStrings ["."] ["-"] version}";
sha256 = "1fkrbi4f22jb2pq19sv3j2yyvac4nh25fk8mzw6ic24swxp8wq9s";
};
outputs = [ "out" "dev" ];
patches = [
./major.patch
./mvwprintw.patch
# increase string length to allow for full
# path of 'echo' in nix store
#./common-env-echo.patch
# Required for configure to pick up the right dlopen path
#./pmix-configure.patch
];
prePatch = ''
substituteInPlace src/common/env.c \
--replace "/bin/echo" "${coreutils}/bin/echo"
'';
# nixos test fails to start slurmd with 'undefined symbol: slurm_job_preempt_mode'
# https://groups.google.com/forum/#!topic/slurm-devel/QHOajQ84_Es
# this doesn't fix tests completely at least makes slurmd to launch
hardeningDisable = [ "fortify" "bindnow" ];
nativeBuildInputs = [ pkg-config libtool python3 ];
buildInputs = [
curl python3 munge perl pam zlib
libmysqlclient ncurses lz4 rdma-core
lua hwloc numactl readline freeipmi shadow.su
pmix
];
configureFlags = [
"CFLAGS=-fcommon"
"--with-freeipmi=${freeipmi}"
"--with-hwloc=${hwloc}"
"--with-lz4=${lz4.dev}"
"--with-munge=${munge}"
"--with-zlib=${zlib}"
"--with-ofed=${rdma-core}"
"--sysconfdir=/etc/slurm"
"--with-pmix=${pmix}"
"--disable-gtktest"
"--disable-x11"
];
preConfigure = ''
patchShebangs ./doc/html/shtml2html.py
patchShebangs ./doc/man/man2html.py
'';
postInstall = ''
rm -f $out/lib/*.la $out/lib/slurm/*.la
'';
enableParallelBuilding = true;
passthru.tests.slurm = nixosTests.slurm;
meta = with lib; {
homepage = "http://www.schedmd.com/";
description = "Simple Linux Utility for Resource Management";
platforms = platforms.linux;
license = licenses.gpl2;
maintainers = with maintainers; [ jagajaga markuskowa ];
};
}

View File

@ -0,0 +1,10 @@
--- a/src/plugins/task/cgroup/task_cgroup_devices.c 1970-01-01 01:00:01.000000000 +0100
+++ b/src/plugins/task/cgroup/task_cgroup_devices.c 1970-01-01 01:00:01.000000000 +0100
@@ -43,6 +43,7 @@
#include <glob.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/sysmacros.h>
#include <slurm/slurm.h>
#include <slurm/slurm_errno.h>
#include "src/common/xstring.h"

View File

@ -0,0 +1,11 @@
--- a/src/smap/partition_functions.c 2023-04-02 21:07:54.505816546 +0200
+++ b/src/smap/partition_functions.c 2023-04-02 21:07:43.512816197 +0200
@@ -588,7 +588,7 @@
else
tmp_state = "unk";
mvwprintw(text_win, main_ycord, main_xcord,
- tmp_state);
+ "%s", tmp_state);
main_xcord += 7;
if (part_ptr->max_time == INFINITE)

View File

@ -0,0 +1,22 @@
{
stdenv
, slurm
}:
stdenv.mkDerivation rec {
name = "pmi2-${version}";
inherit (slurm) src version prePatch nativeBuildInputs buildInputs
configureFlags preConfigure;
# Only build the pmi2 library
preBuild = ''cd contribs/pmi2'';
# Include also the pmi.h header
postInstall = ''
mkdir -p $out/include
cp ../../slurm/pmi.h $out/include
'';
enableParallelBuilding = true;
}

View File

@ -0,0 +1,13 @@
diff --git a/configure b/configure
index 1cf53bc..ab68441 100755
--- a/configure
+++ b/configure
@@ -21207,7 +21207,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
as_fn_error $? "error processing $x_ac_cv_pmix_libdir: PMIx v3.x was already found in one of the previous paths" "$LINENO" 5
fi
_x_ac_pmix_v3_found="1"
- PMIX_V3_CPPFLAGS="-I$x_ac_cv_pmix_dir/include"
+ PMIX_V3_CPPFLAGS="-I$x_ac_cv_pmix_dir/include -DPMIXP_V3_LIBPATH=\\\"$x_ac_cv_pmix_libdir\\\""
if test "$ac_with_rpath" = "yes"; then
PMIX_V3_LDFLAGS="-Wl,-rpath -Wl,$x_ac_cv_pmix_libdir -L$x_ac_cv_pmix_libdir"
else

22
pkgs/slurm/default.nix Normal file
View File

@ -0,0 +1,22 @@
{ slurm }:
slurm.overrideAttrs (old: {
patches = (old.patches or []) ++ [
# See https://bugs.schedmd.com/show_bug.cgi?id=19324
# Still unmerged as of 2025-10-03, another corpo-cancer.
./slurm-rank-expansion.patch
];
# Install also the pam_slurm_adopt library to restrict users from accessing
# nodes with no job allocated.
# TODO: Review pam_slurm_adopt, I don't trust their code much.
postBuild = (old.postBuild or "") + ''
pushd contribs/pam_slurm_adopt
make "PAM_DIR=$out/lib/security"
popd
'';
postInstall = (old.postInstall or "") + ''
pushd contribs/pam_slurm_adopt
make "PAM_DIR=$out/lib/security" install
popd
'';
})

82
pkgs/slurm/pmi2.nix Normal file
View File

@ -0,0 +1,82 @@
{ stdenv, lib, fetchFromGitHub, pkg-config, libtool, curl
, python3, munge, perl, pam, openssl
, ncurses, libmysqlclient, gtk2, lua, hwloc, numactl
, readline, freeipmi, libssh2, xorg
, pmix
# enable internal X11 support via libssh2
, enableX11 ? true
}:
stdenv.mkDerivation rec {
name = "slurm-libpmi2-${version}";
version = "17.11.9-2";
# N.B. We use github release tags instead of https://www.schedmd.com/downloads.php
# because the latter does not keep older releases.
src = fetchFromGitHub {
owner = "SchedMD";
repo = "slurm";
# The release tags use - instead of .
rev = "${builtins.replaceStrings ["."] ["-"] name}";
sha256 = "1lq4ac6yjai6wh979dciw8v3d99zbd3w36rfh0vpncqm672fg1qy";
};
outputs = [ "out" ];
prePatch = lib.optional enableX11 ''
substituteInPlace src/common/x11_util.c \
--replace '"/usr/bin/xauth"' '"${xorg.xauth}/bin/xauth"'
'';
# nixos test fails to start slurmd with 'undefined symbol: slurm_job_preempt_mode'
# https://groups.google.com/forum/#!topic/slurm-devel/QHOajQ84_Es
# this doesn't fix tests completely at least makes slurmd to launch
hardeningDisable = [ "bindnow" ];
nativeBuildInputs = [ pkg-config libtool ];
buildInputs = [
curl python3 munge perl pam openssl
libmysqlclient ncurses gtk2
lua hwloc numactl readline freeipmi
pmix
] ++ lib.optionals enableX11 [ libssh2 xorg.xauth ];
configureFlags = with lib;
[ "--with-munge=${munge}"
"--with-ssl=${openssl.dev}"
"--with-hwloc=${hwloc.dev}"
"--with-freeipmi=${freeipmi}"
"--sysconfdir=/etc/slurm"
"--with-pmix=${pmix}"
] ++ (optional (gtk2 == null) "--disable-gtktest")
++ (optional enableX11 "--with-libssh2=${libssh2.dev}");
preConfigure = ''
patchShebangs ./doc/html/shtml2html.py
patchShebangs ./doc/man/man2html.py
patchShebangs ./configure
'';
preBuild = ''cd contribs/pmi2'';
#buildPhase = ''
# pushd contrib/pmi2
# make -j install SHELL=${SHELL}
# popd
#'';
postInstall = ''
rm -f $out/lib/*.la $out/lib/slurm/*.la
'';
enableParallelBuilding = true;
meta = with lib; {
homepage = http://www.schedmd.com/;
description = "Simple Linux Utility for Resource Management";
platforms = platforms.linux;
license = licenses.gpl2;
maintainers = with maintainers; [ jagajaga markuskowa ];
};
}

Some files were not shown because too many files have changed in this diff Show More