编写在GPU上运行的第一个内核代码。像其他任何编程语言一样编写GPU上的第一个程序是输出字符串“Hello World”。
源文件hello.cu
#include <stdio.h>
__global__ void helloFromGPU(void)
{
printf("Hello World from GPU!\n");
}
int main(void)
{
printf("Hello World from CPU!\n");
helloFromGPU <<<1, 10>>>();
cudaDeviceReset();
return 0;
}
其中修饰符__global__告诉编译器这个函数将会从CPU中调用,然后在GPU上执行。
helloFromGPU <<<1, 10>>>();
三重尖括号意味着从主线程到设备端代码的调用。
三重尖括号里面的参数是执行配置,用来说明使用多少线程来执行内核函数。在这个例子中,有10个GPU线程被调用。
使用nvcc编译器对源代码hello.cu进行编译,CUDA nvcc编译器和gcc编译器及其他编译器有相似的语义。
# nvcc hello.cu -o hello
运行
# ./hello
Hello World from CPU!
Hello World from GPU!
Hello World from GPU!
Hello World from GPU!
Hello World from GPU!
Hello World from GPU!
Hello World from GPU!
Hello World from GPU!
Hello World from GPU!
Hello Wor