Skip to content

[SPIR-V][DOC] Update SPV_INTEL_joint_matrix extension #8175

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 31, 2023

Conversation

MrSidims
Copy link
Contributor

@MrSidims MrSidims commented Feb 1, 2023

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
@MrSidims MrSidims added Documentation Missing documentation for the code, compiler or runtime features, etc. SPIR-V Issues related to SPIRV-LLVM-Translator labels Feb 1, 2023
@MrSidims MrSidims requested a review from a team as a code owner February 1, 2023 23:15
@MrSidims
Copy link
Contributor Author

MrSidims commented Feb 1, 2023

FYI @dkhaldi @arnamoy10 . This should help with get_coord implementation in SYCL headers.

MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Feb 7, 2023
The instruction returns (Row, Column) coordinate of dynamically selected
element of a matrix

Updated version of the spec is here
intel/llvm#8175

Instruction correctness checks and get coord related capability
will be added later among non-backward compatible changes.

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Feb 7, 2023
It specifies how to interpret 'Component Type' when components
of a joint matrix are storages for values of different types,
for example float for TF32, unsigned short for bfloat16.

Spec update:
intel/llvm#8175

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Feb 8, 2023
The instruction returns (Row, Column) coordinate of dynamically selected
element of a matrix

Updated version of the spec is here
intel/llvm#8175

Instruction correctness checks will be added later among
non-backward compatible changes.

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Feb 9, 2023
It specifies how to interpret 'Component Type' when components
of a joint matrix are storages for values of different types,
for example float for TF32, unsigned short for bfloat16.

Spec update:
intel/llvm#8175

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to KhronosGroup/SPIRV-LLVM-Translator that referenced this pull request Feb 15, 2023
JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
KornevNikita pushed a commit to KornevNikita/llvm that referenced this pull request Feb 20, 2023
JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@a7a1d2f
MrSidims added a commit to KhronosGroup/SPIRV-LLVM-Translator that referenced this pull request Feb 21, 2023
The instruction returns (Row, Column) coordinate of dynamically selected
element of a matrix

Updated version of the spec is here
intel/llvm#8175

Instruction correctness checks will be added later among non-backward
compatible changes.

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com
MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Feb 21, 2023
It specifies how to interpret 'Component Type' when components
of a joint matrix are storages for values of different types,
for example float for TF32, unsigned short for bfloat16.

Spec update:
intel/llvm#8175

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Feb 21, 2023
It specifies how to interpret 'Component Type' when components
of a joint matrix are storages for values of different types,
for example float for TF32, unsigned short for bfloat16.

Spec update:
intel/llvm#8175

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added 2 commits March 2, 2023 07:04
Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to KhronosGroup/SPIRV-LLVM-Translator that referenced this pull request Mar 7, 2023
It specifies how to interpret 'Component Type' when components of a joint matrix are storages for values of different types, for example float for TF32, unsigned short for bfloat16.

At this point only tf32 type interpretation is added during SPIR-V generation. Adding it to bf16 is a breaking change and
requires adaptation across drivers.

Spec update:
intel/llvm#8175

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com
FreddyLeaf pushed a commit to FreddyLeaf/llvm that referenced this pull request Mar 22, 2023
The instruction returns (Row, Column) coordinate of dynamically selected
element of a matrix

Updated version of the spec is here
intel#8175

Instruction correctness checks will be added later among non-backward
compatible changes.

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@dd8b217
FreddyLeaf pushed a commit to FreddyLeaf/llvm that referenced this pull request Mar 22, 2023
It specifies how to interpret 'Component Type' when components of a joint matrix are storages for values of different types, for example float for TF32, unsigned short for bfloat16.

At this point only tf32 type interpretation is added during SPIR-V generation. Adding it to bf16 is a breaking change and
requires adaptation across drivers.

Spec update:
intel#8175

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@b7c5218
@MrSidims
Copy link
Contributor Author

@dpcpp-spirv-doc-reviewers should we merge this? I keep getting questions about where to find debug info spec and open pull request doesn't give enough trust :(

MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Mar 31, 2023
The patch adds TypeJointMatrixINTELv2 which maps to new type OpCode
6184. Under new OpCode matrix type no longer has Layout parameter.
The patch also moved 'scope' to optional matrix muladd instruction.

The changes are done only in the consumer part to prepare the switch and
make E2E switch backward compatible by preparing consumers ahead of time.

Unfortunately there is no way to add a test foe this unless it's binary
test, but it seems to be a bit unsafe to add this, so the patch was
tested localy.

Spec change:
intel/llvm#8175

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
@gmlueck
Copy link
Contributor

gmlueck commented Mar 31, 2023

@dpcpp-spirv-doc-reviewers should we merge this? I keep getting questions about where to find debug info spec and open pull request doesn't give enough trust :(

I don't mind merging this to document the current state. Based on our other conversations, it seems clear that this SPV extension will continue to evolve, though, so we should make this clear in any communication. The status in the document says "working draft", and that seems appropriate.

I don't understand your comment about "debug info spec". How is debug info related to the joint_matrix extension?

@MrSidims
Copy link
Contributor Author

MrSidims commented Mar 31, 2023

@dpcpp-spirv-doc-reviewers should we merge this? I keep getting questions about where to find debug info spec and open pull request doesn't give enough trust :(

I don't mind merging this to document the current state. Based on our other conversations, it seems clear that this SPV extension will continue to evolve, though, so we should make this clear in any communication. The status in the document says "working draft", and that seems appropriate.

I don't understand your comment about "debug info spec". How is debug info related to the joint_matrix extension?

Sorry, I meant "matrix" having "debug info" (as a different task) in my mind while writing :)

@bader bader requested a review from vmaksimo March 31, 2023 16:51
@bader bader merged commit adbbf0f into intel:sycl Mar 31, 2023
MrSidims added a commit to KhronosGroup/SPIRV-LLVM-Translator that referenced this pull request Apr 4, 2023
The patch adds TypeJointMatrixINTELv2 which maps to new type OpCode
6184. Under new OpCode matrix type no longer has Layout parameter. The patch also moved 'scope' to optional matrix muladd instruction.

The changes are done only in the consumer part to prepare the switch and make E2E switch backward compatible by preparing consumers ahead of time.

Unfortunately there is no way to add a test foe this unless it's binary test, but it seems to be a bit unsafe to add this, so the patch was tested locally.

Spec change:
intel/llvm#8175

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
againull pushed a commit to againull/llvm that referenced this pull request Apr 11, 2023
The patch adds TypeJointMatrixINTELv2 which maps to new type OpCode
6184. Under new OpCode matrix type no longer has Layout parameter. The patch also moved 'scope' to optional matrix muladd instruction.

The changes are done only in the consumer part to prepare the switch and make E2E switch backward compatible by preparing consumers ahead of time.

Unfortunately there is no way to add a test foe this unless it's binary test, but it seems to be a bit unsafe to add this, so the patch was tested locally.

Spec change:
intel#8175

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@a6fcade
mateuszchudyk pushed a commit to mateuszchudyk/SPIRV-LLVM-Translator that referenced this pull request Jun 19, 2023
JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
mateuszchudyk pushed a commit to mateuszchudyk/SPIRV-LLVM-Translator that referenced this pull request Jun 19, 2023
JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
mateuszchudyk pushed a commit to mateuszchudyk/SPIRV-LLVM-Translator that referenced this pull request Jun 19, 2023
…sGroup#1833)

JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
mateuszchudyk pushed a commit to mateuszchudyk/SPIRV-LLVM-Translator that referenced this pull request Jun 19, 2023
…sGroup#1833)

JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
mateuszchudyk pushed a commit to mateuszchudyk/SPIRV-LLVM-Translator that referenced this pull request Jun 19, 2023
…sGroup#1833)

JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
mateuszchudyk pushed a commit to mateuszchudyk/SPIRV-LLVM-Translator that referenced this pull request Jun 19, 2023
…sGroup#1833)

JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
mateuszchudyk pushed a commit to mateuszchudyk/SPIRV-LLVM-Translator that referenced this pull request Jun 21, 2023
…sGroup#1833)

JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
mateuszchudyk pushed a commit to mateuszchudyk/SPIRV-LLVM-Translator that referenced this pull request Jun 21, 2023
…sGroup#1833)

JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
mateuszchudyk pushed a commit to mateuszchudyk/SPIRV-LLVM-Translator that referenced this pull request Jun 22, 2023
…sGroup#1833)

JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
AlexeySachkov pushed a commit to KhronosGroup/SPIRV-LLVM-Translator that referenced this pull request Jun 22, 2023
JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
AlexeySachkov pushed a commit to KhronosGroup/SPIRV-LLVM-Translator that referenced this pull request Jun 22, 2023
JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
AlexeySachkov pushed a commit to KhronosGroup/SPIRV-LLVM-Translator that referenced this pull request Jun 22, 2023
JointMatrixMadINTEL will stand for signed/signed Matrix type
JointMatrixSUMadINTEL will stand for signed/signed Matrix type
JointMatrixUSMadINTEL will stand for unsigned/signed Matrix type
JointMatrixUUMadINTEL will stand for unsigned/unsigned Matrix type

Spec update:
intel/llvm#8175

Signed-off-by: Dmitry Sidorov dmitry.sidorov@intel.com
MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Nov 20, 2023
The instruction returns (Row, Column) coordinate of dynamically selected
element of a matrix

Updated version of the spec is here
intel/llvm#8175

Instruction correctness checks will be added later among non-backward
compatible changes.

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com
Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Nov 20, 2023
The instruction returns (Row, Column) coordinate of dynamically selected
element of a matrix

Updated version of the spec is here
intel/llvm#8175

Instruction correctness checks will be added later among non-backward
compatible changes.

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to MrSidims/SPIRV-LLVM-Translator that referenced this pull request Nov 20, 2023
The instruction returns (Row, Column) coordinate of dynamically selected
element of a matrix

Updated version of the spec is here
intel/llvm#8175

Instruction correctness checks will be added later among non-backward
compatible changes.

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com
Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to KhronosGroup/SPIRV-LLVM-Translator that referenced this pull request Nov 20, 2023
The instruction returns (Row, Column) coordinate of dynamically selected
element of a matrix

Updated version of the spec is here
intel/llvm#8175

Instruction correctness checks will be added later among non-backward
compatible changes.

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com
Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
MrSidims added a commit to KhronosGroup/SPIRV-LLVM-Translator that referenced this pull request Nov 20, 2023
The instruction returns (Row, Column) coordinate of dynamically selected
element of a matrix

Updated version of the spec is here
intel/llvm#8175

Instruction correctness checks will be added later among non-backward
compatible changes.

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
fda0 pushed a commit to fda0/SPIRV-LLVM-Translator that referenced this pull request May 22, 2025
KhronosGroup#1835)

It specifies how to interpret 'Component Type' when components of a joint matrix are storages for values of different types, for example float for TF32, unsigned short for bfloat16.

At this point only tf32 type interpretation is added during SPIR-V generation. Adding it to bf16 is a breaking change and
requires adaptation across drivers.

Spec update:
intel/llvm#8175

Signed-off-by: Sidorov, Dmitry dmitry.sidorov@intel.com
(cherry picked from commit b7c5218)
fda0 pushed a commit to fda0/SPIRV-LLVM-Translator that referenced this pull request May 22, 2025
…onosGroup#1935)

The patch adds TypeJointMatrixINTELv2 which maps to new type OpCode
6184. Under new OpCode matrix type no longer has Layout parameter. The patch also moved 'scope' to optional matrix muladd instruction.

The changes are done only in the consumer part to prepare the switch and make E2E switch backward compatible by preparing consumers ahead of time.

Unfortunately there is no way to add a test foe this unless it's binary test, but it seems to be a bit unsafe to add this, so the patch was tested locally.

Spec change:
intel/llvm#8175

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
(cherry picked from commit a6fcade)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Documentation Missing documentation for the code, compiler or runtime features, etc. SPIR-V Issues related to SPIRV-LLVM-Translator
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants