-
Notifications
You must be signed in to change notification settings - Fork 308
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
Add detection for Intel Advanced Matrix Extensions (AMX) instructions #231
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -537,6 +537,30 @@ struct cpuinfo_x86_isa cpuinfo_x86_detect_isa( | |
*/ | ||
isa.avx512bf16 = avx512_regs && !!(structured_feature_info1.eax & UINT32_C(0x00000020)); | ||
|
||
/* | ||
* AMX_BF16 instructions: | ||
* - Intel: edx[bit 22] in structured feature info (ecx = 0). | ||
*/ | ||
isa.amx_bf16 = avx512_regs && !!(structured_feature_info0.edx & UINT32_C(0x00400000)); | ||
|
||
/* | ||
* AMX_TILE instructions: | ||
* - Intel: edx[bit 24] in structured feature info (ecx = 0). | ||
*/ | ||
isa.amx_tile = avx512_regs && !!(structured_feature_info0.edx & UINT32_C(0x01000000)); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can you confirm this works on gnr256 with avx10 but not avx512? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are you referring to this:
Results collected with intel Software Development Emulator quote from https://www.tomshardware.com/news/intels-new-avx10-brings-avx-512-capabilities-to-e-cores
|
||
|
||
/* | ||
* AMX_INT8 instructions: | ||
* - Intel: edx[bit 25] in structured feature info (ecx = 0). | ||
*/ | ||
isa.amx_int8 = avx512_regs && !!(structured_feature_info0.edx & UINT32_C(0x02000000)); | ||
|
||
/* | ||
* AMX_FP16 instructions: | ||
* - Intel: eax[bit 21] in structured feature info (ecx = 1). | ||
*/ | ||
isa.amx_fp16 = avx512_regs && !!(structured_feature_info1.eax & UINT32_C(0x00200000)); | ||
|
||
/* | ||
* HLE instructions: | ||
* - Intel: ebx[bit 4] in structured feature info (ecx = 0). | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove amx_tile?
is tile useful? all cpus that support amx_bf16 or amx_int8 will support amx_tile, and amd_tile by itself is not useful?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would suggest we keep these flags at the low level that are mapped exactly to underlying CPU ISA feature bits. We can probably have some helper functions like
has_amx_support
at the higher level for ease of use purposes.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is true that the existing platforms that supports amx_bf16 or amx_int8 will support amx_tile. However I prefer to leave a low level flag here, just in case of possible future changes.