| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_NV_cooperative_matrix2
Description
Name
VK_NV_cooperative_matrix2 - device extension
VK_NV_cooperative_matrix2
- Name String
VK_NV_cooperative_matrix2
- Extension Type
- Device extension
- Registered Extension Number
- 594
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_cooperative_matrix
- SPIR-V Dependencies
- Contact
- Extension Proposal
- VK_NV_cooperative_matrix2
Other Extension Metadata
- Last Modified Date
- 2024-08-01
- Interactions and External Dependencies
- This extension provides API support for GLSL_NV_cooperative_matrix2
- Contributors
- Jeff Bolz, NVIDIA
- Karthik Vaidyanathan, NVIDIA
Description
This extension adds several new features building on the cooperative matrix types added in VK_KHR_cooperative_matrix. The goal is to add and accelerate features beyond just simple GEMM kernels, including adding support for type/use conversions, reductions, per-element operations, and tensor addressing, and also to improve usability and out-of-the-box performance by adding support for more flexible matrix sizes, and workgroup scope matrices with compiler-managed staging through shared memory.
The new functionality is defined by the SPV_NV_tensor_addressing and SPV_NV_cooperative_matrix2 SPIR-V extensions and can be used with the GLSL_NV_cooperative_matrix2 GLSL extension.
This extension includes support for enumerating the matrix types and dimensions that are supported by the implementation, and which specific features are supported.
New Commands
New Structures
Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:
New Enum Constants
New SPIR-V Capabilities
- CooperativeMatrixReductionsNV
- CooperativeMatrixConversionsNV
- CooperativeMatrixPerElementOperationsNV
- CooperativeMatrixTensorAddressingNV
- CooperativeMatrixBlockLoadsNV
Version History
Revision 1, 2024-08-01 (Jeff Bolz)
- Initial revision
See Also
No cross-references are available
Document Notes
For more information, see the Vulkan Specification.
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- getPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV :: MonadIO io => PhysicalDevice -> io (Result, "properties" ::: Vector CooperativeMatrixFlexibleDimensionsPropertiesNV)
- data PhysicalDeviceCooperativeMatrix2FeaturesNV = PhysicalDeviceCooperativeMatrix2FeaturesNV {}
- data PhysicalDeviceCooperativeMatrix2PropertiesNV = PhysicalDeviceCooperativeMatrix2PropertiesNV {}
- data CooperativeMatrixFlexibleDimensionsPropertiesNV = CooperativeMatrixFlexibleDimensionsPropertiesNV {}
- type NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1
- pattern NV_COOPERATIVE_MATRIX_2_SPEC_VERSION :: Integral a => a
- type NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2"
- pattern NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME :: (Eq a, IsString a) => a
- newtype ScopeKHR where
- ScopeKHR Int32
- pattern SCOPE_DEVICE_KHR :: ScopeKHR
- pattern SCOPE_QUEUE_FAMILY_KHR :: ScopeKHR
- pattern SCOPE_SUBGROUP_KHR :: ScopeKHR
- pattern SCOPE_WORKGROUP_KHR :: ScopeKHR
- newtype ComponentTypeKHR where
- ComponentTypeKHR Int32
- pattern COMPONENT_TYPE_BFLOAT16_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_FLOAT16_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_FLOAT32_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_FLOAT64_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_FLOAT8_E4M3_EXT :: ComponentTypeKHR
- pattern COMPONENT_TYPE_FLOAT8_E5M2_EXT :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT16_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT32_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT64_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT8_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT8_PACKED_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT16_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT32_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT64_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT8_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT8_PACKED_NV :: ComponentTypeKHR
Documentation
getPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV Source #
Arguments
| :: MonadIO io | |
| => PhysicalDevice |
|
| -> io (Result, "properties" ::: Vector CooperativeMatrixFlexibleDimensionsPropertiesNV) |
vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV - Returns properties describing what cooperative matrix types are supported
Description
If pProperties is NULL, then the number of flexible dimensions
properties available is returned in pPropertyCount. Otherwise,
pPropertyCount must point to a variable set by the application to
the number of elements in the pProperties array, and on return the
variable is overwritten with the number of structures actually written
to pProperties. If pPropertyCount is less than the number flexible
dimensions properties available, at most pPropertyCount structures
will be written, and INCOMPLETE will be
returned instead of SUCCESS, to indicate
that not all the available flexible dimensions properties were returned.
If the cooperativeMatrixFlexibleDimensions feature is not supported, the implementation must advertise zero properties.
Valid Usage (Implicit)
-
physicalDevicemust be a validPhysicalDevicehandle
-
pPropertyCountmust be a valid pointer to auint32_tvalue -
If the value referenced by
pPropertyCountis not0, andpPropertiesis notNULL,pPropertiesmust be a valid pointer to an array ofpPropertyCountCooperativeMatrixFlexibleDimensionsPropertiesNVstructures
Return Codes
See Also
VK_NV_cooperative_matrix2,
CooperativeMatrixFlexibleDimensionsPropertiesNV,
PhysicalDevice
data PhysicalDeviceCooperativeMatrix2FeaturesNV Source #
VkPhysicalDeviceCooperativeMatrix2FeaturesNV - Structure describing cooperative matrix features that can be supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceCooperativeMatrix2FeaturesNV structure is
included in the pNext chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2,
it is filled in to indicate whether each corresponding feature is
supported. If the application wishes to use a
Device with any features described by
PhysicalDeviceCooperativeMatrix2FeaturesNV, it must add an instance
of the structure, with the desired feature members set to
TRUE, to the pNext chain of
DeviceCreateInfo when creating the
Device.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceCooperativeMatrix2FeaturesNV | |
Fields
| |
Instances
data PhysicalDeviceCooperativeMatrix2PropertiesNV Source #
VkPhysicalDeviceCooperativeMatrix2PropertiesNV - Structure describing cooperative matrix properties supported by an implementation
Description
If the PhysicalDeviceCooperativeMatrix2PropertiesNV structure is
included in the pNext chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceCooperativeMatrix2PropertiesNV | |
Fields
| |
Instances
data CooperativeMatrixFlexibleDimensionsPropertiesNV Source #
VkCooperativeMatrixFlexibleDimensionsPropertiesNV - Structure specifying cooperative matrix properties
Description
Rather than explicitly enumerating a list of supported sizes,
CooperativeMatrixFlexibleDimensionsPropertiesNV 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
CooperativeMatrixFlexibleDimensionsPropertiesNV 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)
See Also
VK_NV_cooperative_matrix2,
Bool32,
ComponentTypeKHR,
ScopeKHR,
StructureType,
getPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV
Constructors
| CooperativeMatrixFlexibleDimensionsPropertiesNV | |
Fields
| |
Instances
type NV_COOPERATIVE_MATRIX_2_SPEC_VERSION = 1 Source #
pattern NV_COOPERATIVE_MATRIX_2_SPEC_VERSION :: Integral a => a Source #
type NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME = "VK_NV_cooperative_matrix2" Source #
pattern NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
VkScopeKHR - Specify SPIR-V scope
Description
SCOPE_DEVICE_KHRcorresponds to SPIR-VDevicescope.
SCOPE_WORKGROUP_KHRcorresponds to SPIR-VWorkgroupscope.SCOPE_SUBGROUP_KHRcorresponds to SPIR-VSubgroupscope.SCOPE_QUEUE_FAMILY_KHRcorresponds to SPIR-VQueueFamilyscope.
All enum values match the corresponding SPIR-V value.
See Also
VK_KHR_cooperative_matrix,
VK_NV_cooperative_matrix,
CooperativeMatrixFlexibleDimensionsPropertiesNV,
CooperativeMatrixPropertiesKHR,
CooperativeMatrixPropertiesNV
Bundled Patterns
| pattern SCOPE_DEVICE_KHR :: ScopeKHR | |
| pattern SCOPE_QUEUE_FAMILY_KHR :: ScopeKHR | |
| pattern SCOPE_SUBGROUP_KHR :: ScopeKHR | |
| pattern SCOPE_WORKGROUP_KHR :: ScopeKHR |
Instances
newtype ComponentTypeKHR Source #
VkComponentTypeKHR - Specify SPIR-V cooperative matrix component type
Description
COMPONENT_TYPE_FLOAT16_KHRcorresponds to SPIR-VOpTypeFloat16.
COMPONENT_TYPE_FLOAT32_KHRcorresponds to SPIR-VOpTypeFloat32.COMPONENT_TYPE_FLOAT64_KHRcorresponds to SPIR-VOpTypeFloat64.COMPONENT_TYPE_SINT8_KHRcorresponds to SPIR-VOpTypeInt8 0/1.COMPONENT_TYPE_SINT16_KHRcorresponds to SPIR-VOpTypeInt16 0/1.COMPONENT_TYPE_SINT32_KHRcorresponds to SPIR-VOpTypeInt32 0/1.COMPONENT_TYPE_SINT64_KHRcorresponds to SPIR-VOpTypeInt64 0/1.COMPONENT_TYPE_UINT8_KHRcorresponds to SPIR-VOpTypeInt8 0/1.COMPONENT_TYPE_UINT16_KHRcorresponds to SPIR-VOpTypeInt16 0/1.COMPONENT_TYPE_UINT32_KHRcorresponds to SPIR-VOpTypeInt32 0/1.COMPONENT_TYPE_UINT64_KHRcorresponds to SPIR-VOpTypeInt64 0/1.COMPONENT_TYPE_BFLOAT16_KHRcorresponds to SPIR-VOpTypeFloat16 BFloat16KHR.COMPONENT_TYPE_SINT8_PACKED_NVcorresponds to four 8-bit signed integers packed in a 32-bit unsigned integer.COMPONENT_TYPE_UINT8_PACKED_NVcorresponds to four 8-bit unsigned integers packed in a 32-bit unsigned integer.COMPONENT_TYPE_FLOAT_E4M3_NVcorresponds to a floating-point type with a sign bit in the most significant bit, followed by four exponent bits, followed by three mantissa bits.COMPONENT_TYPE_FLOAT_E5M2_NVcorresponds to a floating-point type with a sign bit in the most significant bit, followed by five exponent bits, followed by two mantissa bits.COMPONENT_TYPE_FLOAT8_E4M3_EXTcorresponds to SPIR-VOpTypeFloat8 Float8E4M3EXT.COMPONENT_TYPE_FLOAT8_E5M2_EXTcorresponds to SPIR-VOpTypeFloat8 Float8E5M2EXT.
See Also
VK_KHR_cooperative_matrix,
VK_NV_cooperative_matrix,
VK_NV_cooperative_vector,
ConvertCooperativeVectorMatrixInfoNV,
CooperativeMatrixFlexibleDimensionsPropertiesNV,
CooperativeMatrixPropertiesKHR,
CooperativeMatrixPropertiesNV,
CooperativeVectorPropertiesNV
Constructors
| ComponentTypeKHR Int32 |
Bundled Patterns
| pattern COMPONENT_TYPE_BFLOAT16_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_FLOAT16_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_FLOAT32_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_FLOAT64_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_FLOAT8_E4M3_EXT :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_FLOAT8_E5M2_EXT :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_SINT16_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_SINT32_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_SINT64_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_SINT8_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_SINT8_PACKED_NV :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_UINT16_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_UINT32_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_UINT64_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_UINT8_KHR :: ComponentTypeKHR | |
| pattern COMPONENT_TYPE_UINT8_PACKED_NV :: ComponentTypeKHR |