CBiB Documentation - Apollo cluster quick Start Guide CBiB Documentation - Guide de prise en main rapide du cluster Apollo Revision 2025-10

In 2025, the CBiB commissioned a new computing cluster to replace the Cortex cluster.
The cluster is called Apollo and consists of eight computing nodes with a total of 512 cores and 3.2 TB of RAM.
This new cluster offers GPU resources for the first time with four NVIDIA H100 cards.
This system relies on GPFS and ISILON storage to meet performance and security requirements, as well as a high-speed network.
The documentation below describes how to make the best use of these resources.

En 2025 le CBiB a mis en service un nouveau cluster de calcul en remplacement du cluster cortex.
Le cluster se nomme Apollo et se compose de 8 noeuds de calculs pour un total de 512 coeurs de et 3.2 To de RAM.
Ce nouveau cluster propose pour la première fois des ressources GPU sous la forme de 4 cartes NVIDIA H100
Ce système s’appuie sur les stockage GPFS et ISILON pour répondre aux besoin de performance et de sécurité ainsi que sur un réseau haut débit.
La documentation ci dessous vous décrit comment utiliser au mieux ces ressources mises à disposition.

Logo région Nouvelle-Aquitaine Logo CBiB Logo CPER

Sign up (request an account): Inscription (demande de compte): https://services.cbib.u-bordeaux.fr/CBIBinfra/#!/create_cbib_account
The account will be created in few days. Le compte sera créé d'ici quelques jours.

Forgot your password: Mot de passe oublié: https://services.cbib.u-bordeaux.fr/ssp2/index.php?action=sendtoken
Change your password: Changer son mot de passe: https://services.cbib.u-bordeaux.fr/ssp2/

Access through SSH
Server: apollo.cbib.u-bordeaux.fr

Connexion via SSH
Serveur: apollo.cbib.u-bordeaux.fr

windows windows On Linux/Mac, simply use ssh client like Sur Linux/Mac, utiliser simplement un client SSH tel que OpenSSH


windows On Windows, you can use a client like Sur Windows, on peut utiliser un client tel que PuTTY


Note: there is two login server (gemini01 and gemini02).
You can be connected on one server or another. Please remind this when you use screen or another tools.

Note: il y a deux serveur de login (gemini01 et gemini02).
Vous pouvez être connecté sur l'un ou l'autre. Souvenez-vous en si vous utilisez screen ou autre.

StorageStockage

Usage Capacity (total) Capacité (total) Performance Backup Sauvegarde Quota Quota
/home Home directory (personal data) Répertoire personnel 10 TBTo
Correct
ok Snapshots + replication ok Snapshots + replication 200 Go per user 200 Go par utilisateur
/mnt/cbib Projects (common data) Projets (données communes) 400 TBTo
Correct
ok Snapshots + replication ok Snapshots + replication
/scratch Temporary data to compute Données de calcul temporaire 300 TBTo
Really goodExcellente
warning No Backup + cleaning process attention Pas de sauvegarde + nettoyage automatique
/isilon/banks Databank directory Répertoire de banque de données 10 TBTo
Correct
ok Snapshots + replication ok Snapshots + replication

All storage spaces are shared across all the nodes.

Les espaces sont accessibles depuis l'ensemble des noeuds.

Restoring data (snapshots)
If data is modified or deleted by mistake, it is sometimes possible to restore a previous version using snapshots.
These snapshots are available in Read-Only mode in the /backup directory.

Restauration de données (snapshots)
En cas de modification ou suppression de données par erreur, il est parfois possible de restaurer une version précédente grâce aux snapshots.
Ces snapshots sont disponibles en mode Read-Only dans le répertoire /backup


Data transferTransfert des données

SSH protocol (or SFTP - SSH File Transfer Protocol) is the only one protocol available at the CBiB.
But, you can use many clients to download your data (scp, rsync, wget, lftp, aspera, etc.).

Le seul protocole disponible au CBiB pour accéder aux données est SSH (ou SFTP - SSH File Transfer Protocol).
En revanche, de nombreux clients sont disponibles pour télécharger des données (scp, rsync, wget, lftp, aspera, etc.).

To use softwares like blast, python, gcc, etc. we have to "load" them using module commands Pour utiliser les logiciels comme blast, python, gcc, etc. il faut utiliser les commandes module (Environment Modules, version 3.2.10):

  • List: module avail
  • Lister: module avail
  • Use blast: module load blast
  • Utiliser blast: module load blast
  • Use a specific version: module load blast/2.2.25
  • Utiliser une version spécifique: module load blast/2.2.25
  • Help: module, module whatis blast or module help blast
  • Aide: module, module whatis blast ou module help blast

The computing works are done by submitting "jobs" to the workload manager Les traitements sont réalisés en soumettant des "jobs" au gestionnaire de tâche Slurm (verion 24.11.5).

  • 1. Write a bash script

    1. Écrire un script bash

    This script must contain your commands to execute. Le script doit contenir vos commandes à exécuter.
  • 2. Options and requirements

    2. Options et exigences

    In command line or, better, at the beginning of the script. En ligne de commande ou, bien mieux, en début de script.
    ### Job name
    #SBATCH --job-name=demo_job
    ### Max run time "hours:minutes:seconds"
    #SBATCH --time=01:00:00
    ### Requirements nodes/servers (default: 1)
    #SBATCH --nodes=1
    ### Requirements cpu/core/task (default: 1)
    #SBATCH --ntasks-per-node=1
    ### Requirements memory (default: 12.5GB per cpu)
    #SBATCH --mem-per-cpu=12800MB
    
    ### Nom du job
    #SBATCH --job-name=demo_job
    ### Temps d'éxécution maximale "heures:minutes:secondes"
    #SBATCH --time=01:00:00
    ### Demandes noeud/serveurs (par défaut: 1)
    #SBATCH --nodes=1
    ### Demandes cpu/coeur/tache (par défaut: 1)
    #SBATCH --ntasks-per-node=1
    ### Demandes en mémoire (par défaut: 12.5Go par cpu)
    #SBATCH --mem-per-cpu=12800MB
    
  • 3. Submit your job

    3. Soumettre le job

    sbatch myscript.sh
  • 4. Follow your job

    4. Suivre le job

    The status goes successively from PENDING (PD) to RUNNING (R) and finally COMPLETED (C) (so job disappear from the queue). Le statut du job passe successivement de PENDING (PD), RUNNING (R) à COMPLETED (C) (le job disparaît alors de la file d'attente).
    squeue
  • 5. See output

    5. Visualiser la sortie

    The output of the script (standard output and standard error) is live written. La sortie du script (sortie standard et d'erreur) est écrite en direct.
    File Fichier slurm-[jobid].out

Partitions:
You can submit your tasks to 3 partitions depending on your needs and computing time
- compute : CPU only / DefaultTime 24 hours / MaxTime = 7 days
- compute_long : CPU only / no time limit / lower priority
- gpu : GPU only / DefaultTime 24 hours MaxTime = 7 days

Partitions:
Selon les ressources nécessaires et le temps de calcul vous pouvez soumettre vos jobs à 3 partitions
- compute : CPU uniquement / DefaultTime 24 heures / MaxTime = 7jours
- compute_long : CPU uniquement / pas de limit de temps / moins prioritaire
- gpu : GPU uniquement / DefaultTime 24 heures / MaxTime = 7jours


GPU:
NVIDIA H100 cards are divided into MIGs (Multi-Instance GPUs).
When launching the job, in addition to selecting the GPU partition, you must select a MIG type.
The name MIG indicates the amount of memory available on the card.

- gpu:nvidia_h100_nvl : full H100 card
- gpu:nvidia_h100_nvl_4g.47gb : MIG with 47Gb
- gpu:nvidia_h100_nvl_1g.24gb : MIG with 24Gb
- gpu:nvidia_h100_nvl_1g.12gb : MIG with 12Gb

Command example : sinteractive --gres=gpu:nvidia_h100_nvl_1g.12gb -p gpu

GPU:
Les cartes NVIDIA H100 sont découpées en MIG (Multi-Instance GPU).
Au moment de lancer le job vous devez, en plus de choisir la partition gpu, choisir un type de MIG.
Le nom des MIG indique la quantité de mémoire disponible sur la carte.

- gpu:nvidia_h100_nvl : carte H100 entière
- gpu:nvidia_h100_nvl_4g.47gb : MIG de 47Gb
- gpu:nvidia_h100_nvl_1g.24gb : MIG de 24Gb
- gpu:nvidia_h100_nvl_1g.12gb : MIG de 12Gb

Exemple de commande : sinteractive --gres=gpu:nvidia_h100_nvl_1g.12gb -p gpu


Notes:
All nodes have access to the data (/home, /scratch, /isilon/bank and /mnt/cbib).
All the softwares are available by the nodes, but we have to load them inside the script with command module add [module].
All jobs are contained and can not use more resources than defined (CPU, memory).
Jobs which exceed limits (memory or time, values by default or set) are killed.
It's possible to connect to compute node when a job is running (ssh apolloXX).

Notes:
Tous les nœuds ont accès aux données (/home, /scratch, /isilon/bank et /mnt/cbib).
Tous les logiciels sont accessibles par les nœuds, il faut toutefois les charger dans le script avec les commandes module add [module].
Tous les jobs sont contenus et ne peuvent pas utiliser plus de ressources que définies (CPU, mémoire).
Les jobs qui dépassent les limites (mémoire ou temps, valeurs par défaut ou celles indiquées) sont tués.
Il est possible de se connecter sur un nœud de calcul si un job est en train de tourner (ssh apolloXX).

Slurm commandsCommandes slurm

Usually, you write a bash script then submit it:

Une fois son script bash écrit, on le soumet:

  • Submit a job: sbatch myscript.sh
  • Soumettre un job: sbatch myscript.sh
  • Information about current jobs: squeue
  • Information sur les jobs en cours : squeue
  • Information on my jobs: squeue -u $USER
  • Information sur mes jobs: squeue -u $USER
  • Information on a job:scontrol show job [jobid]
  • Information sur un job:scontrol show job [jobid]
  • Delete a job: scancel [job_id]
  • Supprimer un job: scancel [job_id]

Slurm documentation is widely available and official website is pretty nice: La documentation en ligne sur slurm est abondante et la documentation officielle très bonne: https://slurm.schedmd.com
If you are used to PBS/Torque/SGE/LSF/LoadLeveler, refer to: Si vous êtes habitué à PBS/Torque/SGE/LSF/LoadLeveler, référez-vous à: https://slurm.schedmd.com/rosetta.pdf

Options frequently used

Options couramment utilisées

--job-name=demo_job Job name Nom du job
--partition=XXXX Partition name (compute / compute_long / gpu) Nom de la partition (compute / compute_long / gpu)
--time=01:00:00 Limit run time "hours:minutes:seconds" (default: 365 days) Temps limite d'exécution "heures:minutes:secondes" (par défaut: 365 jours)
--output=slurm-%j.out Specify the output file (standard output and error, default: slurm-[jobid].out) Définir le fichier de sortie (sortie standard et sortie d'erreur, par défaut = slurm-[jobid].out)
--workdir=/path/ Working directory (default: submission directory) Repertoire de travail (par défaut: répertoire de soumission):
--nodes=N Number of nodes/servers requested Nombre de nœuds/serveurs demandés
--ntasks=n
--ntasks-per-node=n
Number of cores/tasks requested (default = 1 per node) Nombre de cœurs/tâches souhaités (par défaut= 1 par nœud)
--mem=GB
--mem-per-cpu=GB
Amount of real memory (default = 12.5GB/core) Mémoire réelle totale demandée (par défaut = 12,5Go/cœur)
--exclusive Whole node Nœud entier
--mail-user=email@address
--mail-type=ALL
Send mail on events (NONE, BEGIN, END, FAIL, ALL) Envoyer un mail sur certains événements (NONE, BEGIN, END, FAIL, ALL)

Example/Template scriptScript exemple/modèle

#!/bin/bash

################################ Slurm options #################################

### Job name
#SBATCH --job-name=demo_job

### Limit run time "hours:minutes:seconds" (default: 365 days)
#SBATCH --time=01:00:00

### Specify requirements - Task (default: 1 node, 1 Core, 12.5G mem/cpu)
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --mem-per-cpu=12800MB

################################################################################

# Useful information to print
echo '########################################'
echo 'Date:' $(date --iso-8601=seconds)
echo 'User:' $USER
echo 'Host:' $HOSTNAME
echo 'Job Name:' $SLURM_JOB_NAME
echo 'Job Id:' $SLURM_JOB_ID
echo 'Directory:' $(pwd)
# Detail Information:
scontrol show job $SLURM_JOB_ID
echo '########################################'

# modules loading
module add python


# What you actually want to launch
echo 'Waooouhh. Awesome.'


echo '########################################'
echo 'Job finished' $(date --iso-8601=seconds)

Rack Storage Admin nodes Switch Ethernet 10Gbits/s Compute nodes Compute nodes Compute nodes

Total of 9 compute nodes, 512 cores, 3.2TB RAM

Total de 9 nœuds de calcul, 512 cœurs, 3.2To RAM

  • 7 standard compute nodes (64 cores, 256 GB RAM)7 nœuds de calcul standard (64 cœurs, 256 Go RAM)

    HP Apollo 2000 Gen 10+, 2 x AMD EPYC 7513 (32 cores 2.8GHz)

  • 1 "big memory" compute node (64 cores, 1TB RAM)1 nœud de calcul "big memory" (64 cœurs, 1To RAM)

    HP Apollo 2000 Gen 10+, 2 x AMD EPYC 7513 (32 cores 2.8GHz)

  • 1 GPU node (32 cores, 384GTB RAM, 4 NVIDIA H100 NVL)1 nœud GPU (32 cœurs, 384Go RAM, 4 NVIDIA H100 NVL)

    HP DL385Gen11, 2 x AMD EPYC 9124 (16 cores 3.0GHz)

  • 1 master nodes (32 cores, 128 GB RAM)1 nœuds d'administration (32 cœurs, 128 Go RAM)

    HP DL325 Gen10+, 2 x AMD EPYC 7313P (16 cores 2.85GHz)

  • DELL PowserScale storage, ~750TB usable Stockage DELL PowerScale, ~750To utile

    6 x H400
    /home, /mnt/cbib, /module/ /banks

  • Ethernet network (administration), 100 Gbits/sRéseau Ethernet (administration), 10O Gbits/s

    HP Aruba 32p 100Gbps