__global__ 在 c 中函数声明的上下文中是啥意思?

Posted

技术标签:

【中文标题】__global__ 在 c 中函数声明的上下文中是啥意思?【英文标题】:what does __global__ mean in the context of a function declaration in c?__global__ 在 c 中函数声明的上下文中是什么意思? 【发布时间】:2021-11-23 07:25:22 【问题描述】:

我正在阅读一个 C 程序,其中函数声明如下:

__global__ void square(float *d_out, float *d_in);

__global__ 说明符是什么意思?

【问题讨论】:

上下文是什么?你从哪里读到这个的?是CUDA吗? 是的,它是 CUDA。我正在跟随 Udacity 编写一个简短的内核程序的教程。 应该是_global_ 还是__global__(两个不同的名字)? @JonathanLeffler 在一些互联网页面上首先_ 已被标记引擎吃掉。我在与 CUDA 相关的页面上看到过很多次 :) @marti 您应该在问题中添加所有上下文。我很幸运通过谷歌搜索并从一些提到它的课程中找到了一个幻灯片演示文稿。 【参考方案1】:

它不是标准的 C,只是一些扩展或#define

它看起来像 CUDA。

__global__函数在GPU上执行,可以从CPU或GPU调用。

调用__global__ 函数通常比__device__ 更昂贵。

如果是#define,使用-E (gcc) 或类似选项编译文件,看看这个宏是如何展开的。

【讨论】:

谢谢。 @JonathanLeffler,是的,它是一个双下划线 global。我发现它的目的是告诉 CUDA 编译器这是内核代码而不是 CPU 代码。 我会考虑删除“更贵”的行;调用内核和调用内核中的函数并不完全可比。

以上是关于__global__ 在 c 中函数声明的上下文中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我编写的 __global__ 函数中获取 cuFunction?

函数_全局变量声明可变参数关键字参数

C++_函数的定义_函数调用_值传递_函数常见的样式_函数声明(重要)_函数分文件编写---C++语言工作笔记022

作用域

在函数中修改全局变量的值,需要加global关键字

1.2. 上下文切换:__schedule()