【发布时间】:2021-11-11 17:57:01
【问题描述】:
实际上,标题已经是完整的问题。
为什么 Nvidia 决定将其 GPU 入口函数称为 kernels,但在 Cuda 中它们必须使用 __global__ 而非 __kernel__ 进行注释?
【问题讨论】:
-
我建议完全改写这个问题,这样它就符合您给出的答案。换几个字是不行的。
标签: cuda
实际上,标题已经是完整的问题。
为什么 Nvidia 决定将其 GPU 入口函数称为 kernels,但在 Cuda 中它们必须使用 __global__ 而非 __kernel__ 进行注释?
【问题讨论】:
标签: cuda
目标是分离实体(内核)及其范围或位置。
与您的问题相关的函数分为三种类型:
__device__ 函数只能从设备调用,它是
仅在设备中执行。__global__ 函数可以调用
来自主机,并在设备中执行。__host__
函数在主机上运行,从主机调用。如果他们将函数命名为作用域__kernel__,就无法按照上面的分隔方式来区分它们。
这里的__global__ 表示“在主机和设备之间共享的空间中”,在这些术语中表示“它们之间的全局区域”。
【讨论】:
__global__ 函数应该可以从主机和设备调用。
mandelbrot_block_k 函数:developer.nvidia.com/blog/introduction-cuda-dynamic-parallelism
__kernel 而不是 __global__ ,正如您所建议的那样。
__global__ 已经在 Cuda 5.0 中使用。也许,从一开始就计划了该功能。