VK_NV_cooperative_matrix
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 Commands
New Structures
- VkCooperativeMatrixPropertiesNV
- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
- Extending VkPhysicalDeviceProperties2:
New Enums
New Enum Constants
VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAMEVK_NV_COOPERATIVE_MATRIX_SPEC_VERSION- Extending VkComponentTypeKHR:
VK_COMPONENT_TYPE_FLOAT16_NVVK_COMPONENT_TYPE_FLOAT32_NVVK_COMPONENT_TYPE_FLOAT64_NVVK_COMPONENT_TYPE_SINT16_NVVK_COMPONENT_TYPE_SINT32_NVVK_COMPONENT_TYPE_SINT64_NVVK_COMPONENT_TYPE_SINT8_NVVK_COMPONENT_TYPE_UINT16_NVVK_COMPONENT_TYPE_UINT32_NVVK_COMPONENT_TYPE_UINT64_NVVK_COMPONENT_TYPE_UINT8_NV
- Extending VkScopeKHR:
VK_SCOPE_DEVICE_NVVK_SCOPE_QUEUE_FAMILY_NVVK_SCOPE_SUBGROUP_NVVK_SCOPE_WORKGROUP_NV
- Extending VkStructureType:
VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NVVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NVVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
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