79 lines
2.4 KiB
Plaintext
79 lines
2.4 KiB
Plaintext
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
|
|
|
|
* <<spirvenv-capabilities-table-cooperativeMatrix,CooperativeMatrixNV>>
|
|
|
|
=== 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
|