A gpu használata egy fürtön, cuda, egyidejű számolás

Az "Uranus" (umt) klaszteren NVIDIA Tesla gyorsítókkal ellátott számítógépes csomópontokat helyeztek üzembe. Egy csomóponton egyszerre legfeljebb 8 feladatot lehet elindítani, amelyek mindegyike egy vagy több grafikus processzorhoz van hozzárendelve.

A GPU használatához használhatja
1) CUDA technológia;
2) a C és Fortran PGI fordítói által biztosított pragma programozás (például az OpenACC irányelvek);
3) a Matlab-rendszer.
A GPU-kon futó feladatok végrehajtása a SLURM rendszerben történik (lásd: A SLURM rendszer fürtjeinek futtatása) a run parancs használatával, a -gres = gpu: N opcióval.
A GPU-k alkalmazásainak fordítása és futtatása az PGI Accelerator és az OpenACC segítségével. valamint a GPU-t használó programok elindítását a Matlab rendszerben külön utasításokban tárgyaljuk.
Az alábbiakban összefoglaljuk a programokat és a CUDA technológiát.

Programok és technológiák összeállítása CUDA

A CUDA könyvtár legújabb verziója a / opt / cuda / könyvtárban található.

/ opt / cuda / include / - fejlécfájlok;
/ opt / cuda / lib / - a CUDA könyvtár;
/ opt / cuda / doc / - dokumentáció.
A CUDA könyvtár használatához a könyvtárat el kell rendelni a program összeállításakor, például:
gcc mytest.c -o mytest -lcuda -L / opt / cuda / lib -I / opt / cuda / tartalmaz
Használhatja az nvcc fordítót.
nvcc <имя файла для компиляции> -o <имя выходного файла>
Az "Uranus" fürtön ez a parancs alapértelmezés szerint összekapcsolja a CUDA könyvtárat. A C és C ++ programokat (a .c és .cpp kiterjesztéssel ellátott fájlokat) és a CUDA technológiával (a Cu kiterjesztésű fájlokkal) írt programokat lehet összeállítani, például:
u9999 @ umt:

$ nvcc main.c -o gputest

példa
Hagyja, hogy a cuda_test.cu fájl (a home könyvtárból) tartalmazza a CUDA programot:
#include
#include
int main () int GPU_N;
int dev;
cudaGetDeviceCount (GPU_N);
printf ("Eszköz szám :. \ n", GPU_N);
a (dev = 0; dev cudaGetDeviceProperties (deviceProp, dev);
printf ("PCI busz id :. \ n", deviceProp.pciBusID);
>
visszatérés 0;
>
Ezután a program összeállítása és a feladat elindítása a fürtben a következőképpen néz ki:
u9999 @ umt:

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

$ srun --gres = gpu: 1 ./cuda_test
Eszköz szám: 1
PCI busz id: 8
u9999 @ umt:

$ srun --gres = gpu: 2 ./cuda_test
Eszköz szám: 2
PCI busz id: 10
PCI busz id: 26