/ 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