Skip to content
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

Forbid using CPU generation without CPU vendor #364

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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