• 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.txt[]
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    https://github.com/KhronosGroup/GLSL/blob/master/extensions/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
32https://github.com/KhronosGroup/GLSL/blob/master/extensions/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.txt[]
39
40=== New SPIR-V Capabilities
41
42  * <<spirvenv-capabilities-table-CooperativeMatrixNV,CooperativeMatrixNV>>
43
44=== Issues
45
46(1) What matrix properties will be supported in practice?
47
48*RESOLVED*: In NVIDIA's initial implementation, we will support:
49
50    * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope =
51      Subgroup
52    * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x8 scope =
53      Subgroup
54    * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x16 scope =
55      Subgroup
56    * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x8 scope =
57      Subgroup
58
59=== Version History
60
61  * Revision 1, 2019-02-05 (Jeff Bolz)
62    - Internal revisions
63