Skip to content

Commit d0dce6d

Browse files
authored
Add current generation CPUs and GPUs. (#764)
* Add current generation CPUs and GPUs. - So we add AMD Zen-5/5c, intel Sierra Forest (Crestmont) and Granite Rapids (Redwood Cove), ARM AmpereOne and Cortex-72x/NeoverseN3/V3. - On the GPU side, add nVidia Hopper (h), C/RDNA 3.5 (3.5) and C/RDNA4 (4), intel Xe12.2 (2) and Arc/12.7/DG2 (3). - Added it to the spec and the code. Spec does not get a new revision number, as this is a fully backwards-compatible enhancement (and logical continuation). We could of course update the minor version (and call this v3.2). * 'h' for Hopper can be confused with High-Perf. - And our parser does exactly this. So let's use 'g' for GraceHopper. * Add cosmetic improvement to CU number. - We call these "SMs/CUs/EUs" for nVidia/AMD/intel, in the order of market penetration for these GPUs and the order they are listed in the standard. Improves readability a tiny bit ... Signed-off-by: Kurt Garloff <[email protected]>
1 parent c16cfac commit d0dce6d

File tree

2 files changed

+29
-20
lines changed

2 files changed

+29
-20
lines changed

Standards/scs-0100-v3-flavor-naming.md

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -366,13 +366,15 @@ The options for arch are as follows:
366366
The generation is vendor specific and can be left out, but it can only be specified in
367367
conjunction with a vendor. At present, these values are possible:
368368

369-
| Generation | i (Intel x86-64) | z (AMD x86-64) |  a (AArch64) | r (RISC-V) |
370-
| ---------- | ---------------- | -------------- | ------------------ | ---------- |
371-
| 0 | pre Skylake | pre Zen | pre Cortex A76 | TBD |
372-
| 1 | Skylake | Zen-1 (Naples) | A76/NeoN1 class | TBD |
373-
| 2 | Cascade Lake | Zen-2 (Rome) | A78/x1/NeoV1 class | TBD |
374-
| 3 | Ice Lake | Zen-3 (Milan) | A71x/NeoN2 (ARMv9) | TBD |
375-
| 4 | Sapphire Rapids | Zen-4 (Genoa) | | TBD |
369+
| Generation | i (Intel x86-64) | z (AMD x86-64) |  a (AArch64) | r (RISC-V) |
370+
| ---------- | ----------------- | -------------- | -------------------- | ---------- |
371+
| 0 | pre Skylake | pre Zen | pre Cortex A76 | TBD |
372+
| 1 | Skylake | Zen-1 (Naples) | A76/NeoN1 class | TBD |
373+
| 2 | Cascade Lake | Zen-2 (Rome) | A78/x1/NeoV1 class | TBD |
374+
| 3 | Ice Lake | Zen-3 (Milan) | A71x/NeoN2/V2(ARMv9) | TBD |
375+
| 4 | Sapphire Rapids | Zen-4 (Genoa) | AmpereOne (ARMv8.6) | TBD |
376+
| 5 | Sierra Forest(E) | Zen-5 (Turin) | A72x/NeoN3/V3(Av9.2) | TBD |
377+
| 6 | Granite Rapids(P) | | | TBD |
376378

377379
It is recommended to leave out the `0` when specifying the old generation; this will
378380
help the parser tool, which assumes 0 for an unspecified value and does leave it
@@ -384,8 +386,11 @@ out when generating the name for comparison. In other words: 0 has a meaning of
384386
We don't differentiate between Zen-4 (Genoa) and Zen-4c (Bergamo); L3 cache per
385387
Siena core is smaller on Bergamo and the frequency lower but the cores are otherwise
386388
identical. As we already have a qualifier `h` that allows to specify higher frequencies
387-
(which Genoa thus may use more and Bergamo less or not), we have enough distinction
388-
capabilities.
389+
(which Genoa thus may use more and Bergamo not), we have enough distinction
390+
capabilities. The same applies to Zen-5 (Turin) and Zen-5c (Turin Dense).
391+
For intel with the server E-cores (Crestmont), these received their own
392+
generation assignment, as the difference to the server P-cores (Redwood Cove)
393+
is more significant.
389394

390395
:::
391396

@@ -430,9 +435,9 @@ Note that the vendor letter X is mandatory, generation and processing units are
430435
| `A` | AMD | compute units (CUs) |
431436
| `I` | Intel | execution units (EUs) |
432437

433-
For nVidia, the generation N can be f=Fermi, k=Kepler, m=Maxwell, p=Pascal, v=Volta, t=turing, a=Ampere, l=Ada Lovelace, ...,
434-
for AMD GCN-x=0.x, RDNA1=1, RDNA2=2, RDNA3=3,
435-
for Intel Gen9=0.9, Xe(12.1)=1, ...
438+
For nVidia, the generation N can be f=Fermi, k=Kepler, m=Maxwell, p=Pascal, v=Volta, t=turing, a=Ampere, l=Ada Lovelace, g=Grace Hopper, ...,
439+
for AMD GCN-x=0.x, RDNA1=1, C/RDNA2=2, C/RDNA3=3, C/RDNA3.5=3.5, C/RDNA4=4, ...
440+
for Intel Gen9=0.9, Xe(12.1/DG1)=1, Xe(12.2)=2, Arc(12.7/DG2)=3 ...
436441
(Note: This may need further work to properly reflect what's out there.)
437442

438443
The optional `h` suffix to the compute unit count indicates high-performance (e.g. high freq or special

Tests/iaas/flavor-naming/flavor_names.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,11 @@ class CPUBrand:
192192
component_name = "cpubrand"
193193
cpuvendor = TblAttr("CPU Vendor", {"i": "Intel", "z": "AMD", "a": "ARM", "r": "RISC-V"})
194194
cpugen = DepTblAttr("#.CPU Gen", cpuvendor, {
195-
"i": {None: '(unspecified)', 0: "Unspec/Pre-Skylake", 1: "Skylake", 2: "Cascade Lake", 3: "Ice Lake", 4: "Sapphire Rapids"},
196-
"z": {None: '(unspecified)', 0: "Unspec/Pre-Zen", 1: "Zen 1", 2: "Zen 2", 3: "Zen 3", 4: "Zen 4"},
197-
"a": {None: '(unspecified)', 0: "Unspec/Pre-A76", 1: "A76/NeoN1", 2: "A78/X1/NeoV1", 3: "A710/NeoN2"},
195+
"i": {None: '(unspecified)', 0: "Unspec/Pre-Skylake", 1: "Skylake", 2: "Cascade Lake", 3: "Ice Lake", 4: "Sapphire Rapids",
196+
5: 'Sierra Forest (E)', 6: 'Granite Rapids (P)'},
197+
"z": {None: '(unspecified)', 0: "Unspec/Pre-Zen", 1: "Zen 1", 2: "Zen 2", 3: "Zen 3", 4: "Zen 4/4c", 5: "Zen 5/5c"},
198+
"a": {None: '(unspecified)', 0: "Unspec/Pre-A76", 1: "A76/NeoN1", 2: "A78/X1/NeoV1", 3: "A71x/NeoN2/V2",
199+
4: "AmpereOne", 5: "A72x/NeoN3/V3"},
198200
"r": {None: '(unspecified)', 0: "Unspec"},
199201
})
200202
perf = TblAttr("Performance", {"": "Std Perf", "h": "High Perf", "hh": "Very High Perf", "hhh": "Very Very High Perf"})
@@ -213,11 +215,13 @@ class GPU:
213215
brand = TblAttr("Brand", {"N": "nVidia", "A": "AMD", "I": "Intel"})
214216
gen = DepTblAttr("Gen", brand, {
215217
"N": {'': '(unspecified)', "f": "Fermi", "k": "Kepler", "m": "Maxwell", "p": "Pascal",
216-
"v": "Volta", "t": "Turing", "a": "Ampere", "l": "AdaLovelace"},
217-
"A": {'': '(unspecified)', "0.4": "GCN4.0/Polaris", "0.5": "GCN5.0/Vega", "1": "RDNA1/Navi1x", "2": "RDNA2/Navi2x", "3": "RDNA3/Navi3x"},
218-
"I": {'': '(unspecified)', "0.9": "Gen9/Skylake", "0.95": "Gen9.5/KabyLake", "1": "Xe1/Gen12.1", "2": "Xe2"},
218+
"v": "Volta", "t": "Turing", "a": "Ampere", "l": "AdaLovelace", "g": "GraceHopper"},
219+
"A": {'': '(unspecified)', "0.4": "GCN4.0/Polaris", "0.5": "GCN5.0/Vega", "1": "RDNA1/Navi1x", "2": "C/RDNA2/Navi2x",
220+
"3": "C/RDNA3/Navi3x", "3.5": "C/RDNA3.5", "4": "C/RDNA4"},
221+
"I": {'': '(unspecified)', "0.9": "Gen9/Skylake", "0.95": "Gen9.5/KabyLake", "1": "Xe1/Gen12.1/DG1", "2": "Xe2/Gen12.2",
222+
"3": "Arc/Gen12.7/DG2"},
219223
})
220-
cu = OptIntAttr("#.CU/EU/SM")
224+
cu = OptIntAttr("#.N:SMs/A:CUs/I:EUs")
221225
perf = TblAttr("Performance", {"": "Std Perf", "h": "High Perf", "hh": "Very High Perf", "hhh": "Very Very High Perf"})
222226

223227

@@ -696,7 +700,7 @@ def prettyname(flavorname, prefix=""):
696700
stg += _tbl_out(flavorname.gpu, "perf", True)
697701
stg += _tbl_out(flavorname.gpu, "gen", True)
698702
if flavorname.gpu.cu is not None:
699-
stg += f"(w/ {flavorname.gpu.cu} CU/EU/SM) "
703+
stg += f"(w/ {flavorname.gpu.cu} SMs/CUs/EUs) "
700704
# IB
701705
if flavorname.ib:
702706
stg += "and Infiniband "

0 commit comments

Comments
 (0)