Folosind gpu pe un cluster, cuda, calcul computerizat în

Pe un cluster "Uranus" (umt), nodurile de calculator echipate cu acceleratoare NVIDIA Tesla au fost puse în funcțiune. Pe un singur nod pot fi pornite simultan până la 8 sarcini, dintre care fiecare este alocat unuia sau mai multor procesoare grafice.







Pentru a lucra cu GPU, puteți utiliza
1) tehnologia CUDA;
2) programarea pragma furnizată de compilatoarele C și Fortran IGP (de exemplu, directivele OpenACC);
3) sistemul Matlab.
Pornind de la sarcinile GPU efectuate în sistemul slurm (a se vedea sarcini care rulează pe un cluster în sistem slurm.) Utilizând o comandă de start cu opțiunea --gres = gpu: N.
Compilarea și rularea aplicațiilor pentru GPU cu accelerator PGI și OpenACC. precum și lansarea programelor care folosesc GPU-ul în sistemul Matlab sunt discutate în instrucțiuni separate.
Mai jos este compilarea programelor și tehnologia CUDA.

Compilarea programelor și a tehnologiei CUDA

Cea mai recentă versiune a bibliotecii CUDA este localizată în directorul / opt / cuda /.







/ opt / cuda / include / - fișiere antet;
/ opt / cuda / lib / - biblioteca CUDA;
/ opt / cuda / doc / - documentație.
Pentru a utiliza biblioteca CUDA, trebuie să comandați această bibliotecă la compilarea programului, de exemplu:
gcc mytest.c -o mută -lcuda -L / opt / cuda / lib -I / opt / cuda / include
Puteți utiliza compilatorul nvcc.
NVCC <имя файла для компиляции> -o <имя выходного файла>
În clusterul "Uranus", această comandă conectează biblioteca CUDA în mod implicit. Puteți compila programe în C și C ++ (cu extensia .c și fișierele .cpp) și software-ul scris folosind tehnologia CUDA (fișiere de extensie .cu), de exemplu:
u9999 @ umt:

$ nvcc main.c -o gputest

exemplu
Lăsați fișierul cuda_test.cu (din directorul home) să conțină un program pe CUDA:
#include
#include
int principal () int GPU_N;
int dev;
cudaGetDeviceCount (GPU_N);
printf ("Număr dispozitiv :. \ n", GPU_N);
pentru (dev = 0; dev cudaGetDeviceProperties (dispozitivProp, dev);
printf ("ID-ul busului PCI :. \ n", deviceProp.pciBusID);
>
retur 0;
>
Apoi, compilarea programului și lansarea sarcinii pe cluster pot arăta astfel:
u9999 @ umt:

$ nvcc cuda_test.cu -o cuda_test
u9999 @ umt:

$ srun - gres = gpu: 1 ./cuda_test
Numărul de dispozitive: 1
ID-ul busului PCI: 8
u9999 @ umt:

$ srun - gres = gpu: 2 ./cuda_test
Numărul de dispozitive: 2
ID-ul ID-ului PCI: 10
ID-ul Bus IDI: 26







Trimiteți-le prietenilor: