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__ void GPUFunction()`
- '__global__' 关键字表示以下函数将在 GPU 上运行,并且可以全局调用,在这种情况下,这意味着由 CPU 或 GPU 调用。
- 通常,在 CPU 上执行的代码称为“主机”代码,在 GPU 上运行的代码称为“设备”代码。
- 请注意返回类型“void”。要求使用“__global__”关键字定义的函数返回类型“void”。
`GPUFunction<<<1, 1>>>();`
- 通常,当调用一个函数在 GPU 上运行时,我们称这个函数为“内核”,即“启动”。
- 在启动内核时,我们必须提供一个**执行配置**,这是在向内核传递任何预期参数之前使用“<<<...>>>”语法来完成的。
- 在高层次上,执行配置允许程序员为内核启动指定**线程层次结构**,它定义了线程分组的数量(称为**块**),以及在每个块中执行的**线程数**。稍后将在实验室中详细探讨执行配置,但目前请注意,内核是使用包含“1”线程(第二个配置参数)的“1”线程块(第一个执行配置参数)启动的。
`cudaDeviceSynchronize();`
- 与许多 C/C++ 代码不同,启动内核是异步的:CPU 代码将继续执行*无需等待内核启动完成*。

最低0.47元/天 解锁文章
9057

被折叠的 条评论
为什么被折叠?



