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

M : int

K : int

U: __BuiltinArithmeticType

IgnoredBufferElementType

Parameters

input : CoopVec<U, K>

The input cooperative vector to multiply with the matrix.

inputInterpretation : CoopVecComponentType

Specifies how to interpret the values in the input vector (e.g. as 8-bit integers, 16-bit floats, etc).

matrix : RWByteAddressBuffer

The matrix to multiply with the input vector.

matrixOffset : int

Byte offset into the matrix buffer.

matrixInterpretation : CoopVecComponentType

Specifies how to interpret the values in the matrix (e.g. as 8-bit integers, 16-bit floats, etc).

memoryLayout : CoopVecMatrixLayout

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

The matrix to multiply with the input vector.

matrix : RWStructuredBuffer<IgnoredBufferElementType, DefaultDataLayout>

The matrix to multiply with the input vector.

matrix : StructuredBuffer<IgnoredBufferElementType, DefaultDataLayout>

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.