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 requires 13 {spirv}/NV/SPV_NV_cooperative_matrix.html[`SPV_NV_cooperative_matrix`] 14 - This extension provides API support for 15 {GLSLregistry}/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 32{GLSLregistry}/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.adoc[] 39 40=== New SPIR-V Capabilities 41 42 * <<spirvenv-capabilities-table-CooperativeMatrixNV, 43 code:CooperativeMatrixNV>> 44 45=== Issues 46 47(1) What matrix properties will be supported in practice? 48 49*RESOLVED*: In NVIDIA's initial implementation, we will support: 50 51 * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope = 52 Subgroup 53 * AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x8 scope = 54 Subgroup 55 * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x16 scope = 56 Subgroup 57 * AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x8 scope = 58 Subgroup 59 60=== Version History 61 62 * Revision 1, 2019-02-05 (Jeff Bolz) 63 ** Internal revisions 64