CUDA核函数的一些说明

  • __global__ 是 CUDA C/C++ 的函数修饰符,表示该函数为核函数
  • 核函数会在 GPU 上执行,但由主机代码调用
  • 返回类型必须为 void
  • 在调用kernel函数时,函数名后的<<<b, t>>>:b代表线程块的数目,t代表每个线程块的线程数目。

CUDA 的核函数指的是需要运行在 GPU 上的函数。CUDA C 在标准 C 的基础上,增加了一些修饰符,是为了更好地区分和编译 GPU 程序。我们接触的第一个修饰符就是 __global__。该修饰符告诉编译器:被修饰的函数应当运行在 GPU 上,因此不能使用通用的 C 编译器对其编译,而是要使用 CUDA 提供的编译器(nvcc)。此外,核函数的输入和输出只能通过指针传递,因此返回类型都为 void ,且只能由主机调用。另一个修饰符 __device__ 表示函数在 GPU 上运行,且不能被主机调用,只能由其他 __global__ 修饰的函数调用。相对应地,__host__ 修饰的函数应运行在 CPU 上,每次调用运行一次,且只能被主机调用。该描述符使用较少,因为所有未显式标明函数前置修饰符的函数均默认为主机函数。

调用核函数时,除了传递函数参数外,还必须要指用 <<<>>> 修饰,用来指定线程块的数量和每个线程块的线程数量。

参考:CUDA 快速入门 - 峰子的乐园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值