Note |
---|
In progress… |
https://github.com/pytorch/cpuinfo#cpu-information-library
Table of Contents | ||||||
---|---|---|---|---|---|---|
|
Information is needed by cpu info
Concept
Data representation
Information is available through MSDN API
Concept
Data representation
Background:
https://docs.microsoft.com/en-us/windows/win32/procthread/processor-groups
Logical processor
one logical computing engine from the perspective of the operating system, application or driver
Core
one processor unit, which can consist of one or more logical processors
Physical processor
A physical processor is the same as a processor package, a socket, or a CPU.
can consist of one or more cores
Concerns
Cluster as a missing entity on x86 (respectively on Windows)
Current implementations of x86 Windows and MacOS set cluster count (per package) to fixed 1.
CPU Info fills 3 container layers (package, cluster, core), but queries only 2:
RelationProcessorPackage
RelationProcessorCore
Cluster on Arm-Linux, the cluster count is detected
The higher level of ProcessorPackage in MSDN API is ProcessorGroup, but (looks like) it’s not equal to cluster.
cpuinfo reporting demo tool doesn’t report the number of clusters: https://github.com/pytorch/cpuinfo/blob/master/tools/cpu-info.c
Missing topology APIs for Arm on Windows
Get vendor and SoC name
wmic overhead
Read MIDRRegistry
Code Block |
---|
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
https://docs.microsoft.com/en-us/windows/win32/wmisdk/example-creating-a-wmi-application
Code Block |
---|
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 works on running core
big - little topology per core: uarch in cpuinfo
EfficiencyClass can mean bigger numbers are big cores while the rest little cores, but doesn’t guarantee
PROCESSOR_RELATIONSHIP (winnt.h) - Win32 apps | Microsoft Docs