Skip to content

Commit 1c262d1

Browse files
authored
Add Blackwell Ultra to scs-0100-v3, update GPU table in scs-0100-w1 (#1213)
* New letter u for Blackwell Ultra. The tensor cores are different enough to justify this. Main use case for GPUs in clouds is AI and the tensor cores do make a difference there. Signed-off-by: Kurt Garloff <kurt@garloff.de>
1 parent c1b2f68 commit 1c262d1

3 files changed

Lines changed: 101 additions & 12 deletions

File tree

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,8 @@ Note that the vendor letter X is mandatory, generation and processing units are
436436
| `A` | AMD | compute units (CUs) |
437437
| `I` | Intel | execution units (EUs) |
438438

439-
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, b=Blackwell, ...,
439+
For nVidia, the generation N can be f=Fermi, k=Kepler, m=Maxwell, p=Pascal, v=Volta, t=turing, a=Ampere,
440+
l=Ada Lovelace, g=Grace Hopper, b=Blackwell, u=BlackwellUltra, ...,
440441
for AMD GCN-x=0.x, CDNA-x=x, RDNA-x=x.1, RDNA-3.5=3.5, UDNA-x=x
441442
for Intel Gen9=0.9, Xe(12.1/DG1)=1, Xe(12.2)=2, Arc(12.7/DG2)=3, BattleImage(20.0)=4, ...
442443
(Note: This may need further work to properly reflect what's out there.)

Standards/scs-0100-w1-flavor-naming-implementation-testing.md

Lines changed: 96 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ possibly recommended flavors can be created, or the user can set a file containi
4848
### GPU table
4949

5050
The most commonly used datacenter GPUs are listed here, showing what GPUs (or partitions
51-
of a GPU) result in what GPU part of the flavor name.
51+
of a GPU) result in what GPU part of the flavor name. We provide these for convenience; most
52+
values are from data sheets and not based on own testing. Providers must look up the values
53+
(SMs/CUs/EUs and VRAM) really provided to users and correctly fill these into the SCS names.
54+
This is in particular true for the MIG configurations.
5255

5356
#### Nvidia (`N`)
5457

@@ -95,6 +98,15 @@ No MIG support, 128 Cuda Cores and 4 Tensor Cores per SM.
9598
| L40G | 568 | 18176 | 142 | 48G GDDR6 | `GNl-142h-48` |
9699
| L40S | 568 | 18176 | 142 | 48G GDDR6 | `GNl-142hh-48` |
97100

101+
| Nvidia GPU | Tensor C | Cuda Cores | SMs | VRAM | SCS name piece |
102+
|-------------|----------|------------|-----|-----------|----------------|
103+
| RTX2000 Ada | 88 | 2816 | 22 | 16G GDDR6 | `GNl-22-16` |
104+
| RTX4000 Ada | 192 | 6144 | 48 | 20G GDDR6 | `GNl-48-20` |
105+
| RTX4500 Ada | 240 | 7680 | 60 | 24G GDDR6 | `GNl-60-24` |
106+
| RTX5000 Ada | 400 | 12800 | 100 | 32G GDDR6 | `GNl-100-32` |
107+
| RTX5880 Ada | 440 | 14080 | 110 | 48G GDDR6 | `GNl-110-48` |
108+
| RTX6000 Ada | 568 | 18176 | 142 | 48G GDDR6 | `GNl-142-48` |
109+
98110
##### Grace Hopper (`g`)
99111

100112
These have MIG support and 128 Cuda Cores and 4 Tensor Cores per SM.
@@ -112,6 +124,39 @@ These have MIG support and 128 Cuda Cores and 4 Tensor Cores per SM.
112124
[+] The precise numbers for the 1/7 MIG configurations are not known by the author of
113125
this document and need validation.
114126

127+
##### Blackwell (`b`) and Blackwell Ultra (`u`)
128+
129+
These have MIG support and 128 Cuda Cores and 4 Tensor Cores per SM.
130+
131+
| Nvidia GPU | Fraction | Tensor C | Cuda Cores | SMs | VRAM | SCS GPU name |
132+
|------------|----------|----------|------------|-----|------------|----------------|
133+
| GB200 | 1/1 | 640 | 20480 | 160 | 192G HBM3e | `GNb-160-192h` |
134+
| GB200 | 1/2 | 320 | 10240 | 80 | 96G HBM3e | `GNb-80-96h` |
135+
| GB200 | 2/7 | 88+ | 5632+ | 44+| 45G HBM3e+| `GNb-44-45h`+ |
136+
| GB200 | 1/7 | 44+ | 2816+ | 22+| 23G HBM3e+| `GNb-22-23h`+ |
137+
| GB300 | 1/1 | 640 | 20480 | 160 | 288G HBM3e | `GNu-160-288h` |
138+
| GB300 | 1/2 | 320 | 10240 | 80 | 144G HBM3e | `GNu-80-144h` |
139+
| ... |
140+
141+
[+] The precise numbers for the 1/7 MIG configurations are not known by the author of
142+
this document and need validation.
143+
144+
Note that Blackwell Ultra tensor cores have significant enough changes vs. Blackwell that we
145+
gave the BW Ultra GPUs a new letter `u`. In particular, FP4 tensor performance is over 150%
146+
of std. Blackwell and has more Special Function Units (which helps attention) but has
147+
regressed INT8 performance.
148+
149+
| Nvidia GPU | Fraction | Tensor C | Cuda Cores | SMs | VRAM | SCS GPU name |
150+
|-----------------------|----------|----------|------------|-----|------------|----------------|
151+
| RTX Pro2000 Blackwell | 1/1 | 136 | 4352 | 34 | 16G GDDR7 | `GNb-34-16` |
152+
| RTX Pro4000 Blackwell | 1/1 | 280 | 8960 | 70 | 24G GDDR7 | `GNb-70-24` |
153+
| RTX Pro4500 Blackwell | 1/1 | 328 | 10496 | 82 | 32G GDDR7 | `GNb-82-32` |
154+
| RTX Pro5000 Blackwell | 1/1 | 440 | 14080 | 110 | 72G GDDR7 | `GNb-110-72` |
155+
| RTX Pro5000 Blackwell | 1/2 | 220 | 7040 | 55 | 36G GDDR7 | `GNb-55-36` |
156+
| RTX Pro6000 Blackwell | 1/1 | 752 | 26064 | 188 | 96G GDDR7 | `GNb-188-96` |
157+
| RTX Pro6000 Blackwell | 1/2 | 376 | 13032 | 94 | 48G GDDR7 | `GNb-94-48` |
158+
| RTX Pro6000 Blackwell | 1/4 | 188 | 6516 | 47 | 24G GDDR7 | `GNb-47-24` |
159+
115160
#### AMD Radeon (`A`)
116161

117162
##### CDNA 2 (`2`)
@@ -130,28 +175,71 @@ SRIOV partitioning is possible, resulting in pass-through for
130175
up to 8 partitions, somewhat similar to Nvidia MIG. 4 Tensor
131176
Cores and 64 Stream Processors per CU.
132177

133-
| AMD GPU | Tensor C | Stream Proc | CUs | VRAM | SCS name piece |
134-
|-------------|----------|-------------|-----|------------|----------------|
135-
| Inst MI300X | 1216 | 19456 | 304 | 192G HBM3 | `GA3-304-192h` |
136-
| Inst MI325X | 1216 | 19456 | 304 | 288G HBM3 | `GA3-304-288h` |
178+
| AMD GPU | Tensor C | Stream Proc | CUs | VRAM | SCS name piece |
179+
|-------------|----------|-------------|-----|------------|-----------------|
180+
| Inst MI300X | 1216 | 19456 | 304 | 192G HBM3 | `GA3-304-192h` |
181+
| Inst MI325X | 1216 | 19456 | 304 | 288G HBM3 | `GA3-304-288h` |
182+
183+
##### CDNA 4 (`4`)
184+
185+
SRIOV partitioning is possible, resulting in pass-through for
186+
up to 8 partitions, somewhat similar to Nvidia MIG. 4 Tensor
187+
Cores and 64 Stream Processors per CU.
188+
189+
| AMD GPU | Tensor C | Stream Proc | CUs | VRAM | SCS name piece |
190+
|-------------|----------|-------------|-----|------------|-----------------|
191+
| Inst MI350X | 1024 | 16384 | 256 | 288G HBM3e | `GA4-256-288h` |
192+
| Inst MI355X | 1024 | 16384 | 256 | 288G HBM3e | `GA4-256h-288h` |
193+
194+
The Instinct MI355X has a higher watttage and thus slightly higher clocks
195+
than the MI350X but is otherwise identical - we can thus use the `h` modifier
196+
to identify the higher performance version.
197+
198+
##### Workstation RDNA 3 (`3.1`) and 4 (`4.1`)
199+
200+
2 Tensor Cores and 64 Stream Processors per CU.
201+
202+
| AMD Radeon | Tensor C | Stream Proc | CUs | VRAM | SCS name piece |
203+
|--------------|----------|-------------|-----|------------|-----------------|
204+
| Pro W7900 | 196 | 6144 | 96 | 48G GDDR6 | `GA3.1-96-48` |
205+
| AI Pro R9700 | 128 | 4096 | 64 | 32G GDDR6 | `GA4.1-64-32` |
137206

138207
Note that we previously assumed more similarity of consumer RDNA-x with
139-
server CDNA-x that actually is the case; the RDNA-x cards now use `x.1`
208+
server CDNA-x than actually is the case; the RDNA-x cards now use `x.1`
140209
(since v3.3 as of Oct 2025) to be able to differentiate them. We will
141210
tolerate potential rare cases of old installations calling RDNA-x as
142-
generation `x` for the time being.
211+
generation `x` for the time being. If AMD executes on the merging with
212+
UDNA-5, we will avoid this split in the future.
143213

144214
#### intel Xe (`I`)
145215

146216
##### Xe-HPC (Ponte Vecchio) (`3`)
147217

148-
1 EU corresponds to one Tensor Core and contains 128 Shading Units.
218+
One EU corresponds to one Tensor Core and contains 128 Shading Units.
149219

150220
| intel DC GPU | Tensor C | Shading U | EUs | VRAM | SCS name part |
151221
|--------------|----------|-----------|-----|------------|----------------|
152222
| Max 1100 | 56 | 7168 | 56 | 48G HBM2e | `GI3-56-48h` |
153223
| Max 1550 | 128 | 16384 | 128 | 128G HBM2e | `GI3-128-128h` |
154224

225+
##### Workstation cards Arc B (`4`)
226+
227+
One EU has one tensor core and 16 shading units.
228+
229+
| intel GPU | Tensor C | Shading U | EUs | VRAM | SCS name part |
230+
|-------------|----------|-----------|-----|------------|----------------|
231+
| Arc Pro B50 | 128 | 2048 | 128 | 16G GDDR6 | `GI4-128-16` |
232+
| Arc Pro B60 | 160 | 2560 | 160 | 24G GDDR6 | `GI4-160-24` |
233+
| Arc Pro B65 | 160 | 2560 | 160 | 32G GDDR6 | `GI4-160-32` |
234+
| Arc Pro B70 | 256 | 4096 | 256 | 32G GDDR6 | `GI4-256-32` |
235+
236+
#### Consumer cards
237+
238+
Note that we don't recommend using consumer cards.
239+
That said, the schema allows to specify them and for example do PCI pass-through
240+
of Nvidia RTX4080S (`GNl-80-16`), RTX4090 (`GNl-128-24`), RTX5080S (`GNb-84-24`),
241+
RTX5090 (`GNb-170-32`), or AMD Radeon RX7900XTX (`GA3.1-96-24`).
242+
155243
## Automated tests
156244

157245
The following testcases [are implemented](https://github.com/SovereignCloudStack/standards/tree/main/Tests/iaas/openstack_test.py):

Tests/iaas/scs_0100_flavor_naming/flavor_names.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,17 +233,17 @@ class GPU:
233233
brand = TblAttr("Brand", {"N": "Nvidia", "A": "AMD", "I": "Intel"})
234234
gen = DepTblAttr("Gen", brand, {
235235
"N": {'': '(unspecified)', "f": "Fermi", "k": "Kepler", "m": "Maxwell", "p": "Pascal", "v": "Volta",
236-
"t": "Turing", "a": "Ampere", "l": "AdaLovelace", "g": "GraceHopper", "b": "Blackwell"},
236+
"t": "Turing", "a": "Ampere", "l": "AdaLovelace", "g": "GraceHopper", "b": "Blackwell", "u": "Blackwell Ultra"},
237237
"A": {'': '(unspecified)', "0.4": "GCN4.0/Polaris", "0.5": "GCN5.0/Vega", "1": "CDNA1", "1.1": "RDNA1/Navi1x",
238238
"2": "CDNA2", "2.1": "RDNA2/Navi2x", "3": "CDNA3", "3.1": "RDNA3/Navi3x", "3.5": "RDNA3.5", "4": "CDNA4",
239-
"4.1": "RDNA-4/Navi4x", "5.1": "RDNA-5/Navi5x"},
239+
"4.1": "RDNA4/Navi4x", "5.1": "RDNA5/Navi5x"},
240240
"I": {'': '(unspecified)', "0.9": "Gen9/Skylake", "0.95": "Gen9.5/KabyLake", "1": "Xe1/Gen12.1/DG1", "2": "Xe2/Gen12.2",
241241
"3": "Arc/Gen12.7/DG2", "4": "BattleImage/Gen20.0"},
242242
})
243243
cu = OptIntAttr("#.N:SMs/A:CUs/I:EUs")
244244
perf = TblAttr("Frequency", {"": "Std Freq", "h": "High Freq", "hh": "Very High Freq"})
245245
vram = OptIntAttr("#.V:GiB VRAM")
246-
vramperf = TblAttr("Bandwidth", {"": "Std BW {<~1GiB/s)", "h": "High BW", "hh": "Very High BW"})
246+
vramperf = TblAttr("Bandwidth", {"": "Std BW (GDDR)", "h": "High BW (HBM)", "hh": "Very High BW"})
247247

248248
def __init__(self, gputype="g", brand="N", gen='', cu=None, perf='', vram=None, vramperf=''):
249249
self.gputype = gputype

0 commit comments

Comments
 (0)