Boavizta / boaviztapi

🛠 Giving access to BOAVIZTA reference data and methodologies trough a RESTful API
GNU Affero General Public License v3.0
66 stars 23 forks source link

Die size for zen CPU seems wrong to me #154

Closed ggael closed 9 months ago

ggael commented 1 year ago

I think there is a misinterpretation of the data reported by this page for the zen2 & zen3 CPU families. Those chips are made of multiple dies, a few CCD (Compute Complex Die) and one big I/O Die (416mm^2 @12nm). One CCD can include up to 8 cores, and up to 8 CCD per chip. Some examples:

- n CCD core/CCD die_size core_units die_size_per_core I/O diesize
72F3 8 1 1064 8 133 416
7543 8 4 1064 32 33 416 https://www.techpowerup.com/cpu-specs/epyc-7543.c2379
7373 8 2 1064 16 67 416 https://www.techpowerup.com/cpu-specs/epyc-7373x.c2762
7313 4 4 740 16 46 416 https://www.techpowerup.com/cpu-specs/epyc-7313.c2389
7663 8 7 1064 56 19 416 https://www.techpowerup.com/cpu-specs/epyc-7663.c2376
7763 8 8 1064 64 17 416 https://www.techpowerup.com/cpu-specs/epyc-7763.c2373

As you can, depending on actual the configuration, two configs having the same number of cors can have a different the die_size_per_core.

da-ekchajzer commented 1 year ago

Thank you for your bug report.

I have seen that there was an issue with AMD data when reviewing the data for next version. If you look at the dev branch file, I have come up with new data (https://github.com/Boavizta/boaviztapi/blob/dev/boaviztapi/data/components/cpu_manufacture.csv).

Amd zen2 2019 7 13.09 16 0.82 https://www.techarp.com/computer/amd-zen-3-tech-report/ (74mm2*core_units+125mm2)
Amd zen2 2019 7 10.13 12 0.84 https://www.techarp.com/computer/amd-zen-3-tech-report/ (74mm2*core_units+125mm2)
Amd zen2 2019 7 7.17 8 0.90 https://www.techarp.com/computer/amd-zen-3-tech-report/ (74mm2*core_units+125mm2)
Amd zen2 2019 7 5.69 6 0.95 https://www.techarp.com/computer/amd-zen-3-tech-report/ (74mm2*core_units+125mm2)
Amd zen3 2020 7 14.162 16 0.89 https://www.techarp.com/computer/amd-zen-3-tech-report/ (80.7mm2*core_units+125mm2)
Amd zen3 2020 7 10.934 12 0.91 https://www.techarp.com/computer/amd-zen-3-tech-report/ (80.7mm2*core_units+125mm2)
Amd zen3 2020 7 7.706 8 0.96 https://www.techarp.com/computer/amd-zen-3-tech-report/ (80.7mm2*core_units+125mm2)
Amd zen3 2020 7 6.092 6 1.02 https://www.techarp.com/computer/amd-zen-3-tech-report/ (80.7mm2*core_units+125mm2)

Screenshot_20230304_163319 https://www.techarp.com/computer/amd-zen-3-tech-report/

But from what I think you're saying, it is still not right :

Could you comment on those elements ?

ggael commented 1 year ago

Right, I think your source is for Ryzen proc, hence the huge difference for the IOD sizes.

However, neither nb_cores_per_CCD nor nb_CCD (=nb_cores/nb_cores_per_CCD) are known by the user. On the user side, the "simplest" would be to provide the actual CPU name.

I'm also unsure whether the current formula still stands for such multi-die CPUs (with multi-process sizes), and the production process size should probably also be taken into account since it is pretty clear that energy intensity is increasing with smaller process, but that's another topic !

da-ekchajzer commented 1 year ago

Thank you, it is clearer to me.

For now, we don't use different impact factors for different process. If you know any data that could help us to achieve this, you can discuss it here : https://github.com/Boavizta/boaviztapi/issues/135. However, the fix should allow the evaluation of multi-die CPUs for future version.

If we want to have a similar process for AMD and Intel, I believe that we should have a variable and fix die size fore each family :

Both nb_CCD and nb_core for each CPU name should be pre-recorded in the CPU file (https://github.com/Boavizta/boaviztapi/blob/main/boaviztapi/data/components/cpu_index.csv).

By doing so, users who want to compute data with custom nb_core or nb_CCD will be able to do so and user who only have their CPU won't have to know this information (complete for cpu file).

The main challenge is to get info on AMD and Intel CPU. We already have the sources, but we might need to develop a parser to get the data :

Does this solution make sense to you ?

da-ekchajzer commented 9 months ago

@ggael this bug should be fixed in the dev version thanks to our new approach on die completion. We now use this cpu_spec file : https://github.com/Boavizta/boaviztapi/blob/dev/boaviztapi/data/crowdsourcing/cpu_specs.csv to infer the die_sie.

If a specific CPU is not available in the file, we infer its die_size from available CPUs of the same family and/or number of cores.