Structures

VkCooperativeMatrixFlexibleDimensionsPropertiesNV

Structure specifying cooperative matrix properties

The VkCooperativeMatrixFlexibleDimensionsPropertiesNV structure is defined as:

typedef struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV {
    VkStructureType sType;
    void* pNext;
    uint32_t MGranularity;
    uint32_t NGranularity;
    uint32_t KGranularity;
    VkComponentTypeKHR AType;
    VkComponentTypeKHR BType;
    VkComponentTypeKHR CType;
    VkComponentTypeKHR ResultType;
    VkBool32 saturatingAccumulation;
    VkScopeKHR scope;
    uint32_t workgroupInvocations;
} VkCooperativeMatrixFlexibleDimensionsPropertiesNV;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • MGranularity is the granularity of the number of rows in matrices A, C, and Result. The rows must be an integer multiple of this value.
  • KGranularity is the granularity of columns in matrix A and rows in matrix B. The columns/rows must be an integer multiple of this value.
  • NGranularity is the granularity of columns in matrices B, C, Result. The columns must be an integer multiple of this value.
  • AType is the component type of matrix A, of type VkComponentTypeKHR.
  • BType is the component type of matrix B, of type VkComponentTypeKHR.
  • CType is the component type of matrix C, of type VkComponentTypeKHR.
  • ResultType is the component type of matrix Result, of type VkComponentTypeKHR.
  • saturatingAccumulation indicates whether the SaturatingAccumulation operand to OpCooperativeMatrixMulAddKHRmust be present or not. If it is VK_TRUE, the SaturatingAccumulation operand must be present. If it is VK_FALSE, the SaturatingAccumulation operand must not be present.
  • scope is the scope of all the matrix types, of type VkScopeKHR.
  • workgroupInvocations is the number of invocations in the local workgroup when this combination of values is supported.

Rather than explicitly enumerating a list of supported sizes, VkCooperativeMatrixFlexibleDimensionsPropertiesNV advertises size granularities, where the matrix must be a multiple of the advertised size. The M and K granularities apply to rows and columns of matrices with Use of MatrixA, K, and N apply to rows and columns of matrices with Use of MatrixB, M, and N apply to rows and columns of matrices with Use of MatrixAccumulator.

For a given type combination, if multiple workgroup sizes are supported there may be multiple VkCooperativeMatrixFlexibleDimensionsPropertiesNV structures with different granularities.

All granularity values must be powers of two.

Different A/B types may require different granularities but share the same accumulator type. In such a case, the supported granularity for a matrix with the accumulator type would be the smallest advertised granularity.

Valid Usage (Implicit)

VUID-VkCooperativeMatrixFlexibleDimensionsPropertiesNV-sType-sType

sType must be VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV