Dans cette page :
Les versions disponibles sur Kairos
6.5.1
CPU-x86
Chargement du module
module load vasp/6.5.1-oneapi2025.3Script SLURM
#!/bin/bash
#SBATCH --job-name=VASP_STD
#SBATCH --nodes=1 # adapter selon vos besoins : 1,2,3,4...
#SBATCH --ntasks-per-node=192 # tous les cœurs du nœud
#SBATCH --time=02:00:00
#SBATCH --partition=noeud
module purge
module load vasp/6.5.1-oneapi2025.3
# Paramètres de performance
export OMP_NUM_THREADS=1
export OMP_PROC_BIND=close
export OMP_PLACES=cores
export MALLOC_MMAP_MAX_=0
export MALLOC_TRIM_THRESHOLD_=-1
export FORT_BUFFERED=true
export UCX_TLS=sm,self,rc_x,ud_x,dc_x
export UCX_NET_DEVICES=mlx5_0:1
export OMPI_MCA_coll_tuned_enable=1
export OMPI_MCA_coll_tuned_priority=100
export OMPI_MCA_coll_hcoll_enable=0
ulimit -s unlimited
ulimit -n 131072
# Adapter NCORE à votre système
sed -i "s/_NCORE_/6/g" INCAR
mpirun -np $SLURM_NTASKS \
--map-by numa:PE=$OMP_NUM_THREADS \
--bind-to core \
vasp_std | tee vasp.out
GPU-ARM
Chargement du module
module load vasp/6.5.1-nvhpc26.1Script SLURM Mono-GPU (conseillé)
#!/bin/bash
#SBATCH --job-name=VASP_GPU_STD
#SBATCH --partition=shared-gpu
#SBATCH --nodes=1 # adapter selon vos besoins : 1 ou 2
#SBATCH --ntasks-per-node=1 # 1 tâche MPI par GPU
#SBATCH --cpus-per-task=40
#SBATCH --gres=gpu:1 # 1 seul GPU
#SBATCH --time=02:00:00
source /etc/profile
module purge
module load vasp/6.5.1-nvhpc26.1
# OpenMP
export OMP_NUM_THREADS=4
export OMP_PLACES=cores
export OMP_PROC_BIND=spread
export OMP_STACKSIZE=512m
# GPU
export CUDA_VISIBLE_DEVICES=0,1,2,3
export FORT_BUFFERED=true
export OMPI_MCA_coll_hcoll_enable=0
ulimit -s unlimited
mpirun -n $SLURM_NTASKS \
--map-by socket:pe=$OMP_NUM_THREADS \
--bind-to none \
vasp_std | tee vasp.out
Script SLURM Multi-GPU
Il faut utiliser le script wrapper.sh (fourni ci-dessous) pour effectuer correctement le binding. La variable WRAPPER doit aussi être modifiée avec le chemin correct.
#!/bin/bash
#SBATCH --job-name=VASP_GPU_STD
#SBATCH --partition=gpu
#SBATCH --nodes=1 # adapter selon vos besoins : 1 ou 2
#SBATCH --ntasks-per-node=4 # 1 tâche MPI par GPU
#SBATCH --cpus-per-task=40
#SBATCH --gres=gpu:4
#SBATCH --time=02:00:00
module purge
module load vasp/6.5.1-nvhpc26.1
# OpenMP
export OMP_NUM_THREADS=4
export OMP_PLACES=cores
export OMP_PROC_BIND=spread
export OMP_STACKSIZE=512m
# GPU
export CUDA_VISIBLE_DEVICES=0,1,2,3
export FORT_BUFFERED=true
export OMPI_MCA_coll_hcoll_enable=0
ulimit -s unlimited
WRAPPER=/path/to/wrapper.sh
mpirun -n $SLURM_NTASKS \
--map-by ppr:4:node:pe=$OMP_NUM_THREADS \
--bind-to none \
$WRAPPER \
vasp_std | tee vasp.out
wrapper.sh:
#!/bin/bash
NICS=(mlx5_0 mlx5_1 mlx5_2 mlx5_3)
CPUNODESBIND=(0 1 2 3)
NUMANODESBIND=(0 1 2 3)
lrank=$OMPI_COMM_WORLD_LOCAL_RANK
export UCX_NET_DEVICES=${NICS[$lrank]}:1
numactl --cpunodebind=${CPUNODESBIND[$lrank]} --membind=${NUMANODESBIND[$lrank]} $@