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