| // Copyright (c) 2019-2020 NVIDIA Corporation |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_NV_cooperative_matrix.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2019-02-05 |
| *Interactions and External Dependencies*:: |
| - This extension requires |
| {spirv}/NV/SPV_NV_cooperative_matrix.html[`SPV_NV_cooperative_matrix`] |
| - This extension provides API support for |
| https://github.com/KhronosGroup/GLSL/blob/master/extensions/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 |
| https://github.com/KhronosGroup/GLSL/blob/master/extensions/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.txt[] |
| |
| === New SPIR-V Capabilities |
| |
| * <<spirvenv-capabilities-table-CooperativeMatrixNV,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 |