[BUG]Is Intel EmeraldRapide INTEL(R) XEON(R) GOLD 6530 supported Uncore ?
Closed this issue · 7 comments
Describe the bug
A clear and concise description of what the bug is.
I used likwid-perfctr on an INTEL(R) XEON(R) GOLD 6530 server to measure the memory bandwidth of the STREAM program. After execution, the following error was reported:
ERROR - [../intel_perfmon_uncore_discovery.c:perfmon_uncore_discovery:378] No such file or directory.
Uncore discovery not supported for model 0xCF
Ultimately, the memory bandwidth was displayed as all zeros.
+----------------------------------------+-------------+-----------+-----------+-----------+
| Metric | Sum | Min | Max | Avg |
+----------------------------------------+-------------+-----------+-----------+-----------+
| Runtime (RDTSC) [s] STAT | 345.0624 | 2.6958 | 2.6958 | 2.6958 |
| Runtime unhalted [s] STAT | 354.0985 | 2.5393 | 2.9811 | 2.7664 |
| Clock [MHz] STAT | 344858.6085 | 2694.1050 | 2694.3861 | 2694.2079 |
| CPI STAT | 431.0059 | 1.9872 | 3.4262 | 3.3672 |
| Memory read bandwidth [MBytes/s] STAT | 0 | 0 | 0 | 0 |
| Memory read data volume [GBytes] STAT | 0 | 0 | 0 | 0 |
| Memory write bandwidth [MBytes/s] STAT | 0 | 0 | 0 | 0 |
| Memory write data volume [GBytes] STAT | 0 | 0 | 0 | 0 |
| Memory bandwidth [MBytes/s] STAT | 0 | 0 | 0 | 0 |
| Memory data volume [GBytes] STAT | 0 | 0 | 0 | 0 |
+----------------------------------------+-------------+-----------+-----------+-----------+
To Reproduce
- LIKWID command and/or API usage
likwid-perfctr -V 3 -g MEM ./stream_c.exe - LIKWID version and download source (Github, FTP, package manger, ...)
github master branch - Operating system
ISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS"
PRETTY_NAME="Ubuntu 22.04.5 LTS" - CPU
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 52 bits physical, 57 bits virtual
Byte Order: Little Endian
CPU(s): 128
On-line CPU(s) list: 0-127
Vendor ID: GenuineIntel
Model name: INTEL(R) XEON(R) GOLD 6530
CPU family: 6
Model: 207
Thread(s) per core: 2
Core(s) per socket: 32
Socket(s): 2
Stepping: 2
Frequency boost: enabled
CPU max MHz: 4001.0000
CPU min MHz: 4000.0000
BogoMIPS: 4200.00 - Does your application use libraries like MPI, OpenMP or Pthreads?
No - In case of Nvidia GPUs, which CUDA version?
No - Are you using the MarkerAPI (CPU code instrumentation) or the NvMarkerAPI (Nvidia GPU code instrumentation)?
No
To Reproduce with a LIKWID command
Please supply the output of the command with -V 3 added to the command:
likwid-perfctr -V 3 -g MEM ./stream_c.exe
Additional context
From the error message, I found that EMERALDRAPIDS was missing in the src/intel_perfmon_uncore_discovery.c file. I attempted a fix with the following changes:
diff.log
Are these modifications correct?
The modifications seem reasonable but I cannot test it and it is unclear to me whether the memory controllers are provided through the the uncore discovery. In contrast to SPR and GNR, the registers of EMR are given in the documentation but not the Uncore discovery IDs (that's why it re-uses the SPR IDs at the moment). The only data for memory controllers maps them from MMIO. This code exists for ICX but not for SPR or GNR. Maybe I should try to get access to one.
The modifications seem reasonable but I cannot test it and it is unclear to me whether the memory controllers are provided through the the uncore discovery. In contrast to SPR and GNR, the registers of EMR are given in the documentation but not the Uncore discovery IDs (that's why it re-uses the SPR IDs at the moment). The only data for memory controllers maps them from MMIO. This code exists for ICX but not for SPR or GNR. Maybe I should try to get access to one.
Thank you for your response. Yesterday, I tested the modified code on an Intel(R) Xeon(R) Gold 6530, and the output results of likwid-perfctr were generally consistent with those of STREAM. I will conduct further verification today.
I modified the output of STREAM to include the total amount of data copied during the entire test, the overall test time, and the average bandwidth, for comparison with the results collected by likwid-perfctr -g MEM.
- exec command:time likwid-perfctr -g MEM ./stream_c.exe
- stream output data:
- likwid-perfctr output data:
The total amount of copied data matches closely. The bandwidth differs due to inconsistent measurement durations (STREAM measures the copy process, approximately 3 seconds, while likwid-perfctr measures the entire STREAM program runtime, including data copy and validation, approximately 3.8 seconds). The final results are generally consistent.
Thanks for the measurement. Looks good to me. Can you open a PR with your fixes?
Thanks for the measurement. Looks good to me. Can you open a PR with your fixes?
OK,I will open a PR with my fixes today.
Thx