/ appendices / VK_NV_cooperative_matrix.txt
VK_NV_cooperative_matrix.txt
1 include::meta/VK_NV_cooperative_matrix.txt[] 2 3 *Last Modified Data*:: 4 2019-02-05 5 *Contributors*:: 6 - Jeff Bolz, NVIDIA 7 - Markus Tavenrath, NVIDIA 8 - Daniel Koch, NVIDIA 9 10 This extension adds support for using cooperative matrix types in SPIR-V. 11 Cooperative matrix types are medium-sized matrices that are primarily 12 supported in compute shaders, where the storage for the matrix is spread 13 across all invocations in some scope (usually a subgroup) and those 14 invocations cooperate to efficiently perform matrix multiplies. 15 16 Cooperative matrix types are defined by the 17 http://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_matrix.html[+SPV_NV_cooperative_matrix+] 18 SPIR-V extension and can be used with the 19 https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_cooperative_matrix.txt[+GL_NV_cooperative_matrix+] 20 GLSL extension. 21 22 This extension includes support for enumerating the matrix types and 23 dimensions that are supported by the implementation. 24 25 === New Object Types 26 27 None. 28 29 === New Enum Constants 30 31 * Extending elink:VkStructureType: 32 33 ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV 34 ** ename:VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV 35 ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV 36 37 === New Enums 38 39 * elink:VkScopeNV 40 * elink:VkComponentTypeNV 41 42 === New Structures 43 44 * Extending slink:VkPhysicalDeviceFeatures2: 45 ** slink:VkPhysicalDeviceCooperativeMatrixFeaturesNV 46 47 * Extending slink:VkPhysicalDeviceProperties2: 48 ** slink:VkPhysicalDeviceCooperativeMatrixPropertiesNV 49 50 * slink:VkCooperativeMatrixPropertiesNV 51 52 === New Functions 53 54 * flink:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV 55 56 === New SPIR-V Capabilities 57 58 * <<spirvenv-capabilities-table-cooperativeMatrix,CooperativeMatrixNV>> 59 60 === Issues 61 62 (1) What matrix properties will be supported in practice? 63 64 RESOLVED: In NVIDIA's initial implementation, we will support: 65 66 * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope = 67 Subgroup 68 * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x8 scope = 69 Subgroup 70 * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x16 scope = 71 Subgroup 72 * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x8 scope = 73 Subgroup 74 75 === Version History 76 77 * Revision 1, 2019-02-05 (Jeff Bolz) 78 - Internal revisions