Vulkan 是否支持本地子组内存共享和操作?
Does Vulkan support local subgroup memory sharing and manipulation?
在 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];
}
在 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];
}