coopVecMatMulAdd

Description

Multiply a cooperative vector with a matrix and add a bias vector.

Signature

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

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

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

/// Requires Capability Set 2:
CoopVec<T, M> coopVecMatMulAdd<T, M:int, K:int, U, IgnoredBufferElementType>(
    CoopVec<U, K> input,
    CoopVecComponentType inputInterpretation,
    StructuredBuffer<IgnoredBufferElementType, DefaultDataLayout> matrix,
    int matrixOffset,
    CoopVecComponentType matrixInterpretation,
    StructuredBuffer<IgnoredBufferElementType, DefaultDataLayout> bias,
    int biasOffset,
    CoopVecComponentType biasInterpretation,
    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.

matrix : RWByteAddressBuffer

The matrix buffer to multiply with.

matrixOffset : int

Byte offset into the matrix buffer.

matrixInterpretation : CoopVecComponentType

Specifies how to interpret the values in the matrix.

bias : RWByteAddressBuffer

The bias buffer to add after multiplication.

biasOffset : int

Byte offset into the bias buffer.

biasInterpretation : CoopVecComponentType

Specifies how to interpret the values in the bias vector.

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 between matrix rows/columns in bytes.

matrix : ByteAddressBuffer

The matrix buffer to multiply with.

bias : ByteAddressBuffer

The bias buffer to add after multiplication.

matrix : RWStructuredBuffer<IgnoredBufferElementType, DefaultDataLayout>

The matrix buffer to multiply with.

bias : RWStructuredBuffer<IgnoredBufferElementType, DefaultDataLayout>

The bias buffer to add after multiplication.

matrix : StructuredBuffer<IgnoredBufferElementType, DefaultDataLayout>

The matrix buffer to multiply with.

bias : StructuredBuffer<IgnoredBufferElementType, DefaultDataLayout>

The bias buffer to add after multiplication.

Return value

A new cooperative vector containing the result of the matrix multiplication plus bias.

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.

Requires capability: optix_coopvec.

spirv

Available in all stages.

Requires capability: spvCooperativeVectorNV.

Capability Set 2

Defined for the following targets:

spirv

Available in all stages.

Requires capability: spvCooperativeVectorNV.