cpuinfo - Pytorch

GitHub - pytorch/cpuinfo: CPU INFOrmation library (x86/x86-64/ARM/ARM64, Linux/Windows/Android/macOS/iOS)

Information is needed by cpu info

Concept

Data representation

 

Information is available through MSDN API

Concept

Data representation

 

Background:

Concerns

Cluster as a missing entity on x86 (respectively on Windows)

 

Missing topology APIs for Arm on Windows

Get vendor and SoC name

Registry

PS C:\kg\python_test\github_packages\cpuinfo> reg query HKLM\Hardware\Description\System\CentralProcessor\0 /v ProcessorNameString HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0 ProcessorNameString REG_SZ Microsoft SQ2 @ 3.15 GHz

wmic

It reads information about the currently used core only, no direct connection with system logical information reported processors.

Example: Creating a WMI Application - Win32 apps

wmic cpu list /format:list AddressWidth=64 Architecture=12 Availability=3 Caption=ARMv8 (64-bit) Family 8 Model 805 Revision D0E ConfigManagerErrorCode= ConfigManagerUserConfig= CpuStatus=1 CreationClassName=Win32_Processor CurrentClockSpeed=3148 CurrentVoltage=11 DataWidth=64 Description=ARMv8 (64-bit) Family 8 Model 805 Revision D0E DeviceID=CPU0 ErrorCleared= ErrorDescription= ExtClock= Family=280 InstallDate= L2CacheSize=1280 L2CacheSpeed= LastErrorCode= Level=2053 LoadPercentage=7 Manufacturer=Qualcomm Technologies Inc MaxClockSpeed=3148 Name=Microsoft SQ2 @ 3.15 GHz OtherFamilyDescription= PNPDeviceID= PowerManagementCapabilities= PowerManagementSupported=FALSE ProcessorId=0000000000000000 ProcessorType=3 Revision=3342 Role=CPU SocketDesignation=Qualcomm Status=OK StatusInfo=3 Stepping=14 SystemCreationClassName=Win32_ComputerSystem SystemName=040644303253 UniqueId= UpgradeMethod=6 Version=Model 13, Stepping 14 VoltageCaps=

Read MIDR

Not available in userspace in WoA

https://developer.arm.com/documentation/ddi0595/2021-06/AArch64-Registers/MIDR-EL1--Main-ID-Register

Get processor type per core

GetSystemInformation reports information on the currently used core only, so not system wide and no direct connection with system logical information reported processors.

big - little topology per core: uarch in cpuinfo

EfficiencyClass can mean bigger numbers are big cores while the rest are little cores currently. In the future it can be changed.

PROCESSOR_RELATIONSHIP (winnt.h) - Win32 apps | Microsoft Docs

Get Cache Partitions and Set

Cpuinfo would need cache partitions and sets, while these are not reported by CACHE_RELATIONSHIP (winnt.h) - Win32 apps

https://github.com/pytorch/cpuinfo/blob/master/include/cpuinfo.h#L101