1#version 450 core 2#extension GL_KHR_memory_scope_semantics : enable 3#extension GL_NV_cooperative_vector : enable 4#extension GL_EXT_shader_explicit_arithmetic_types : enable 5#extension GL_EXT_buffer_reference : enable 6#extension GL_EXT_nonuniform_qualifier : enable 7 8layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; 9 10layout(set = 0, binding = 0) buffer MatrixBuf { 11 u64vec3 matrixData[]; 12} matrixBuf; 13 14layout(set = 0, binding = 0) buffer MatrixBuf2 { 15 coherent float16_t matrixData[]; 16} matrixBuf2; 17 18layout(set = 0, binding = 0) coherent buffer MatrixBuf3 { 19 volatile float32_t matrixData[]; 20} matrixBuf3; 21 22layout(set = 0, binding = 0, buffer_reference) buffer MatrixBuf4 { 23 coherent float16_t matrixData[]; 24}; 25 26 27shared uint32_t matrixShmem[100]; 28 29 30void main() 31{ 32 coopvecNV<float, 5> v; 33 34 coopVecLoadNV(v, matrixBuf.matrixData, 128); 35 coopVecStoreNV(v, matrixBuf.matrixData, 144); 36 37 coopVecLoadNV(v, matrixBuf2.matrixData, 128); 38 coopVecStoreNV(v, matrixBuf2.matrixData, 144); 39 40 coopVecLoadNV(v, matrixBuf3.matrixData, 128); 41 coopVecStoreNV(v, matrixBuf3.matrixData, 144); 42 43 MatrixBuf4 matrixBuf4; 44 45 coopVecLoadNV(v, matrixBuf4.matrixData, 128); 46 coopVecStoreNV(v, matrixBuf4.matrixData, 144); 47 48 coopVecLoadNV(v, matrixShmem, 128); 49 coopVecStoreNV(v, matrixShmem, 144); 50} 51