BenchmarkDotNet
BenchmarkDotNet copied to clipboard
Processor model is not detected on Azure arm64
When I run any benchmark on Azure ARM64, it reports
BenchmarkDotNet v0.13.12, Ubuntu 22.04.4 LTS (Jammy Jellyfish)
Unknown processor
E.g. https://github.com/dotnet/runtime/pull/102705#issuecomment-2132450520
cat /proc/cpuinfo (which BDN uses) outputs:
$ cat /proc/cpuinfo
processor : 0
BogoMIPS : 50.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x3
CPU part : 0xd0c
CPU revision : 1
processor : 1
BogoMIPS : 50.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x3
CPU part : 0xd0c
CPU revision : 1
...
and lscpu is:
$ lscpu
Architecture: aarch64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-N1
Model: 1
Thread(s) per core: 1
Core(s) per socket: 16
Socket(s): 1
Stepping: r3p1
BogoMIPS: 50.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
So at least Neoverse-N1, 16 cores would be better than Unknown processor.
From my understanding, on Azure we have
- Neoverse-N1 (Ampere Altra)
- Neoverse-N2 (Cobalt 100) (e.g. this is how it's recognized in LLVM)
I'll try to implement it myself if nobody grabs it 🙂
I'll try to implement it myself if nobody grabs it
I am afraid that others might not be able to test this particular case easily. Should I just assign you? ;)
I'll try to implement it myself if nobody grabs it
I am afraid that others might not be able to test this particular case easily. Should I just assign you? ;)
Sure, please do 🙂
@EgorBo should be fixed now. Could you please try 0.14.1-nightly.20240826.175 and check if it correctly detects Neoverse-N1?
@EgorBo should be fixed now. Could you please try
0.14.1-nightly.20240826.175and check if it correctly detectsNeoverse-N1?
Just checked:
// * Summary *
BenchmarkDotNet v0.14.1-nightly.20240826.175, Ubuntu 24.04 LTS (Noble Numbat)
Neoverse-N1, 16 physical cores
.NET SDK 9.0.100-preview.7.24407.12
[Host] : .NET 9.0.0 (9.0.24.40507), Arm64 RyuJIT AdvSIMD
Job-FPTMIV : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
Thanks!! Will check on N2 later as well
Today I learned that the lscpu output repsects the system language[^1][^2]. Thus, the current parsing logic will fail to detect Model name on systems with non-English locale. One more fix with language-invariant lscpu call is coming.
[^1]: Linux: Set language to default for console or scripts (2015-09-17) by Nerd Admin [^2]: nicolargo/glances#2616: "Raspberry PI - CPU info is not correct"
@EgorBo, 0.14.1-nightly.20240826.177 contains the language-invariant fix.