coopVecOuterProductAccumulate

Description

Accumulate the outer product of two cooperative vectors into a matrix.

Signature

/// Requires Capability Set 1:
void coopVecOuterProductAccumulate<T, M:int, N:int>(
    CoopVec<T, M> a,
    CoopVec<T, N> b,
    RWByteAddressBuffer matrix,
    int matrixOffset,
    uint matrixStride,
    CoopVecMatrixLayout memoryLayout,
    CoopVecComponentType matrixInterpretation)
    where T : __BuiltinArithmeticType;

/// Requires Capability Set 2:
void coopVecOuterProductAccumulate<T, M:int, N:int, IgnoredBufferElementType>(
    CoopVec<T, M> a,
    CoopVec<T, N> b,
    RWStructuredBuffer<IgnoredBufferElementType, DefaultDataLayout> matrix,
    int matrixOffset,
    uint matrixStride,
    CoopVecMatrixLayout memoryLayout,
    CoopVecComponentType matrixInterpretation)
    where T : __BuiltinArithmeticType;

/// Requires Capability Set 2:
void coopVecOuterProductAccumulate<T, M:int, N:int, U, IgnoredBufferSize:int>(
    CoopVec<T, M> a,
    CoopVec<T, N> b,
    U[IgnoredBufferSize] matrix,
    int matrixOffset,
    uint matrixStride,
    CoopVecMatrixLayout memoryLayout,
    CoopVecComponentType matrixInterpretation)
    where T : __BuiltinArithmeticType
    where U : __BuiltinArithmeticType;

Generic Parameters

T: __BuiltinArithmeticType

M : int

N : int

IgnoredBufferElementType

U: __BuiltinArithmeticType

IgnoredBufferSize : int

Parameters

a : CoopVec<T, M>

The first cooperative vector.

b : CoopVec<T, N>

The second cooperative vector.

matrix : RWByteAddressBuffer

The matrix buffer to accumulate the result into.

matrixOffset : int

Byte offset into the matrix buffer.

matrixStride : uint

The stride between matrix rows/columns in bytes.

memoryLayout : CoopVecMatrixLayout

Specifies the memory layout of the matrix (row-major or column-major).

matrixInterpretation : CoopVecComponentType

Specifies how to interpret the values in the matrix.

matrix : RWStructuredBuffer<IgnoredBufferElementType, DefaultDataLayout>

The matrix buffer to accumulate the result into.

matrix : U [ IgnoredBufferSize ]

The matrix buffer to accumulate the result into.

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: spvCooperativeVectorTrainingNV.