Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_NV_cooperative_matrix - device extension
VK_NV_cooperative_matrix
- Name String
VK_NV_cooperative_matrix
- Extension Type
- Device extension
- Registered Extension Number
- 250
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2
- Contact
Other Extension Metadata
- Last Modified Date
- 2019-02-05
- Interactions and External Dependencies
- This extension requires SPV_NV_cooperative_matrix
- This extension provides API support for GL_NV_cooperative_matrix
- Contributors
- Jeff Bolz, NVIDIA
- Markus Tavenrath, NVIDIA
- Daniel Koch, NVIDIA
Description
This extension adds support for using cooperative matrix types in SPIR-V. Cooperative matrix types are medium-sized matrices that are primarily supported in compute shaders, where the storage for the matrix is spread across all invocations in some scope (usually a subgroup) and those invocations cooperate to efficiently perform matrix multiplies.
Cooperative matrix types are defined by the SPV_NV_cooperative_matrix SPIR-V extension and can be used with the GL_NV_cooperative_matrix GLSL extension.
This extension includes support for enumerating the matrix types and dimensions that are supported by the implementation.
New Commands
New Structures
Extending
PhysicalDeviceFeatures2
,DeviceCreateInfo
:Extending
PhysicalDeviceProperties2
:
New Enums
New Enum Constants
NV_COOPERATIVE_MATRIX_SPEC_VERSION
Extending
ComponentTypeKHR
:Extending
ScopeKHR
:Extending
StructureType
:
New SPIR-V Capabilities
Issues
- What matrix properties will be supported in practice?
RESOLVED: In NVIDIA’s initial implementation, we will support:
- AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope = Subgroup
- AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x8 scope = Subgroup
- AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x16 scope = Subgroup
- AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x8 scope = Subgroup
Version History
Revision 1, 2019-02-05 (Jeff Bolz)
- Internal revisions
See Also
ComponentTypeNV
, CooperativeMatrixPropertiesNV
,
PhysicalDeviceCooperativeMatrixFeaturesNV
,
PhysicalDeviceCooperativeMatrixPropertiesNV
, ScopeNV
,
getPhysicalDeviceCooperativeMatrixPropertiesNV
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
- getPhysicalDeviceCooperativeMatrixPropertiesNV :: forall io. MonadIO io => PhysicalDevice -> io (Result, "properties" ::: Vector CooperativeMatrixPropertiesNV)
- pattern SCOPE_DEVICE_NV :: ScopeKHR
- pattern SCOPE_WORKGROUP_NV :: ScopeKHR
- pattern SCOPE_SUBGROUP_NV :: ScopeKHR
- pattern SCOPE_QUEUE_FAMILY_NV :: ScopeKHR
- pattern COMPONENT_TYPE_FLOAT16_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_FLOAT32_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_FLOAT64_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT8_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT16_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT32_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT64_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT8_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT16_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT32_NV :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT64_NV :: ComponentTypeKHR
- data PhysicalDeviceCooperativeMatrixFeaturesNV = PhysicalDeviceCooperativeMatrixFeaturesNV {}
- data PhysicalDeviceCooperativeMatrixPropertiesNV = PhysicalDeviceCooperativeMatrixPropertiesNV {}
- data CooperativeMatrixPropertiesNV = CooperativeMatrixPropertiesNV {
- mSize :: Word32
- nSize :: Word32
- kSize :: Word32
- aType :: ComponentTypeNV
- bType :: ComponentTypeNV
- cType :: ComponentTypeNV
- dType :: ComponentTypeNV
- scope :: ScopeNV
- type ScopeNV = ScopeKHR
- type ComponentTypeNV = ComponentTypeKHR
- type NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1
- pattern NV_COOPERATIVE_MATRIX_SPEC_VERSION :: forall a. Integral a => a
- type NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix"
- pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype ScopeKHR where
- ScopeKHR Int32
- pattern SCOPE_DEVICE_KHR :: ScopeKHR
- pattern SCOPE_WORKGROUP_KHR :: ScopeKHR
- pattern SCOPE_SUBGROUP_KHR :: ScopeKHR
- pattern SCOPE_QUEUE_FAMILY_KHR :: ScopeKHR
- newtype ComponentTypeKHR where
- ComponentTypeKHR Int32
- pattern COMPONENT_TYPE_FLOAT16_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_FLOAT32_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_FLOAT64_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT8_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT16_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT32_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_SINT64_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT8_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT16_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT32_KHR :: ComponentTypeKHR
- pattern COMPONENT_TYPE_UINT64_KHR :: ComponentTypeKHR
Documentation
getPhysicalDeviceCooperativeMatrixPropertiesNV Source #
:: forall io. MonadIO io | |
=> PhysicalDevice |
|
-> io (Result, "properties" ::: Vector CooperativeMatrixPropertiesNV) |
vkGetPhysicalDeviceCooperativeMatrixPropertiesNV - Returns properties describing what cooperative matrix types are supported
Description
If pProperties
is NULL
, then the number of cooperative matrix
properties available is returned in pPropertyCount
. Otherwise,
pPropertyCount
must point to a variable set by the user 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 of
cooperative matrix properties available, at most pPropertyCount
structures will be written, and INCOMPLETE
will be returned instead of SUCCESS
, to
indicate that not all the available cooperative matrix properties were
returned.
Valid Usage (Implicit)
-
physicalDevice
must be a validPhysicalDevice
handle
-
pPropertyCount
must be a valid pointer to auint32_t
value -
If the value referenced by
pPropertyCount
is not0
, andpProperties
is notNULL
,pProperties
must be a valid pointer to an array ofpPropertyCount
CooperativeMatrixPropertiesNV
structures
Return Codes
See Also
VK_NV_cooperative_matrix,
CooperativeMatrixPropertiesNV
, PhysicalDevice
pattern SCOPE_DEVICE_NV :: ScopeKHR Source #
pattern SCOPE_WORKGROUP_NV :: ScopeKHR Source #
pattern SCOPE_SUBGROUP_NV :: ScopeKHR Source #
pattern SCOPE_QUEUE_FAMILY_NV :: ScopeKHR Source #
pattern COMPONENT_TYPE_FLOAT16_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_FLOAT32_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_FLOAT64_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_SINT8_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_SINT16_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_SINT32_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_SINT64_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_UINT8_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_UINT16_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_UINT32_NV :: ComponentTypeKHR Source #
pattern COMPONENT_TYPE_UINT64_NV :: ComponentTypeKHR Source #
data PhysicalDeviceCooperativeMatrixFeaturesNV Source #
VkPhysicalDeviceCooperativeMatrixFeaturesNV - Structure describing cooperative matrix features that can be supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceCooperativeMatrixFeaturesNV
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. PhysicalDeviceCooperativeMatrixFeaturesNV
can also be
used in the pNext
chain of DeviceCreateInfo
to
selectively enable these features.
Valid Usage (Implicit)
See Also
Instances
data PhysicalDeviceCooperativeMatrixPropertiesNV Source #
VkPhysicalDeviceCooperativeMatrixPropertiesNV - Structure describing cooperative matrix properties supported by an implementation
Description
If the PhysicalDeviceCooperativeMatrixPropertiesNV
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
PhysicalDeviceCooperativeMatrixPropertiesNV | |
|
Instances
data CooperativeMatrixPropertiesNV Source #
VkCooperativeMatrixPropertiesNV - Structure specifying cooperative matrix properties
Description
If some types are preferred over other types (e.g. for performance),
they should appear earlier in the list enumerated by
getPhysicalDeviceCooperativeMatrixPropertiesNV
.
At least one entry in the list must have power of two values for all
of MSize
, KSize
, and NSize
.
Valid Usage (Implicit)
See Also
VK_NV_cooperative_matrix,
ComponentTypeNV
, ScopeNV
,
StructureType
,
getPhysicalDeviceCooperativeMatrixPropertiesNV
CooperativeMatrixPropertiesNV | |
|
Instances
type ComponentTypeNV = ComponentTypeKHR Source #
type NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 Source #
pattern NV_COOPERATIVE_MATRIX_SPEC_VERSION :: forall a. Integral a => a Source #
type NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" Source #
pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
VkScopeKHR - Specify SPIR-V scope
Description
All enum values match the corresponding SPIR-V value.
See Also
pattern SCOPE_DEVICE_KHR :: ScopeKHR |
|
pattern SCOPE_WORKGROUP_KHR :: ScopeKHR |
|
pattern SCOPE_SUBGROUP_KHR :: ScopeKHR |
|
pattern SCOPE_QUEUE_FAMILY_KHR :: ScopeKHR |
|
Instances
newtype ComponentTypeKHR Source #
VkComponentTypeKHR - Specify SPIR-V cooperative matrix component type