blob: 7cca129c240ef191ac69ee5b6997a681fd142f0a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
// Copyright (c) 2019-2020 NVIDIA Corporation
//
// SPDX-License-Identifier: CC-BY-4.0
include::{generated}/meta/{refprefix}VK_NV_cooperative_matrix.adoc[]
=== Other Extension Metadata
*Last Modified Date*::
2019-02-05
*Interactions and External Dependencies*::
- This extension provides API support for
{GLSLregistry}/nv/GLSL_NV_cooperative_matrix.txt[`GL_NV_cooperative_matrix`]
*Contributors*::
- Jeff Bolz, NVIDIA
- Markus Tavenrath, NVIDIA
- Daniel Koch, NVIDIA
=== Description
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
{spirv}/NV/SPV_NV_cooperative_matrix.html[`SPV_NV_cooperative_matrix`]
SPIR-V extension and can be used with the
{GLSLregistry}/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.
include::{generated}/interfaces/VK_NV_cooperative_matrix.adoc[]
=== New SPIR-V Capabilities
* <<spirvenv-capabilities-table-CooperativeMatrixNV,
code: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
|