vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_NV_cooperative_matrix

Description

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
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

New Enums

New Enum Constants

New SPIR-V Capabilities

Issues

  1. 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

Documentation

getPhysicalDeviceCooperativeMatrixPropertiesNV Source #

Arguments

:: forall io. MonadIO io 
=> PhysicalDevice

physicalDevice is the physical device.

-> 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)

  • pPropertyCount must be a valid pointer to a uint32_t value
  • If the value referenced by pPropertyCount is not 0, and pProperties is not NULL, pProperties must be a valid pointer to an array of pPropertyCount CooperativeMatrixPropertiesNV structures

Return Codes

Success
Failure

See Also

VK_NV_cooperative_matrix, CooperativeMatrixPropertiesNV, PhysicalDevice

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

VK_NV_cooperative_matrix, Bool32, StructureType

Constructors

PhysicalDeviceCooperativeMatrixFeaturesNV 

Fields

  • cooperativeMatrix :: Bool

    cooperativeMatrix indicates that the implementation supports the CooperativeMatrixNV SPIR-V capability.

  • cooperativeMatrixRobustBufferAccess :: Bool

    cooperativeMatrixRobustBufferAccess indicates that the implementation supports robust buffer access for SPIR-V OpCooperativeMatrixLoadNV and OpCooperativeMatrixStoreNV instructions.

Instances

Instances details
Storable PhysicalDeviceCooperativeMatrixFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

Show PhysicalDeviceCooperativeMatrixFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

Eq PhysicalDeviceCooperativeMatrixFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

FromCStruct PhysicalDeviceCooperativeMatrixFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

ToCStruct PhysicalDeviceCooperativeMatrixFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

Zero PhysicalDeviceCooperativeMatrixFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

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

VK_NV_cooperative_matrix, ShaderStageFlags, StructureType

Constructors

PhysicalDeviceCooperativeMatrixPropertiesNV 

Fields

Instances

Instances details
Storable PhysicalDeviceCooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

Show PhysicalDeviceCooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

Eq PhysicalDeviceCooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

FromCStruct PhysicalDeviceCooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

ToCStruct PhysicalDeviceCooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

Zero PhysicalDeviceCooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

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

Constructors

CooperativeMatrixPropertiesNV 

Fields

Instances

Instances details
Storable CooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

Show CooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

Eq CooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

FromCStruct CooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

ToCStruct CooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

Zero CooperativeMatrixPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_cooperative_matrix

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 #

newtype ScopeKHR Source #

VkScopeKHR - Specify SPIR-V scope

Description

All enum values match the corresponding SPIR-V value.

See Also

VK_KHR_cooperative_matrix, CooperativeMatrixPropertiesKHR

Constructors

ScopeKHR Int32 

Bundled Patterns

pattern SCOPE_DEVICE_KHR :: ScopeKHR

SCOPE_DEVICE_KHR corresponds to SPIR-V Device scope.

pattern SCOPE_WORKGROUP_KHR :: ScopeKHR

SCOPE_WORKGROUP_KHR corresponds to SPIR-V Workgroup scope.

pattern SCOPE_SUBGROUP_KHR :: ScopeKHR

SCOPE_SUBGROUP_KHR corresponds to SPIR-V Subgroup scope.

pattern SCOPE_QUEUE_FAMILY_KHR :: ScopeKHR

SCOPE_QUEUE_FAMILY_KHR corresponds to SPIR-V QueueFamily scope.

Instances

Instances details
Storable ScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Read ScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Show ScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Eq ScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Ord ScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Zero ScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Methods

zero :: ScopeKHR Source #

newtype ComponentTypeKHR Source #

VkComponentTypeKHR - Specify SPIR-V cooperative matrix component type

See Also

VK_KHR_cooperative_matrix, CooperativeMatrixPropertiesKHR

Constructors

ComponentTypeKHR Int32 

Bundled Patterns

pattern COMPONENT_TYPE_FLOAT16_KHR :: ComponentTypeKHR

COMPONENT_TYPE_FLOAT16_KHR corresponds to SPIR-V OpTypeFloat 16.

pattern COMPONENT_TYPE_FLOAT32_KHR :: ComponentTypeKHR

COMPONENT_TYPE_FLOAT32_KHR corresponds to SPIR-V OpTypeFloat 32.

pattern COMPONENT_TYPE_FLOAT64_KHR :: ComponentTypeKHR

COMPONENT_TYPE_FLOAT64_KHR corresponds to SPIR-V OpTypeFloat 64.

pattern COMPONENT_TYPE_SINT8_KHR :: ComponentTypeKHR

COMPONENT_TYPE_SINT8_KHR corresponds to SPIR-V OpTypeInt 8 1.

pattern COMPONENT_TYPE_SINT16_KHR :: ComponentTypeKHR

COMPONENT_TYPE_SINT16_KHR corresponds to SPIR-V OpTypeInt 16 1.

pattern COMPONENT_TYPE_SINT32_KHR :: ComponentTypeKHR

COMPONENT_TYPE_SINT32_KHR corresponds to SPIR-V OpTypeInt 32 1.

pattern COMPONENT_TYPE_SINT64_KHR :: ComponentTypeKHR

COMPONENT_TYPE_SINT64_KHR corresponds to SPIR-V OpTypeInt 64 1.

pattern COMPONENT_TYPE_UINT8_KHR :: ComponentTypeKHR

COMPONENT_TYPE_UINT8_KHR corresponds to SPIR-V OpTypeInt 8 0.

pattern COMPONENT_TYPE_UINT16_KHR :: ComponentTypeKHR

COMPONENT_TYPE_UINT16_KHR corresponds to SPIR-V OpTypeInt 16 0.

pattern COMPONENT_TYPE_UINT32_KHR :: ComponentTypeKHR

COMPONENT_TYPE_UINT32_KHR corresponds to SPIR-V OpTypeInt 32 0.

pattern COMPONENT_TYPE_UINT64_KHR :: ComponentTypeKHR

COMPONENT_TYPE_UINT64_KHR corresponds to SPIR-V OpTypeInt 64 0.

Instances

Instances details
Storable ComponentTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Read ComponentTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Show ComponentTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Eq ComponentTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Ord ComponentTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix

Zero ComponentTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_cooperative_matrix