Job scripts for running EvoCode on Nibi.
| Script | Purpose |
|---|---|
setup.sh |
One-time environment setup — venv at $HOME/envs/evolver plus dependencies |
run_evolution.sh |
Submit a single evolution run |
Run from the repo root — setup.sh resolves paths relative to its own parent directory:
ssh nibi.alliancecan.ca
cd $PROJECT/EvoCode
bash scripts/setup.sh # loads python/3.12 + java/21, installs evolver/requirements.txtThen add your API key. The .env file must live in evolver/, since the run starts from there:
cp .env.example evolver/.env
nano evolver/.env # add GEMINI_API_KEYSubmit from the repo root — the job script does cd "$SLURM_SUBMIT_DIR/evolver" before running:
mkdir -p slurm_logs # SBATCH --output needs this to exist at submit time
# Single run (uses configs/default.json)
sbatch scripts/run_evolution.sh
# With a specific config — path is relative to evolver/
sbatch scripts/run_evolution.sh configs/quick_test.json
# Check status
squeue -u $USER
# Cancel
scancel <job_id>Evolution parameters live in the JSON config you pass to run_evolution.sh — see evolver/configs/ and the Configuration section of the main README.
Scheduler settings are the SBATCH directives at the top of run_evolution.sh:
| Directive | Default | Notes |
|---|---|---|
--account |
def-YOUR_ACCOUNT |
Your allocation — set this before the first run |
--time |
4:00:00 |
Walltime limit |
--cpus-per-task |
4 |
Should be at least max_parallel_evals from your config |
--mem |
8G |
SLURM reads
#SBATCHlines before the shell runs, so they do not expand variables. Set--accountto a literal value rather than relying on$SLURM_ACCOUNT.
Nibi has full internet access on all nodes. No proxy configuration is needed for API calls.