一。编写一个简单的cuda程序
编写一个cuda c程序,需要以下步骤:
(1)用专用扩展名.cu来创建一个源文件
(2)使用CUDA nvcc编译器来编译程序
(3)从命令行运行可执行文件,这个文件有可在GPU上运行的内核代码
下面来看一个最简单的cuda c程序小栗子:
#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;
}
上面的代码包括了内核函数和主函数:
1. 其中修饰符__global__告诉编译器这个函数将会从CPU中调用,然后在GPU上运行。
2. helloFromGPU <<<1,10>>>();用来启动内核函数。三重尖括号意味着从主线程到设备端代码的调用。一个内核函数通过一组线程来执行,所有线程执行相同的代码。三重括号里面的参数时执行配置,用来说明使用多少线程来执行内核函数。在这个例子中,有10个GPU线程被调用。
3. 函数cudaDeviceRest()用来显式地释放和清空当前进程中与当前设备有关的所有资源。
二。CUDA编程结构
包括5个步骤:
(1)分配GPU内存
(2)从CPU内存中拷贝数据到GPU内存
(3)调用CUDA内核函数来完成程序指定的运算
(4)将数据从GPU拷回CPU内存
(5)释放GPU内存空间