Safe Haskell | None |
---|---|
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
- Extension and Version Dependencies
- Requires Vulkan 1.0
- Requires
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
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)
- 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
- newtype ScopeNV where
- ScopeNV Int32
- pattern SCOPE_DEVICE_NV :: ScopeNV
- pattern SCOPE_WORKGROUP_NV :: ScopeNV
- pattern SCOPE_SUBGROUP_NV :: ScopeNV
- pattern SCOPE_QUEUE_FAMILY_NV :: ScopeNV
- newtype ComponentTypeNV where
- ComponentTypeNV Int32
- pattern COMPONENT_TYPE_FLOAT16_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_FLOAT32_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_FLOAT64_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_SINT8_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_SINT16_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_SINT32_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_SINT64_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_UINT8_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_UINT16_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_UINT32_NV :: ComponentTypeNV
- pattern COMPONENT_TYPE_UINT64_NV :: ComponentTypeNV
- 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
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. If pPropertyCount
is smaller than the
number of cooperative matrix properties available,
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
data PhysicalDeviceCooperativeMatrixFeaturesNV Source #
VkPhysicalDeviceCooperativeMatrixFeaturesNV - Structure describing cooperative matrix features that can be supported by an implementation
Members
The members of the PhysicalDeviceCooperativeMatrixFeaturesNV
structure
describe the following features:
Description
If the PhysicalDeviceCooperativeMatrixFeaturesNV
structure is included
in the pNext
chain of
PhysicalDeviceFeatures2
,
it is filled with values indicating whether the feature is supported.
PhysicalDeviceCooperativeMatrixFeaturesNV
can also be included in
the pNext
chain of DeviceCreateInfo
to enable
features.
Valid Usage (Implicit)
See Also
Instances
data PhysicalDeviceCooperativeMatrixPropertiesNV Source #
VkPhysicalDeviceCooperativeMatrixPropertiesNV - Structure describing cooperative matrix properties supported by an implementation
Members
The members of the PhysicalDeviceCooperativeMatrixPropertiesNV
structure describe the following implementation-dependent limits:
Description
If the PhysicalDeviceCooperativeMatrixPropertiesNV
structure is
included in the pNext
chain of
PhysicalDeviceProperties2
,
it is filled with the implementation-dependent limits.
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
ComponentTypeNV
, ScopeNV
,
StructureType
,
getPhysicalDeviceCooperativeMatrixPropertiesNV
CooperativeMatrixPropertiesNV | |
|
Instances
VkScopeNV - Specify SPIR-V scope
Description
All enum values match the corresponding SPIR-V value.
See Also
pattern SCOPE_DEVICE_NV :: ScopeNV |
|
pattern SCOPE_WORKGROUP_NV :: ScopeNV |
|
pattern SCOPE_SUBGROUP_NV :: ScopeNV |
|
pattern SCOPE_QUEUE_FAMILY_NV :: ScopeNV |
|
Instances
newtype ComponentTypeNV Source #
VkComponentTypeNV - Specify SPIR-V cooperative matrix component type
See Also
Instances
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 #