1// Copyright (c) 2019-2020 NVIDIA Corporation
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5include::{generated}/meta/{refprefix}VK_NV_cooperative_matrix.adoc[]
6
7=== Other Extension Metadata
8
9*Last Modified Date*::
10    2019-02-05
11*Interactions and External Dependencies*::
12  - This extension requires
13    {spirv}/NV/SPV_NV_cooperative_matrix.html[`SPV_NV_cooperative_matrix`]
14  - This extension provides API support for
15    {GLSLregistry}/nv/GLSL_NV_cooperative_matrix.txt[`GL_NV_cooperative_matrix`]
16*Contributors*::
17  - Jeff Bolz, NVIDIA
18  - Markus Tavenrath, NVIDIA
19  - Daniel Koch, NVIDIA
20
21=== Description
22
23This extension adds support for using cooperative matrix types in SPIR-V.
24Cooperative matrix types are medium-sized matrices that are primarily
25supported in compute shaders, where the storage for the matrix is spread
26across all invocations in some scope (usually a subgroup) and those
27invocations cooperate to efficiently perform matrix multiplies.
28
29Cooperative matrix types are defined by the
30{spirv}/NV/SPV_NV_cooperative_matrix.html[`SPV_NV_cooperative_matrix`]
31SPIR-V extension and can be used with the
32{GLSLregistry}/nv/GLSL_NV_cooperative_matrix.txt[`GL_NV_cooperative_matrix`]
33GLSL extension.
34
35This extension includes support for enumerating the matrix types and
36dimensions that are supported by the implementation.
37
38include::{generated}/interfaces/VK_NV_cooperative_matrix.adoc[]
39
40=== New SPIR-V Capabilities
41
42  * <<spirvenv-capabilities-table-CooperativeMatrixNV,
43    code:CooperativeMatrixNV>>
44
45=== Issues
46
47(1) What matrix properties will be supported in practice?
48
49*RESOLVED*: In NVIDIA's initial implementation, we will support:
50
51  * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope =
52    Subgroup
53  * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x8 scope =
54    Subgroup
55  * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x16 scope =
56    Subgroup
57  * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x8 scope =
58    Subgroup
59
60=== Version History
61
62  * Revision 1, 2019-02-05 (Jeff Bolz)
63  ** Internal revisions
64