yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
e2ab21f2
main
1#version 450 core 2#extension GL_KHR_memory_scope_semantics : enable 3#extension GL_KHR_cooperative_matrix : enable 4#extension GL_NV_cooperative_vector : enable 5#extension GL_EXT_shader_explicit_arithmetic_types : enable 6#extension GL_EXT_buffer_reference : enable 7#extension GL_EXT_shader_64bit_indexing : enable 8 9#pragma shader_64bit_indexing 10 11layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; 12 13layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { 14 float x[]; 15} block; 16 17void main() 18{ 19 uint64_t element = 0; 20 coopmat<float16_t, gl_ScopeSubgroup, 16, 16, gl_MatrixUseA> m; 21 coopMatLoad(m, block.x, element, 128, gl_CooperativeMatrixLayoutRowMajor); 22 coopMatStore(m, block.x, element, 128, gl_CooperativeMatrixLayoutRowMajor); 23 24 coopvecNV<float16_t, 2> vec; 25 coopVecMatMulAddNV(vec, vec, 0, block.x, element, 0, block.x, element, 0, 2, 2, 0, false, 0); 26 coopVecMatMulNV(vec, vec, 0, block.x, element, 0, 2, 2, 0, false, 0); 27 coopVecLoadNV(vec, block.x, element); 28 coopVecStoreNV(vec, block.x, element); 29 coopVecOuterProductAccumulateNV(vec, vec, block.x, element, 0, 0, 0); 30 coopVecReduceSumAccumulateNV(vec, block.x, element); 31 32 float y = block.x[element]; 33 int32_t len = block.x.length(); 34 int64_t len64 = block.x.length64(); 35}