为什么 Cuda 内核用“__global__”而不是“__kernel__”注释

Why are Cuda kernels annotated with `__global__` instead of `__kernel__`

其实标题已经是全题了。 为什么 Nvidia 决定调用它的 GPU 入口函数 kernels,但在 Cuda 中它们必须用 __global__ 注释而不是 __kernel__?

目标是分离实体(内核)及其范围或位置。

与你的问题相关的函数有以下三种:

  1. __device__ 函数只能从设备调用,它是 仅在设备中执行。
  2. __global__个函数可以调用 来自主机,并在设备中执行。
  3. __host__ 在主机上运行 运行,从主机调用。

如果他们将函数命名为作用域__kernel__,就无法按照上面的分隔方式来区分它们了。

此处的 __global__ 表示“在 space 主机和设备之间共享”,在这些术语中是“它们之间的全局区域”。