在OpenCL中,每当我想操作子组内存时,我可以使用__local
。类似地,CUDA有__shared__
关键字。Vulkan有类似的东西吗?在子组教程中我看不到任何东西https://www.khronos.org/blog/vulkan-subgroup-tutorial虽然我确实看到他们提到了共享内存,但是他们从来没有真正解释如何初始化它。
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];
}