Поддерживает ли Vulkan совместное использование памяти и манипулирование локальной подгруппой?

В OpenCL я мог бы использовать __localвсякий раз, когда я хотел манипулировать памятью подгруппы. Аналогично CUDA имеет __shared__ключевое слово. Есть ли у Vulkan что-то подобное? Я ничего не вижу в руководстве по подгруппе https://www.khronos.org/blog/vulkan-subgroup-tutorial, хотя я вижу, что они упоминают общую память, но никогда не объясняют, как ее инициализировать.

1 ответ

Вулкан поддерживает 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];
}

Другие вопросы по тегам