__ 在 OpenCL 内核中有什么意义?

Whats the point of __ in OpenCL kernels?

假设我有两个 OCL 内核:

__kernel void vdotprod(
 __global int* x,
 __global int* y,
 __global int* z,
 __global int* d,
 const int npoints)

kernel void vdotprod(
 global int* x,
 global int* y,
 global int* z,
 global int* d,
 const int npoints)

假设代码的所有其他方面都相同(包括主机代码和所有代码),__ 会影响什么吗? __ 的目的是什么?

双下划线前缀不会影响 OpenCL 程序的语义。

所有 OpenCL 特定关键字都可以选择使用双下划线前缀。使用此前缀完全取决于程序员的偏好。例如,有些人喜欢使用下划线,因为它强调 OpenCL 扩展标准 C99 语言的地方。为了简洁起见,其他人更愿意省略它们。