• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 provides API support for
13    {GLSLregistry}/nv/GLSL_NV_cooperative_matrix.txt[`GL_NV_cooperative_matrix`]
14*Contributors*::
15  - Jeff Bolz, NVIDIA
16  - Markus Tavenrath, NVIDIA
17  - Daniel Koch, NVIDIA
18
19=== Description
20
21This extension adds support for using cooperative matrix types in SPIR-V.
22Cooperative matrix types are medium-sized matrices that are primarily
23supported in compute shaders, where the storage for the matrix is spread
24across all invocations in some scope (usually a subgroup) and those
25invocations cooperate to efficiently perform matrix multiplies.
26
27Cooperative matrix types are defined by the
28{spirv}/NV/SPV_NV_cooperative_matrix.html[`SPV_NV_cooperative_matrix`]
29SPIR-V extension and can be used with the
30{GLSLregistry}/nv/GLSL_NV_cooperative_matrix.txt[`GL_NV_cooperative_matrix`]
31GLSL extension.
32
33This extension includes support for enumerating the matrix types and
34dimensions that are supported by the implementation.
35
36include::{generated}/interfaces/VK_NV_cooperative_matrix.adoc[]
37
38=== New SPIR-V Capabilities
39
40  * <<spirvenv-capabilities-table-CooperativeMatrixNV,
41    code:CooperativeMatrixNV>>
42
43=== Issues
44
45(1) What matrix properties will be supported in practice?
46
47*RESOLVED*: In NVIDIA's initial implementation, we will support:
48
49  * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope =
50    Subgroup
51  * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x8 scope =
52    Subgroup
53  * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x16 scope =
54    Subgroup
55  * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x8 scope =
56    Subgroup
57
58=== Version History
59
60  * Revision 1, 2019-02-05 (Jeff Bolz)
61  ** Internal revisions
62