Viele wissenschaftliche Programmpakete wie z.B. Matlab oder Mathematica unterstützen heute GPUs out-of-the-box. In Matlab stehen unter anderem folgende Funktionen zur Verfügung: gpuDevice
, gpuArray
, gather
. Bentuzen Sie diese um folgende Aufgaben zu lösen.
tic
… toc
)
Implementieren Sie “Hello World” auf der GPU in CUDA C. Starten Sie von einem “Hello World” für die CPU in einer Datei hello.cu
:
#include <stdio.h>
int main(void)
{
// hello from CPU
printf("Hello World from CPU!\n");
return 0;
}
Bevor Sie den CUDA Compiler nvcc
benutzen können, müssen Sie einmal module load cuda
ausführen. Kompilieren Sie das Programm und führen es aus
nvcc hello.cu -o hello
./hello
Fügen Sie nun über int main ...
eine sogenannte Kernel-Funktion hinzu
__global__ void helloFromGPU(void)
{
// hello from GPU
printf("Hello World from GPU!\n");
}
und rufen sie im Hauptteil auf
helloFromGPU <<<1,10>>>();
cudaDeviceReset();
Kompilieren Sie erneut und beachten Sie den Unterschied in der Ausgabe.
cudaDeviceReset
weg lassen?cudaDeviceReset
durch cudaDeviceSynchronize
ersetzen?threadIdx.x
, um die ID jedes Threads auszugeben.