include::meta/VK_NV_cooperative_matrix.txt[] *Last Modified Data*:: 2019-02-05 *Contributors*:: - Jeff Bolz, NVIDIA - Markus Tavenrath, NVIDIA - Daniel Koch, NVIDIA This extension adds support for using cooperative matrix types in SPIR-V. Cooperative matrix types are medium-sized matrices that are primarily supported in compute shaders, where the storage for the matrix is spread across all invocations in some scope (usually a subgroup) and those invocations cooperate to efficiently perform matrix multiplies. Cooperative matrix types are defined by the http://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_matrix.html[+SPV_NV_cooperative_matrix+] SPIR-V extension and can be used with the https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_cooperative_matrix.txt[+GL_NV_cooperative_matrix+] GLSL extension. This extension includes support for enumerating the matrix types and dimensions that are supported by the implementation. === New Object Types None. === New Enum Constants * Extending elink:VkStructureType: ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV ** ename:VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV === New Enums * elink:VkScopeNV * elink:VkComponentTypeNV === New Structures * Extending slink:VkPhysicalDeviceFeatures2: ** slink:VkPhysicalDeviceCooperativeMatrixFeaturesNV * Extending slink:VkPhysicalDeviceProperties2: ** slink:VkPhysicalDeviceCooperativeMatrixPropertiesNV * slink:VkCooperativeMatrixPropertiesNV === New Functions * flink:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV === New SPIR-V Capabilities * <> === Issues (1) What matrix properties will be supported in practice? RESOLVED: In NVIDIA's initial implementation, we will support: * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope = Subgroup * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x8 scope = Subgroup * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x16 scope = Subgroup * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x8 scope = Subgroup === Version History * Revision 1, 2019-02-05 (Jeff Bolz) - Internal revisions