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
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