Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
243 commits
Select commit Hold shift + click to select a range
f65ea1d
Added benchmark folder
SharkGamerZ Sep 21, 2025
2f3b27c
Added README.md, removed useless stuff
SharkGamerZ Sep 22, 2025
41b3414
Edited name of framework in the readme
SharkGamerZ Sep 22, 2025
213585f
Complete refactor
SharkGamerZ Sep 22, 2025
3326627
Added interaction to nodes selection in the TUI
SharkGamerZ Sep 22, 2025
83fdcad
Modified examples
SharkGamerZ Sep 22, 2025
4ba2c66
Added .env support
SharkGamerZ Sep 22, 2025
563dbd1
Added Documentation to the .env
SharkGamerZ Sep 22, 2025
31c04d2
Modified example bench to make it local
SharkGamerZ Sep 22, 2025
be30531
Added node_file support
SharkGamerZ Sep 22, 2025
b4d9acb
Added pmix support, to make it work with MPI and more processes
SharkGamerZ Sep 23, 2025
4fc3c91
Modified examples
SharkGamerZ Sep 23, 2025
e42bda3
Rimosse alcune ENV, preparando il codice per non aggiungere la nodelist
SharkGamerZ Sep 29, 2025
0759f2d
Modifiche da leonardo
Oct 2, 2025
26c30f7
Last commit from leonardo, modified worker-orchestrator logic
Oct 4, 2025
c862ca8
Removed data dir, updated every "BLINK" to "CRAB"
SharkGamerZ Oct 6, 2025
83d8b30
Primo (forse funzionante) test leonardo
Oct 6, 2025
f4a6a0b
New test
Oct 6, 2025
5c46143
Test
Oct 6, 2025
09b06da
All reduce test
Oct 6, 2025
1895f94
New all reduce test
Oct 6, 2025
5bb2ae0
Maybe this'll work
Oct 6, 2025
faae169
New test dai
Oct 6, 2025
06f7dac
Modificata funzione di log per dividere per run
SharkGamerZ Oct 6, 2025
02bf6c8
Pulito output dagli echo dei moduli, aggiunto timer che dice quanto c…
Oct 7, 2025
d1bc641
New tests
Oct 7, 2025
5fd4840
Merge branch 'master' of github.com:SharkGamerZ/CRAB
Oct 7, 2025
5bb5e6a
Push da leonardo
Oct 7, 2025
dadc2ff
Terzo test
Oct 7, 2025
e13670d
Aggiunti plot, modificato css
SharkGamerZ Oct 7, 2025
c2b9f69
Dai forse sono gli ultimi per davvero
Oct 8, 2025
4bfbe90
Test incast
Oct 8, 2025
e18b114
New baseline(?)
Oct 8, 2025
1e19572
Commit per pulire
SharkGamerZ Oct 13, 2025
f18bf7d
Added data/ to gitignore, removed leonardo hard-coded partitions
SharkGamerZ Nov 10, 2025
0677580
Funziona su LEONARDO
SharkGamerZ Nov 28, 2025
3769af8
Aggiunto msg_size nel csv finale dei dati
SharkGamerZ Dec 2, 2025
3f8b9e6
Aggiunta modalita' sequenziale e partizionamento dei nodi tra
SharkGamerZ Dec 2, 2025
a7ce37c
Removed partition from example
SharkGamerZ Dec 2, 2025
c1d060d
Aggiunto partition layout
SharkGamerZ Dec 2, 2025
feea267
Rimosso refuso
SharkGamerZ Dec 2, 2025
7db5614
Tolto split con la "," e messo con "-" per evitare rottura CSV
SharkGamerZ Dec 2, 2025
bc6aceb
Start ristrutturazione
SharkGamerZ Jan 23, 2026
671e861
Added support for SBATCH directives in JSON
SharkGamerZ Jan 26, 2026
0cf4ecd
Aggiunte direttive Sbatch e Comandi dentro presets.json
SharkGamerZ Feb 2, 2026
c3a6b98
Modified presets and added new example for leonardo
SharkGamerZ Feb 8, 2026
6d6285b
Cleaned logs
SharkGamerZ Feb 8, 2026
5151796
Correctd "header" part in presets.json
SharkGamerZ Feb 8, 2026
9b04b9c
Fixed line in Leonardo preset header
SharkGamerZ Feb 8, 2026
b95f077
Silenced pre commands
SharkGamerZ Feb 8, 2026
69acb09
Splitted requirements
SharkGamerZ Feb 8, 2026
bea4614
Added leonardo mega test
SharkGamerZ Feb 8, 2026
6d58472
Added timing and single experiment error handling
SharkGamerZ Feb 8, 2026
02d6395
Forgot import
SharkGamerZ Feb 8, 2026
79493d5
Corrected time measure, added custom name to data dirs
SharkGamerZ Feb 9, 2026
f82b1b1
wrappers, benchmarks and congestion json
lor3ny Feb 17, 2026
55985dd
CRESCO8 preset
lor3ny Feb 26, 2026
2b8add5
requirements
lor3ny Feb 26, 2026
ca203a5
requirements
lor3ny Feb 26, 2026
1d29b42
requirements
lor3ny Feb 26, 2026
7ab76de
requirements
lor3ny Feb 26, 2026
8a9d1dc
preset changes
lor3ny Feb 26, 2026
6553327
some tests
lor3ny Feb 26, 2026
4554ac5
first tests
lor3ny Feb 26, 2026
e3b5ce4
concurrency test
lor3ny Feb 26, 2026
ef53689
concurrency test
lor3ny Feb 26, 2026
b84fe9f
concurrency test
lor3ny Feb 26, 2026
993763c
concurrency test
lor3ny Feb 26, 2026
cc340f6
debugging crab
lor3ny Feb 26, 2026
22646c2
f apps fixies
lor3ny Feb 27, 2026
f08228c
some other fixies
lor3ny Feb 27, 2026
78a7e1e
fixed f apps killling and congestion preset
lor3ny Feb 27, 2026
47da22c
Starting workerpool
lor3ny Mar 2, 2026
eee8f53
workerpool initi and crab new job_run template
lor3ny Mar 2, 2026
4022b9f
Starting workerpool script
lor3ny Mar 2, 2026
69240ca
first version of the workerpool
lor3ny Mar 5, 2026
0cec09e
working on workerpool
lor3ny Mar 6, 2026
31706d4
Adding json configurations
lor3ny Mar 7, 2026
a9e2a2e
crab needs some fixies
lor3ny Mar 8, 2026
90c0b6f
Working with some errors
lor3ny Mar 9, 2026
b4c0bf5
Some fixies on workerpool
lor3ny Mar 9, 2026
94e5c3a
working on output draining
lor3ny Mar 9, 2026
5085599
Deadlock issues
lor3ny Mar 9, 2026
50d9a74
workerpool fixed
lor3ny Mar 10, 2026
12b4ff4
test run
lor3ny Mar 10, 2026
b3506e0
Added better logging system, with dedicated module
SharkGamerZ Mar 18, 2026
ba378ee
Missed import
SharkGamerZ Mar 18, 2026
e692739
Fixed func calling
SharkGamerZ Mar 19, 2026
bfb4fd0
Test for the fix of .csv not being logged
SharkGamerZ Mar 24, 2026
d3103d4
Fixed logging
SharkGamerZ Mar 24, 2026
f4387cf
Temporarly disabled workerpool prints
SharkGamerZ Mar 24, 2026
77effd6
Fixed example's wrapper's name
SharkGamerZ Mar 24, 2026
7876104
some fixies on inc files, new data and plotter
lor3ny Apr 3, 2026
a383b83
some plotting fixies
lor3ny Apr 3, 2026
c648799
Cleaned presets
SharkGamerZ Apr 15, 2026
31e3587
Trying the wizard
SharkGamerZ Apr 15, 2026
97833bf
Added venv creation and fixed missing version in pyproject
SharkGamerZ Apr 15, 2026
cd5451c
Fixed missing wizard.py part and removed benchmarks/
SharkGamerZ Apr 15, 2026
8206162
Fixed wizard cleaning terminal + blink building
SharkGamerZ Apr 16, 2026
efe05a9
Min python version required
SharkGamerZ Apr 17, 2026
85d1f98
Added dependencies and updated Makefile
SharkGamerZ Apr 17, 2026
76f7dd3
Removed requirements
SharkGamerZ Apr 17, 2026
fbcde0c
Organized hierarchically wrappers
SharkGamerZ Apr 17, 2026
a9625cf
Added support for graph 500
SharkGamerZ Apr 17, 2026
84dce1d
Fix g500
SharkGamerZ Apr 17, 2026
a59eb08
Fixed g500
SharkGamerZ Apr 17, 2026
c82ec4b
Fixed presets.json leading commas
SharkGamerZ Apr 17, 2026
3552590
Call con DE SENSI
SharkGamerZ Apr 18, 2026
a37c152
Makefile is more robust now
SharkGamerZ Apr 24, 2026
9df0339
Makefile is more robust now
SharkGamerZ Apr 24, 2026
dd6883e
Merged
SharkGamerZ Apr 24, 2026
94b5720
Merge branch 'develop' of https://github.com/HLC-LAB/CRAB into develop
SharkGamerZ Apr 24, 2026
ec2ed4f
Modified Envs to CRAB_PATH_* and fixed Makefile for checking again
SharkGamerZ Apr 24, 2026
5346be5
Fixed makefile
SharkGamerZ Apr 24, 2026
f0bdbf9
Typo fix + chiamata
SharkGamerZ Apr 27, 2026
9b8bafb
Refactored engine.py
SharkGamerZ Apr 28, 2026
f270560
Removed old history + Added autocompletition
SharkGamerZ Apr 28, 2026
342390d
Removed legacy script generator
SharkGamerZ Apr 29, 2026
d7fd354
Refactored something, removed cli.py and tui.py and added 'crab' binary
SharkGamerZ Apr 29, 2026
9e76954
Fixed how the crab worker was called
SharkGamerZ Apr 29, 2026
b46db08
Added fallbacks
SharkGamerZ Apr 29, 2026
bfa96a4
Fixed recipe for crab to compile c++
SharkGamerZ Apr 29, 2026
4195c62
Removed comments that where printed
SharkGamerZ Apr 29, 2026
142940d
Fixed mpicxx compiler
SharkGamerZ Apr 29, 2026
45c35f8
Modified how env were passed from login to exec nodes
SharkGamerZ Apr 29, 2026
bfed4ce
Indent fix
SharkGamerZ Apr 29, 2026
cb78651
Added override of local options to global options
SharkGamerZ May 5, 2026
400deb9
Added correct check for timeout
SharkGamerZ May 5, 2026
13b7700
Changed timeout message
SharkGamerZ May 5, 2026
0b12eaf
Adjusted division of nodes allocated by percent
SharkGamerZ May 5, 2026
3529286
Redefined how the crab execs find the CRAB ROOT
SharkGamerZ May 5, 2026
25f9a28
Small fix to the crab setup not waiting for input
SharkGamerZ May 5, 2026
bda3a78
Modified how CRAB handles apps' fails
SharkGamerZ May 5, 2026
3e05058
Automated installation of tui requirements
SharkGamerZ May 5, 2026
44558c8
Fixed relative paths
SharkGamerZ May 13, 2026
857b936
Final fix for relative paths
SharkGamerZ May 13, 2026
134c54d
Refactor(core): migrate to isolated WLM subshells and JSON environmen…
SharkGamerZ May 20, 2026
d32d2a2
Fix for the orchestrator
SharkGamerZ May 20, 2026
289950b
Fix for the engine to underscore spaces in job names
SharkGamerZ May 20, 2026
34bed16
Changed default leonardo's wlmanager
SharkGamerZ May 20, 2026
7e562b8
Added back the binary path for g500
SharkGamerZ May 20, 2026
209cc8d
Try implementing quantum-espresso
SharkGamerZ May 20, 2026
a0241d7
Fixed deadlock during QE recipe
SharkGamerZ May 20, 2026
5eb5476
Modified QE recipe to add module load prompt
SharkGamerZ May 20, 2026
dd6bef1
Added missing method to QE recipe
SharkGamerZ May 20, 2026
6e50c4a
Modified how cwd was managed in the QE recipe
SharkGamerZ May 20, 2026
e3559de
Updated QE wrapper
SharkGamerZ May 20, 2026
53c34ad
Modified QE wrapper's path to bin
SharkGamerZ May 20, 2026
df603b5
Added support for string and bytes output
SharkGamerZ May 20, 2026
2a1b3a8
Modified QE wrapper
SharkGamerZ May 20, 2026
3f3a962
Reviewed all the QE wrapper
SharkGamerZ May 20, 2026
893c2a2
Fixed sbatch directives for modules
SharkGamerZ May 20, 2026
2af5e24
Modified pre commands
SharkGamerZ May 20, 2026
c2cb7c0
Readded mpirun override
SharkGamerZ May 20, 2026
550dfba
Added mpirun override
SharkGamerZ May 21, 2026
785f36b
Modified how the path is constructed for QE loaded by module
SharkGamerZ May 21, 2026
dca3c49
Refactor: implement declarative recipe builds and context-aware envir…
SharkGamerZ May 21, 2026
c36b534
Updated how the pre-hooks are managed
SharkGamerZ May 21, 2026
bd76fb8
Modified manager
SharkGamerZ May 21, 2026
feda64a
Modified (again) manager.py
SharkGamerZ May 21, 2026
ce1bbff
Modified output structure of QE
SharkGamerZ May 21, 2026
6a8d8f3
Fixed QE multi output path for different runs
SharkGamerZ May 21, 2026
07e7c47
Added flag to not retain all the files
SharkGamerZ Jun 8, 2026
c5ecf63
Added the new csv writing
SharkGamerZ Jun 8, 2026
5688408
Removed description.csv
SharkGamerZ Jun 8, 2026
6f225c1
Fix to retrive ppn
SharkGamerZ Jun 8, 2026
8ababf2
Fixed write to file with filelock
SharkGamerZ Jun 8, 2026
b1adc74
Changed name
SharkGamerZ Jun 8, 2026
37b6250
Added qe versioning
SharkGamerZ Jun 8, 2026
895f8d7
Fixed recipes of qe
SharkGamerZ Jun 8, 2026
67311bc
Fixe again qe
SharkGamerZ Jun 8, 2026
24fb009
Trying to fix
SharkGamerZ Jun 8, 2026
c56b997
[ADD] Doc.
DanieleDeSensi Jun 9, 2026
d0a3925
Modified todo and fixed recipes
SharkGamerZ Jun 10, 2026
3488c23
Updated TUI
SharkGamerZ Jun 10, 2026
0e713e0
Merge branch 'develop' of https://github.com/HLC-LAB/CRAB into develop
SharkGamerZ Jun 10, 2026
ecd6209
TUI Fixes
SharkGamerZ Jun 10, 2026
a490109
TUI Fixes
SharkGamerZ Jun 10, 2026
452e1e3
(Maybe last) TUI Fixes
SharkGamerZ Jun 10, 2026
bf0817a
Fixed available nodes visualization
SharkGamerZ Jun 10, 2026
ecfd810
Maybe really fixed available node vis
SharkGamerZ Jun 10, 2026
7515848
Little fix for visualization
SharkGamerZ Jun 10, 2026
6dcd4f2
Added funcionality to export the data into the html
SharkGamerZ Jun 10, 2026
b4ff3ef
Fixed process not being killed
SharkGamerZ Jun 10, 2026
d428bfe
Fixed dashboard visualization
SharkGamerZ Jun 10, 2026
d47b185
Fixed dashboard
SharkGamerZ Jun 10, 2026
aff303d
Fixed dashboard
SharkGamerZ Jun 10, 2026
97b2ed6
Added dashboard light mode + fixes
SharkGamerZ Jun 10, 2026
246fbe7
Added dashboard light mode + fixes
SharkGamerZ Jun 10, 2026
0350c0f
Fixes to the dashboard + added leonardo example
SharkGamerZ Jun 10, 2026
5291155
Fixes to the dashboard + added leonardo example
SharkGamerZ Jun 10, 2026
8ccdb8c
Fix for the violin plot
SharkGamerZ Jun 10, 2026
23d43a5
Fix for the violin plot
SharkGamerZ Jun 10, 2026
ac36112
Removed exclusive arg from leonardo's preset
SharkGamerZ Jun 10, 2026
038d96b
Removed exclusive arg from leonardo's preset
SharkGamerZ Jun 10, 2026
7c099ef
[FIX] Updated minimum required Python to 3.10.
DanieleDeSensi Jun 10, 2026
41993f9
[FIX] Updated minimum required Python to 3.10.
DanieleDeSensi Jun 10, 2026
a13bb93
Fixed allocation, and modified example
SharkGamerZ Jun 10, 2026
2517f1b
Fixed allocation, and modified example
SharkGamerZ Jun 10, 2026
2c0b388
Merge branch 'develop' of https://github.com/HLC-LAB/CRAB into develop
SharkGamerZ Jun 10, 2026
310cae6
Merge branch 'develop' of https://github.com/HLC-LAB/CRAB into develop
SharkGamerZ Jun 10, 2026
ef6ce6b
[FIX] Updated docs.
DanieleDeSensi Jun 10, 2026
68e0a71
[FIX] Updated docs.
DanieleDeSensi Jun 10, 2026
23f3608
Merge branch 'develop' of github.com:HLC-Lab/CRAB into develop
DanieleDeSensi Jun 10, 2026
b942922
Merge branch 'develop' of github.com:HLC-Lab/CRAB into develop
DanieleDeSensi Jun 10, 2026
73065b2
Fixed plots in the dashboard compare view disappearing
SharkGamerZ Jun 10, 2026
25ad50c
Fixed plots in the dashboard compare view disappearing
SharkGamerZ Jun 10, 2026
be80fc0
Merge branch 'develop' of https://github.com/HLC-LAB/CRAB into develop
SharkGamerZ Jun 10, 2026
782b6d9
Merge branch 'develop' of https://github.com/HLC-LAB/CRAB into develop
SharkGamerZ Jun 10, 2026
c053f0f
Move dashboard template into src/crab/, gitignore exports, fix compar…
SharkGamerZ Jun 10, 2026
76757cc
Update docs and README to reflect dashboard move and export feature
SharkGamerZ Jun 10, 2026
d24041c
Merge develop into master
SharkGamerZ Jun 10, 2026
2d2431a
Sync develop with master (teammate commits: plot_heatmap, cong_analys…
SharkGamerZ Jun 10, 2026
a3e50b8
Removed files
SharkGamerZ Jun 10, 2026
97095b0
[FIX] Minor fixes on the documentation.
DanieleDeSensi Jun 10, 2026
e4be0ab
[ADD] Tutorial.
DanieleDeSensi Jun 10, 2026
43fb8b9
[IMP] Improved tutorial.
DanieleDeSensi Jun 10, 2026
a4f59f9
[IMP] Docs.
DanieleDeSensi Jun 11, 2026
cdd3e84
Update contributing.md
DanieleDeSensi Jun 11, 2026
d20b854
[ADD] crab setup wizard: main menu, custom benchmark registration, im…
SharkGamerZ Jun 15, 2026
4c19c99
Merge develop into master (sync plot_heatmap, bursty_noise_incast fix)
SharkGamerZ Jun 15, 2026
4acae3a
Updated examples
SharkGamerZ Jun 15, 2026
38a13cd
refactor(allocator): get_abs_split accepts 'even' or list[float] inst…
SharkGamerZ Jun 18, 2026
c5013f8
Fix get_abs_split to handle 'e' alias and reject unknown strings
SharkGamerZ Jun 18, 2026
6baf85f
feat(allocator): add stride parameter to allocate_interleaved for blo…
SharkGamerZ Jun 18, 2026
e7a9a64
Fix allocate_interleaved infinite loop and remove dead code guard
SharkGamerZ Jun 18, 2026
8e5d09f
feat(allocator): add allocate_random with optional seed for reproduci…
SharkGamerZ Jun 18, 2026
3934a42
style(allocator): move import random to module level
SharkGamerZ Jun 18, 2026
4b347c6
refactor(allocator): rewrite allocate_partitioned for named first-cla…
SharkGamerZ Jun 18, 2026
74a851d
fix(allocator): guard missing partitions key; inline len(node_list) r…
SharkGamerZ Jun 18, 2026
be26af4
refactor(runner): read nested allocation dict; dispatch by partitions…
SharkGamerZ Jun 18, 2026
e3a657e
refactor(tui): update allocation section to nested dict with mode/spl…
SharkGamerZ Jun 18, 2026
a584d04
fix(tui): guard Select.BLANK in _get_allocation_state
SharkGamerZ Jun 18, 2026
26661da
refactor(tui): replace flat allocation fields with JSON TextArea in L…
SharkGamerZ Jun 18, 2026
691c1e6
refactor(examples): migrate all JSON configs to nested allocation dict
SharkGamerZ Jun 18, 2026
e0d78ff
docs: update allocation docs to nested dict with named partitions
SharkGamerZ Jun 18, 2026
d50784f
fix: address final review findings
SharkGamerZ Jun 18, 2026
94dc343
refactor(examples): remove system_sbatch and bare module-purge system…
SharkGamerZ Jun 18, 2026
ce18eb0
refactor(examples/leonardo): restructure with subfolders and scientif…
SharkGamerZ Jun 18, 2026
3da3320
feat(tui): multi-experiment support with async DOM fixes
SharkGamerZ Jun 18, 2026
3fe298d
docs: audit and sync documentation with codebase
SharkGamerZ Jun 18, 2026
b1606c3
fix(critical): address all CRITICAL-level audit findings
SharkGamerZ Jun 19, 2026
c3bcbd2
fix(high): address all HIGH-priority audit findings
SharkGamerZ Jun 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: CI

on:
push:
branches: [master, develop]
pull_request:

jobs:
docs:
name: Build docs (strict)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install -r docs/requirements.txt
- run: mkdocs build --strict

package:
name: Package sanity (min Python)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
# The minimum supported version — guards against syntax newer than the
# declared floor (e.g. 3.11+ features slipping in) breaking `crab setup`.
python-version: "3.10"
- run: pip install -e .
- name: Syntax-check the package
run: python -m compileall -q src/
- name: Smoke-test the CLI entry point
run: crab --help
21 changes: 17 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
.venv/
__pycache__/
*.pyc
data/
benchark_mix.txt
tui_node_file
benchmarks/
.env
hosts
/data/
.todo.md
*.egg-info/

# CRAB Setup & Benchmarks
/benchmarks/
/config/environments/

# Generated dashboard exports (contain embedded data, should not be committed)
crab_export.html
*_export.html

# Documentation build output
/site/

15 changes: 15 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Read the Docs configuration. See:
# https://docs.readthedocs.io/en/stable/config-file/v2.html
version: 2

build:
os: ubuntu-24.04
tools:
python: "3.12"

mkdocs:
configuration: mkdocs.yml

python:
install:
- requirements: docs/requirements.txt
56 changes: 56 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
.PHONY: install setup clean venv _install_core _check_python

.DEFAULT_GOAL := install

VENV_DIR = .venv
PIP = $(VENV_DIR)/bin/pip
CRAB_BIN = $(VENV_DIR)/bin/crab

# 0. The Guardrail (Fails instantly if Python is too old)
_check_python:
@python3 -c 'import sys; sys.exit(1) if sys.version_info < (3, 10) else sys.exit(0)' || \
(echo "============================================================"; \
echo "[!] ERROR: CRAB requires Python 3.10 or higher."; \
echo " You are currently using: $$(python3 --version 2>&1)"; \
echo ""; \
echo " Suggestion: Run \`module load python\` or activate a modern"; \
echo " Python environment before running \`make\` again."; \
echo "============================================================"; exit 1)

# 1. The Virtual Environment Builder
venv: _check_python
python3 -m venv $(VENV_DIR)
$(PIP) install --upgrade pip
$(PIP) install argcomplete
@echo 'eval "$$(register-python-argcomplete crab)"' >> $(VENV_DIR)/bin/activate
@echo 'register-python-argcomplete --shell fish crab | source' >> $(VENV_DIR)/bin/activate.fish

# 2. The Traffic Cop (Checks if already installed)
install:
@if [ -x "$(CRAB_BIN)" ]; then \
echo "============================================================"; \
echo "[!] CRAB is already installed in this directory."; \
echo ""; \
echo "To configure new benchmarks, activate your environment:"; \
echo " source $(VENV_DIR)/bin/activate"; \
echo " crab setup"; \
echo ""; \
echo "To completely reinstall, run \`make clean\` first."; \
echo "============================================================"; \
else \
$(MAKE) _install_core; \
fi

# 3. The Actual Installation
_install_core: venv
$(PIP) install -e .
@echo "[✔] CRAB core installed in virtual environment."
@echo "Launching setup wizard to configure benchmarks..."
$(CRAB_BIN) setup

setup:
$(CRAB_BIN) setup

clean:
@echo "Cleaning up build artifacts..."
rm -rf build/ dist/ *.egg-info $(VENV_DIR)
99 changes: 99 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/svg/crab-outlined-dark.svg">
<img alt="CRAB" src="docs/assets/svg/crab-outlined.svg" width="480">
</picture>
</p>

<p align="center"><strong>Co-Running Applications Benchmarking framework</strong></p>

<p align="center">
<a href="https://www.python.org/"><img alt="Python Version" src="https://img.shields.io/badge/python-3.10+-blue.svg"></a>
<a href="https://opensource.org/licenses/MIT"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
<a href="https://hlc-crab.readthedocs.io/en/latest/?badge=latest"><img alt="Documentation Status" src="https://readthedocs.org/projects/hlc-crab/badge/?version=latest"></a>
<a href="https://github.com/HLC-Lab/CRAB/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/HLC-Lab/CRAB/actions/workflows/ci.yml/badge.svg"></a>
</p>

**CRAB** runs **multiple HPC applications simultaneously** on Slurm-managed clusters to measure
their performance and quantify how they **interfere** with one another (network congestion,
shared-resource contention). Applications are described by small Python **wrappers** that teach
CRAB how to launch them and parse their output, so results are collected uniformly regardless of
the application — designate *victims* (measured) and *aggressors* (interference generators), and
CRAB orchestrates the rest.

![asciicast](https://user-images.githubusercontent.com/11363902/203875389-918931a5-e110-4107-8854-c8c3656ab3e2.gif)

## ✨ Key features

* **Dual interface** — a **Command Line Interface** for automation and a **Textual UI** for interactive use.
* **System-portable experiments** — the same experiment config runs on any cluster; per-system details live in a centralized **preset** system (`leonardo`, `lumi`, …).
* **Complex application mixes** — run many applications at once, designating *victims* and *aggressors*.
* **Automated, converged data collection** — gathers performance data and stops once statistical convergence is reached.
* **Standard output** — results saved as CSV, ready for pandas or R.
* **Built-in dashboard** — `crab export` produces a self-contained HTML file with scatter, line, bar, and violin charts, a **Compare** tab for cross-experiment overlays, and dark/light themes. No server needed to share results.
* **Extensible** — support a new benchmark by adding a Python wrapper; no core changes needed.

## 📖 Documentation

**Full documentation: [hlc-crab.readthedocs.io](https://hlc-crab.readthedocs.io/)** — installation,
configuring a cluster, writing experiments, extending CRAB with new benchmarks, and the complete
reference.

Quick links:
[Tutorial](https://hlc-crab.readthedocs.io/en/latest/tutorial/) ·
[Concepts](https://hlc-crab.readthedocs.io/en/latest/concepts/system-dependent-vs-independent/) ·
[Installation & setup](https://hlc-crab.readthedocs.io/en/latest/using/installation/) ·
[Configuring your cluster](https://hlc-crab.readthedocs.io/en/latest/using/presets/) ·
[Writing experiment configs](https://hlc-crab.readthedocs.io/en/latest/using/writing-configs/) ·
[Extending CRAB](https://hlc-crab.readthedocs.io/en/latest/extending/overview/) ·
[Reference](https://hlc-crab.readthedocs.io/en/latest/reference/configuration/)

To build the docs locally:

```bash
pip install -r docs/requirements.txt
mkdocs serve # → http://127.0.0.1:8000
```

## 🚀 Quick start

**Prerequisites:** Python 3.10+, Git, and access to a **Slurm** cluster — CRAB submits every run
with `sbatch`, so Slurm must be available (even the `local` preset, which only changes the
per-application launcher to `mpirun`).

> 💡 Prefer a guided walkthrough? The **[end-to-end tutorial](https://hlc-crab.readthedocs.io/en/latest/tutorial/)**
> runs a complete victim-vs-aggressor experiment step by step. The essentials:

```bash
git clone https://github.com/HLC-Lab/CRAB
cd CRAB
make # creates .venv, installs CRAB (editable), runs the setup wizard
source .venv/bin/activate # activate before using `crab`
```

Build or locate the benchmarks you want to run:

```bash
crab setup
```

Run an experiment, or launch the interactive UI:

```bash
crab run <config.json> -p <preset>
crab tui
```

Results are written under `data/<system>/<name>_<timestamp>/`. Share them as a self-contained
HTML dashboard:

```bash
crab export data/<system>/<name>_<timestamp>/ -o results.html
```

See the [documentation](docs/using/installation.md) for configuring presets, writing experiment
configs, and adding your own benchmarks.

## 📜 License

Released under the MIT License. See the [`LICENSE`](LICENSE) file for details.
111 changes: 0 additions & 111 deletions app/core/benchmark_runner.py

This file was deleted.

25 changes: 0 additions & 25 deletions app/core/wl_manager/mpi.py

This file was deleted.

25 changes: 0 additions & 25 deletions app/core/wl_manager/slurm.py

This file was deleted.

Loading