Vulkan-Docs/appendices/VK_NV_cooperative_matrix.txt
Jon Leech 22a5a1459f Change log for October 6, 2019 Vulkan 1.1.124 spec update:
* Update release number to 124.

Github Issues:

  * Fix Makefile SPECREMARK macro to work when not building in a git tree
    (public issue 992).
  * Ignore pname:aspectMask for unused attachments in
    slink:VkSubpassDescription2KHR valid usage statements (public pull
    request 1028).
  * Minor markup / spelling fixes (public pull requests 1035, 1045).

Internal Issues:

  * Fix markup in Valid Usage statement for slink:VkCreateFramebuffer
    (internal issue 1823).
  * Add a new <<synchronization-signal-operation-order, _signal operation
    order_>> section to the synchronization chapter which describes in
    detail the ordering guarantees provided by the API between fence and
    semaphore signal operations (internal merge request 3368).
  * Move generated `appendix/meta/` files into the Makefile GENERATED
    directory (internal merge request 3381).

New Extensions

  * `<<VK_KHR_shader_clock>>`
  * `<<VK_KHR_timeline_semaphore>>`
2019-10-06 12:42:12 -07:00

79 lines
2.3 KiB
Plaintext

include::{generated}/meta/VK_NV_cooperative_matrix.txt[]
*Last Modified Data*::
2019-02-05
*Contributors*::
- Jeff Bolz, NVIDIA
- Markus Tavenrath, NVIDIA
- Daniel Koch, NVIDIA
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
{spirv}/NV/SPV_NV_cooperative_matrix.html[`SPV_NV_cooperative_matrix`]
SPIR-V extension and can be used with the
https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_cooperative_matrix.txt[`GL_NV_cooperative_matrix`]
GLSL extension.
This extension includes support for enumerating the matrix types and
dimensions that are supported by the implementation.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
** ename:VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
=== New Enums
* elink:VkScopeNV
* elink:VkComponentTypeNV
=== New Structures
* Extending slink:VkPhysicalDeviceFeatures2:
** slink:VkPhysicalDeviceCooperativeMatrixFeaturesNV
* Extending slink:VkPhysicalDeviceProperties2:
** slink:VkPhysicalDeviceCooperativeMatrixPropertiesNV
* slink:VkCooperativeMatrixPropertiesNV
=== New Functions
* flink:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV
=== New SPIR-V Capabilities
* <<spirvenv-capabilities-table-cooperativeMatrix,CooperativeMatrixNV>>
=== 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