DOCUMENTATION
Cuda est une extension du langage C++ permettant d’accéder aux GPUs Nvidia du mésocentre.
Pour l'utiliser, vous devez charger un module cuda :
module load cuda/cuda-12.3
/!\Les cartes K20, K40 et K80 ne peuvent pas utiliser une version de Cuda supérieure à 11.6 à cause d'une incompatibilité de driver. Si vous souhaitez utiliser ces cartes il faudra utiliser une version <= 11.4/!\
Vous pouvez compiler vos propres codes avec le compilateur nvcc.
Voici un simple code Cuda qui additionne 2 tableaux entre eux, ainsi que la marche à suivre pour le lancer sur les machines dédiées du mésocentre :
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 1024
#define THREADS_PER_BLOCK 256
__global__ void add(int *d_a, int *d_b, int *d_c)
{
int ind = threadIdx.x + blockIdx.x *blockDim.x;
if (ind<N) d_c[ind] = d_a[ind] + d_b[ind];
}
int main(int argc,char *argv[])
{
int *a,*b,*c;
int size = N*sizeof(int);
cudaMallocManaged(&a,size);
cudaMallocManaged(&b,size);
cudaMallocManaged(&c,size);
srand(time(NULL));
for (int ii=0; ii<N; ii++){
a[ii] = 1+rand()%1000;
b[ii] = 1+rand()%1000;
}
add<<<N/THREADS_PER_BLOCK,THREADS_PER_BLOCK>>>(a,b,c);
cudaDeviceSynchronize();
for (int ii=0; ii<N; ii++) printf("%d + %d = %d\n",a[ii],b[ii],c[ii]);
cudaFree(a);
cudaFree(b);
cudaFree(c);
return 0;
}
Compilation :
nvcc add.cu -o add
Script de soumission : #! /bin/bash #SBATCH -p publicgpu # File d'attente GPU #SBATCH -n 1 #SBATCH --gres=gpu:1 # Pour réserver une machine avec 1 GPU libre
module load cuda/cuda-11.6
./add
VERSIONS ET SCRIPTS D'INSTALLATION
- cuda-9.2
- cuda-9.1
- cuda-9.0
- cuda-8.0
- cuda-7.5
- cuda-7.0
- cuda-6.5
- cuda-6.0
- cuda-5
- cuda-12.3
- cuda-12.2
- cuda-11.8 (latest)
- cuda-11.6
- cuda-11.4
- cuda-11.2
- cuda-10.2
- cuda-10.1
- cuda-10.0
TAGS
- compiler