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.