VkConvertCooperativeVectorMatrixInfoNV
Each VkConvertCooperativeVectorMatrixInfoNV structure describes a
request to convert the layout and type of a cooperative vector matrix.
The VkConvertCooperativeVectorMatrixInfoNV structure is defined as:
typedef struct VkConvertCooperativeVectorMatrixInfoNV {
VkStructureType sType;
const void* pNext;
size_t srcSize;
VkDeviceOrHostAddressConstKHR srcData;
size_t* pDstSize;
VkDeviceOrHostAddressKHR dstData;
VkComponentTypeKHR srcComponentType;
VkComponentTypeKHR dstComponentType;
uint32_t numRows;
uint32_t numColumns;
VkCooperativeVectorMatrixLayoutNV srcLayout;
size_t srcStride;
VkCooperativeVectorMatrixLayoutNV dstLayout;
size_t dstStride;
} VkConvertCooperativeVectorMatrixInfoNV;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.srcSizeis the length in bytes ofsrcData.srcDatais eitherNULLor a pointer to the source data in the source layout.pDstSizeis a pointer to an integer related to the number of bytes required or requested to convert.dstDatais eitherNULLor a pointer to the destination data in the destination layout.srcComponentTypeis the type of a source matrix element.dstComponentTypeis the type of a destination matrix element.numRowsis the number of rows in the matrix.numColumnsis the number of columns in the matrix.srcLayoutis the layout of the source matrix.srcStrideis the number of bytes between a consecutive row or column (depending onsrcLayout) of the source matrix, if it is row-major or column-major.dstLayoutis the layout the matrix is converted to.dstStrideis the number of bytes between a consecutive row or column (depending ondstLayout) of destination matrix, if it is row-major or column-major.
When called from vkCmdConvertCooperativeVectorMatrixNV, the
deviceAddress members of srcData and dstData are used.
When called from vkConvertCooperativeVectorMatrixNV, the
hostAddress members of srcData and dstData are used.
For each of the source and destination matrix, if the layout is not either
VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV or
VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV, then the
corresponding stride parameter is ignored.
The size of the destination is only a function of the destination layout information, and does not depend on the source layout information.
Conversion can be used to convert between
VK_COMPONENT_TYPE_FLOAT32_KHR or VK_COMPONENT_TYPE_FLOAT16_KHR
and any supported lower-precision floating-point type.
In this case, the conversion uses round-to-nearest-even rounding.
Valid Usage
VUID-VkConvertCooperativeVectorMatrixInfoNV-srcLayout-10077
If srcLayout is row-major or column-major, then srcStridemust be greater than the length of a row/column, and a multiple of the
element size
VUID-VkConvertCooperativeVectorMatrixInfoNV-dstLayout-10078
If dstLayout is row-major or column-major, then dstStridemust be greater than the length of a row/column, and a multiple of the
element size
VUID-VkConvertCooperativeVectorMatrixInfoNV-srcComponentType-10079
If srcComponentType is not a supported
VkCooperativeVectorPropertiesNV::matrixInterpretation value
as reported by vkGetPhysicalDeviceCooperativeVectorPropertiesNV,
then srcComponentType must be VK_COMPONENT_TYPE_FLOAT32_KHR
VUID-VkConvertCooperativeVectorMatrixInfoNV-dstComponentType-10080
If dstComponentType is not a supported
VkCooperativeVectorPropertiesNV::matrixInterpretation value
as reported by vkGetPhysicalDeviceCooperativeVectorPropertiesNV,
then dstComponentType must be VK_COMPONENT_TYPE_FLOAT32_KHR
VUID-VkConvertCooperativeVectorMatrixInfoNV-srcComponentType-10081
If srcComponentType and dstComponentType are not equal, then
one must be VK_COMPONENT_TYPE_FLOAT32_KHR or
VK_COMPONENT_TYPE_FLOAT16_KHR and the other must be a
lower-precision floating-point type
VUID-VkConvertCooperativeVectorMatrixInfoNV-dstComponentType-10082
If dstComponentType is VK_COMPONENT_TYPE_FLOAT_E4M3_NV or
VK_COMPONENT_TYPE_FLOAT_E5M2_NV, then dstLayout must be
VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV or
VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV
Valid Usage (Implicit)
VUID-VkConvertCooperativeVectorMatrixInfoNV-sType-sType
sType must be VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV
VUID-VkConvertCooperativeVectorMatrixInfoNV-pNext-pNext
pNext must be NULL
VUID-VkConvertCooperativeVectorMatrixInfoNV-srcData-parameter
srcData must be a valid VkDeviceOrHostAddressConstKHR union
VUID-VkConvertCooperativeVectorMatrixInfoNV-pDstSize-parameter
pDstSize must be a valid pointer to a size_t value
VUID-VkConvertCooperativeVectorMatrixInfoNV-dstData-parameter
dstData must be a valid VkDeviceOrHostAddressKHR union
VUID-VkConvertCooperativeVectorMatrixInfoNV-srcComponentType-parameter
srcComponentType must be a valid VkComponentTypeKHR value
VUID-VkConvertCooperativeVectorMatrixInfoNV-dstComponentType-parameter
dstComponentType must be a valid VkComponentTypeKHR value
VUID-VkConvertCooperativeVectorMatrixInfoNV-srcLayout-parameter
srcLayout must be a valid VkCooperativeVectorMatrixLayoutNV value
VUID-VkConvertCooperativeVectorMatrixInfoNV-dstLayout-parameter
dstLayout must be a valid VkCooperativeVectorMatrixLayoutNV value