在 OpenCL 中,__local
只要我想操作子组内存,我就可以使用它。类比 CUDA 有__shared__
关键字。Vulkan 有类似的东西吗?我在子组教程https://www.khronos.org/blog/vulkan-subgroup-tutorial中看不到任何内容,
尽管我确实看到他们提到了共享内存,但他们从未真正解释过如何初始化它。
1 回答
0
Vulkan 支持shared
缓冲区。他们在这里有更好的描述
https://www.khronos.org/opengl/wiki/Compute_Shader#Shared_variables
使用示例可能如下所示
layout (local_size_x = 32) in;
layout(std430, set = 0, binding = 1) buffer SomeBuffer{
int some_ints[];
};
shared int[32] shared_ints;
void main(){
shared_ints[gl_LocalInvocationID.x] = some_ints[gl_GlobalInvocationID.x];
}
于 2021-08-22T16:29:10.417 回答