Registered Extension Number

250

Revision

1

Ratification Status

Not ratified

Extension and Version Dependencies

SPIR-V Dependencies

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

  • VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME

  • VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION

  • Extending VkComponentTypeKHR:

    • VK_COMPONENT_TYPE_FLOAT16_NV

    • VK_COMPONENT_TYPE_FLOAT32_NV

    • VK_COMPONENT_TYPE_FLOAT64_NV

    • VK_COMPONENT_TYPE_SINT16_NV

    • VK_COMPONENT_TYPE_SINT32_NV

    • VK_COMPONENT_TYPE_SINT64_NV

    • VK_COMPONENT_TYPE_SINT8_NV

    • VK_COMPONENT_TYPE_UINT16_NV

    • VK_COMPONENT_TYPE_UINT32_NV

    • VK_COMPONENT_TYPE_UINT64_NV

    • VK_COMPONENT_TYPE_UINT8_NV

  • Extending VkScopeKHR:

    • VK_SCOPE_DEVICE_NV

    • VK_SCOPE_QUEUE_FAMILY_NV

    • VK_SCOPE_SUBGROUP_NV

    • VK_SCOPE_WORKGROUP_NV

  • Extending VkStructureType:

    • VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV

    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV

    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV

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

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.

Copyright 2014-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0