#version 450 // The execution structure layout (local_size_x = 1) in; // The buffers are provided via the tensors layout(binding = 0) buffer bufA { float a[]; }; layout(binding = 1) buffer bufB { float b[]; }; layout(binding = 2) buffer bufOut { float o[]; }; void main() { uint index = gl_GlobalInvocationID.x; o[index] = a[index] * b[index]; }