[NVIDIA]Accelerating Applications with CUDA C/C++笔记

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 代码将继续执行*无需等待内核启动完成*。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值