--- layout: stdlib-reference --- # coopVecMatMul ## Description Multiply a cooperative vector with a matrix. ## Signature
/// Requires Capability Set 1:
CoopVec<T, M> coopVecMatMul<T, M:int, K:int, U>(
    CoopVec<U, K> input,
    CoopVecComponentType inputInterpretation,
    RWByteAddressBuffer matrix,
    int matrixOffset,
    CoopVecComponentType matrixInterpretation,
    CoopVecMatrixLayout memoryLayout,
    bool transpose,
    uint matrixStride)
    where T : __BuiltinArithmeticType
    where U : __BuiltinArithmeticType;

/// Requires Capability Set 1:
CoopVec<T, M> coopVecMatMul<T, M:int, K:int, U>(
    CoopVec<U, K> input,
    CoopVecComponentType inputInterpretation,
    ByteAddressBuffer matrix,
    int matrixOffset,
    CoopVecComponentType matrixInterpretation,
    CoopVecMatrixLayout memoryLayout,
    bool transpose,
    uint matrixStride)
    where T : __BuiltinArithmeticType
    where U : __BuiltinArithmeticType;

/// Requires Capability Set 2:
CoopVec<T, M> coopVecMatMul<T, M:int, K:int, U, IgnoredBufferElementType>(
    CoopVec<U, K> input,
    CoopVecComponentType inputInterpretation,
    RWStructuredBuffer<IgnoredBufferElementType, DefaultDataLayout> matrix,
    int matrixOffset,
    CoopVecComponentType matrixInterpretation,
    CoopVecMatrixLayout memoryLayout,
    bool transpose,
    uint matrixStride)
    where T : __BuiltinArithmeticType
    where U : __BuiltinArithmeticType;

/// Requires Capability Set 2:
CoopVec<T, M> coopVecMatMul<T, M:int, K:int, U, IgnoredBufferElementType>(
    CoopVec<U, K> input,
    CoopVecComponentType inputInterpretation,
    StructuredBuffer<IgnoredBufferElementType, DefaultDataLayout> matrix,
    int matrixOffset,
    CoopVecComponentType matrixInterpretation,
    CoopVecMatrixLayout memoryLayout,
    bool transpose,
    uint matrixStride)
    where T : __BuiltinArithmeticType
    where U : __BuiltinArithmeticType;

## Generic Parameters #### T: [\_\_BuiltinArithmeticType](../interfaces/0_builtinarithmetictype-029j/index.html) #### M : int #### K : int #### U: [\_\_BuiltinArithmeticType](../interfaces/0_builtinarithmetictype-029j/index.html) #### IgnoredBufferElementType ## Parameters #### input : [CoopVec](../types/coopvec-04/index.html)\ The input cooperative vector to multiply with the matrix. #### inputInterpretation : [CoopVecComponentType](../types/coopveccomponenttype-047g/index.html) Specifies how to interpret the values in the input vector (e.g. as 8-bit integers, 16-bit floats, etc). #### matrix : [RWByteAddressBuffer](../types/rwbyteaddressbuffer-0126d/index.html) The matrix to multiply with the input vector. #### matrixOffset : int Byte offset into the matrix buffer. #### matrixInterpretation : [CoopVecComponentType](../types/coopveccomponenttype-047g/index.html) Specifies how to interpret the values in the matrix (e.g. as 8-bit integers, 16-bit floats, etc). #### memoryLayout : [CoopVecMatrixLayout](../types/coopvecmatrixlayout-047d/index.html) Specifies the memory layout of the matrix (row-major or column-major). #### transpose : bool Whether to transpose the matrix before multiplication. #### matrixStride : uint The stride in bytes between rows/columns of the matrix. #### matrix : [ByteAddressBuffer](../types/byteaddressbuffer-04b/index.html) The matrix to multiply with the input vector. #### matrix : [RWStructuredBuffer](../types/rwstructuredbuffer-012c/index.html)\ The matrix to multiply with the input vector. #### matrix : [StructuredBuffer](../types/structuredbuffer-0a/index.html)\ The matrix to multiply with the input vector. ## Return value A new cooperative vector containing the result of the matrix multiplication. ## Availability and Requirements ### Capability Set 1 Defined for the following targets: #### hlsl Available in all stages. Requires capability: `hlsl_coopvec_poc`. #### cpp Available in all stages. #### cuda Available in all stages. #### spirv Available in all stages. Requires capability: `spvCooperativeVectorNV`. ### Capability Set 2 Defined for the following targets: #### spirv Available in all stages. Requires capability: `spvCooperativeVectorNV`.