Contact
- 
Jeff Bolz [GitHub]jeffbolznv 
Other Extension Metadata
- Last Modified Date
- 
2019-02-05 
- Interactions and External Dependencies
- 
- 
This extension provides API support for GL_NV_cooperative_matrix
 
- 
- Contributors
- 
- 
Jeff Bolz, NVIDIA 
- 
Markus Tavenrath, NVIDIA 
- 
Daniel Koch, NVIDIA 
 
- 
Description
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
SPV_NV_cooperative_matrix
SPIR-V extension and can be used with the
GL_NV_cooperative_matrix
GLSL extension.
This extension includes support for enumerating the matrix types and dimensions that are supported by the implementation.
New Enum Constants
- 
VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME
- 
VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION
- 
Extending VkComponentTypeKHR: - 
VK_COMPONENT_TYPE_FLOAT16_NV
- 
VK_COMPONENT_TYPE_FLOAT32_NV
- 
VK_COMPONENT_TYPE_FLOAT64_NV
- 
VK_COMPONENT_TYPE_SINT16_NV
- 
VK_COMPONENT_TYPE_SINT32_NV
- 
VK_COMPONENT_TYPE_SINT64_NV
- 
VK_COMPONENT_TYPE_SINT8_NV
- 
VK_COMPONENT_TYPE_UINT16_NV
- 
VK_COMPONENT_TYPE_UINT32_NV
- 
VK_COMPONENT_TYPE_UINT64_NV
- 
VK_COMPONENT_TYPE_UINT8_NV
 
- 
- 
Extending VkScopeKHR: - 
VK_SCOPE_DEVICE_NV
- 
VK_SCOPE_QUEUE_FAMILY_NV
- 
VK_SCOPE_SUBGROUP_NV
- 
VK_SCOPE_WORKGROUP_NV
 
- 
- 
Extending VkStructureType: - 
VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
- 
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
- 
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
 
- 
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 
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.