今天学习了一下NVIDIA官方教程第一课
CUDA 提供了一种可扩展 C、C++、Python 和 Fortran 等语言的编码范式
我对 CUDA理解,CUDA就像是C的超集一样,提供了对GPU的操作,我目前觉得CUDA没有太多面向对象的东西,更多的是面向过程的代码
CPU上的代码称为主机代码,而在GPU上的代码称为设备代码,GPU就可以理解成一种外设一样,专门用来处理一些计算
在调用GPU后,需要在CPU上加同步锁等待GPU运行完成(CPU给GPU发送一条指令,GPU就去算去了,等完了再返回给CPU,感觉就像是IO设备一样)
CUDA 为许多常用编程语言提供扩展,在此文以C++为例
.cu
是 CUDA 加速程序的文件扩展名
void CPUFunction()
{
printf("This function is defined to run on the CPU.\n");
}
__global__ void GPUFunction()
{
printf("This function is defined to run on the GPU.\n");
}
int main()
{
CPUFunction();
GPUFunction<<<1, 1>>>();
cudaDeviceSynchronize();
}
__global__
关键字表明以下函数将在 GPU 上运行并可全局调用,而在此种情况下,则指由 CPU 或 GPU 调用。- 通常,我们将在 CPU 上执行的代码称为主机