Skip to content

Commit

Permalink
Forbid using CPU generation without CPU vendor (#364)
Browse files Browse the repository at this point in the history
* Forbid using CPU generation without CPU vendor
* Remove additional empty line
* Fix extension format description using the test script as guide
* Minor addendum
* Provide more details regarding the CPU architecture extension

Signed-off-by: Anja Strunk <[email protected]>
Signed-off-by: Matthias Büchse <[email protected]>
Co-authored-by: Matthias Büchse <[email protected]>
Co-authored-by: Kurt Garloff <[email protected]>
  • Loading branch information
3 people authored Nov 3, 2023
1 parent 17d318e commit 03d02fe
Showing 1 changed file with 39 additions and 15 deletions.
54 changes: 39 additions & 15 deletions Standards/scs-0100-v3-flavor-naming.md
Original file line number Diff line number Diff line change
Expand Up @@ -301,15 +301,17 @@ Note that machines (hypervisors) can be part of more than one host aggregate.

The extensions have the format:

\[`_`hyp\]\[`_hwv`\]\[`_`\[arch\[N\]\[`h`\]\[`_`\[`G/g`\]X\[N\]\[`-`M\[`h`\]\]\]\[`_ib`\]
\[`_`hyp\]\[`_hwv`\]\[`_`arch\[N\]\[`h`\]\]\[`_`\[`G/g`\]X\[N\]\[`-`M\]\[`h`\]\]\[`_ib`\]

Remember that letters are case-sensitive.
In case you wonder: Feature indicators are capitalized, modifiers are lower case.
(An exception is the uppercase `_G` for a pass-through GPU vs. lowercase `_g` for vGPU.)

### [OPTIONAL] Hypervisor

The _default Hypervisor_ is assumed to be `KVM`. Clouds, that offer different hypervisors
Format: `_`hyp

The _default Hypervisor_ is assumed to be `KVM`. Clouds that offer different hypervisors
or Bare Metal Systems should indicate the Hypervisor according to the following table:

| hyp | Meaning |
Expand All @@ -328,6 +330,8 @@ or Bare Metal Systems should indicate the Hypervisor according to the following

### [OPTIONAL] Hardware virtualization / Nested virtualization

Format: `_hwv`

If the instances that are created with this flavor support hardware-accelerated
virtualization, this can be reflected with the `_hwv` flag (after the optional
Hypervisor flag). On x86, this means that in the instance, the CPU flag vmx (intel)
Expand All @@ -348,18 +352,28 @@ capabilities. Flavors may over-deliver ...)

### [OPTIONAL] CPU Architecture Details

Arch details provide more details on the specific CPU:
Format: `_`arch\[N\]\[`h`\]

- Vendor
- Generation
- Frequency
This extension provides more details on the specific CPU:

- vendor/architecture (arch)
- generation (N)
- frequency (h)

#### Generation and Vendor

The generations are vendor specific and can be left out.
Not specifying arch means that we have a generic CPU (**x86-64**).
The letters `i`, `z`, `a` and `r` specify the vendors Intel,
AMD (`z` like in Zen), ARM v8+, RISC-V.
The options for arch are as follows:

| Letter | vendor/architecture | Corresponding image architecture |
| ------- | -------------------- | --------------------------------- |
| (none) | Generic x86-64 | `x86_64` |
| `i` | Intel x86-64 | `x86_64` |
| `z` | AMD/Zen x86-64 | `x86_64` |
| `a` | ARM v8+ | `aarch64` |
| `r` | RISC-V | (not yet listed in Glance) |

The generation is vendor specific and can be left out, but it can only be specified in
conjunction with a vendor. At present, these values are possible:

| Generation | i (Intel x86-64) | z (AMD x86-64) |  a (AArch64) | r (RISC-V) |
| ---------- | ---------------- | -------------- | ------------------ | ---------- |
Expand Down Expand Up @@ -397,8 +411,15 @@ out when generating the name for comparison. In other words: 0 has a meaning of

### [OPTIONAL] GPU support

`_G`X\[N\]\[`-`M\[`h`\]\] indicates a Pass-Through GPU from vendor X of gen N with M compute units / SMs / EUs exposed.
`_g`X\[N\]\[`-`M\[`h`\]\] indicates a vGPU from vendor X of gen N with M compute units / SMs / EUs assigned.
Format: `_`\[`G/g`\]X\[N\]\[`-`M\]\[`h`\]

This extension provides more details on the specific GPU:

- pass-through (`G`) vs. virtual GPU (`g`)
- vendor (X)
- generation (N)
- no. of compute units / SMs / EUs (M) that are exposed (for pass-through) or assigned
- high-performance indicator (`h`)

Note that the vendor letter X is mandatory, generation and compute units are optional.

Expand All @@ -409,7 +430,8 @@ Note that the vendor letter X is mandatory, generation and compute units are opt
| I | Intel |

For nVidia, the generation N can be f=Fermi, k=Kepler, m=Maxwell, p=Pascal, v=Volta, t=turing, a=Ampere, l=Ada Lovelace, ...,
for AMD GCN-x=0.x, RDNA1=1, RDNA2=2, RDNA3=3, for intel Gen9=0.9, Xe(12.1)=1, ...
for AMD GCN-x=0.x, RDNA1=1, RDNA2=2, RDNA3=3,
for Intel Gen9=0.9, Xe(12.1)=1, ...
(Note: This may need further work to properly reflect what's out there.)

The optional `h` suffix to the compute unit count indicates high-performance (e.g. high freq or special
Expand All @@ -418,11 +440,13 @@ high bandwidth gfx memory such as HBM);

### [OPTIONAL] Infiniband

`_ib` indicates Infiniband networking.
Format: `_ib`

This extension indicates Infiniband networking.

More extensions may be forthcoming and appended in a later revision of this spec.

Extensions need to be specified in the above mentioned order.
Extensions need to be specified in the above-mentioned order.

### Naming options advice

Expand Down

0 comments on commit 03d02fe

Please sign in to comment.