0

在 OpenCL 中,__local只要我想操作子组内存,我就可以使用它。类比 CUDA 有__shared__关键字。Vulkan 有类似的东西吗?我在子组教程https://www.khronos.org/blog/vulkan-subgroup-tutorial中看不到任何内容, 尽管我确实看到他们提到了共享内存,但他们从未真正解释过如何初始化它。

4

1 回答 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 回答