为什么 Cuda 内核用“__global__”而不是“__kernel__”注释
Why are Cuda kernels annotated with `__global__` instead of `__kernel__`
其实标题已经是全题了。
为什么 Nvidia 决定调用它的 GPU 入口函数 kernels,但在 Cuda 中它们必须用 __global__
注释而不是 __kernel__
?
目标是分离实体(内核)及其范围或位置。
与你的问题相关的函数有以下三种:
__device__
函数只能从设备调用,它是
仅在设备中执行。
__global__
个函数可以调用
来自主机,并在设备中执行。
__host__
在主机上运行 运行,从主机调用。
如果他们将函数命名为作用域__kernel__
,就无法按照上面的分隔方式来区分它们了。
此处的 __global__
表示“在 space 主机和设备之间共享”,在这些术语中是“它们之间的全局区域”。
其实标题已经是全题了。
为什么 Nvidia 决定调用它的 GPU 入口函数 kernels,但在 Cuda 中它们必须用 __global__
注释而不是 __kernel__
?
目标是分离实体(内核)及其范围或位置。
与你的问题相关的函数有以下三种:
__device__
函数只能从设备调用,它是 仅在设备中执行。__global__
个函数可以调用 来自主机,并在设备中执行。__host__
在主机上运行 运行,从主机调用。
如果他们将函数命名为作用域__kernel__
,就无法按照上面的分隔方式来区分它们了。
此处的 __global__
表示“在 space 主机和设备之间共享”,在这些术语中是“它们之间的全局区域”。