Python CPU Feature Detection
Project description
cpufeature
==========
Prototype of replacement for `cpuinfo.py` for high-performance Python modules.
Detects CPU features such as:
* SIMD instruction support
* Number of cores (both virtual and physical)
* Cache sizes
It is fast, with an import+execution time of ~1 ms
It is written in C99. It supports Windows with MSVC and Linux with GCC/LLVM
compilers. MacOSX should also work with GCC/LLVM but has not been tested.
It is licensed under Creative Commons Zero, so it may be freely incorporated
as a submodule into your own projects.
It needs to be tested on a variety of machines.
Example
-------
The module generates a `dict` called `CPUFeature` on import which contains
useful information regarding optimization and compilation for the host.
For my Intel i7-7820X Skylake CPU, it generates the following info:
> python -c "import cpufeature; cpufeature.print_features()"
=== CPU FEATURES ===
VendorId : GenuineIntel
num_virtual_cores : 16
num_physical_cores : 8
num_threads_per_core : 2
cache_line_size : 64
cache_L1_size : 32768
cache_L2_size : 1048576
cache_L3_size : 11534336
OS_x64 : True
OS_AVX : True
OS_AVX512 : False
MMX : True
x64 : True
ABM : True
RDRAND : True
BMI1 : True
BMI2 : True
ADX : True
PREFETCHWT1 : False
MPX : True
SSE : True
SSE2 : True
SSE3 : True
SSSE3 : True
SSE4.1 : True
SSE4.2 : True
SSE4.a : False
AES : True
SHA : False
AVX : True
XOP : False
FMA3 : True
FMA4 : False
AVX2 : True
AVX512f : True
AVX512pf : False
AVX512er : False
AVX512cd : True
AVX512vl : True
AVX512bw : True
AVX512dq : True
AVX512ifma : False
AVX512vbmi : False
Notes on Fields
---------------
* If `num_threads_per_core > 1` likely Intel Hyperthreading (or equivalent
architecture) is present. The physical core count may be unreliable in
virtual environments.
* Cache sizes are in bytes.
* For AVX2, check `AVX2` and `OS_AVX2`.
* For AVX512, check `AVX512f` and `OS_AVX512`. Python support for AVX512
instructions is highly limited outside of compilation with ICC. MSVC does not
have AVX512 support until MSVC2017.
Authors
-------
* Based on FeatureDetector by Alexander Yee (https://github.com/Mysticial/FeatureDetector).
* Ported to Python by Robert A. McLeod, who added detection of cores, and cache
sizes.
Release Notes
-------------
**0.1.0**
* Added detection of processors, cores, and cache sizes
* Created Python wrapper around FeatureDetector
* Reduced FeatureDetector to C99 for better cross-platform compatibility
==========
Prototype of replacement for `cpuinfo.py` for high-performance Python modules.
Detects CPU features such as:
* SIMD instruction support
* Number of cores (both virtual and physical)
* Cache sizes
It is fast, with an import+execution time of ~1 ms
It is written in C99. It supports Windows with MSVC and Linux with GCC/LLVM
compilers. MacOSX should also work with GCC/LLVM but has not been tested.
It is licensed under Creative Commons Zero, so it may be freely incorporated
as a submodule into your own projects.
It needs to be tested on a variety of machines.
Example
-------
The module generates a `dict` called `CPUFeature` on import which contains
useful information regarding optimization and compilation for the host.
For my Intel i7-7820X Skylake CPU, it generates the following info:
> python -c "import cpufeature; cpufeature.print_features()"
=== CPU FEATURES ===
VendorId : GenuineIntel
num_virtual_cores : 16
num_physical_cores : 8
num_threads_per_core : 2
cache_line_size : 64
cache_L1_size : 32768
cache_L2_size : 1048576
cache_L3_size : 11534336
OS_x64 : True
OS_AVX : True
OS_AVX512 : False
MMX : True
x64 : True
ABM : True
RDRAND : True
BMI1 : True
BMI2 : True
ADX : True
PREFETCHWT1 : False
MPX : True
SSE : True
SSE2 : True
SSE3 : True
SSSE3 : True
SSE4.1 : True
SSE4.2 : True
SSE4.a : False
AES : True
SHA : False
AVX : True
XOP : False
FMA3 : True
FMA4 : False
AVX2 : True
AVX512f : True
AVX512pf : False
AVX512er : False
AVX512cd : True
AVX512vl : True
AVX512bw : True
AVX512dq : True
AVX512ifma : False
AVX512vbmi : False
Notes on Fields
---------------
* If `num_threads_per_core > 1` likely Intel Hyperthreading (or equivalent
architecture) is present. The physical core count may be unreliable in
virtual environments.
* Cache sizes are in bytes.
* For AVX2, check `AVX2` and `OS_AVX2`.
* For AVX512, check `AVX512f` and `OS_AVX512`. Python support for AVX512
instructions is highly limited outside of compilation with ICC. MSVC does not
have AVX512 support until MSVC2017.
Authors
-------
* Based on FeatureDetector by Alexander Yee (https://github.com/Mysticial/FeatureDetector).
* Ported to Python by Robert A. McLeod, who added detection of cores, and cache
sizes.
Release Notes
-------------
**0.1.0**
* Added detection of processors, cores, and cache sizes
* Created Python wrapper around FeatureDetector
* Reduced FeatureDetector to C99 for better cross-platform compatibility
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cpufeature-0.1.0.tar.gz
(11.6 kB
view details)
Built Distribution
File details
Details for the file cpufeature-0.1.0.tar.gz
.
File metadata
- Download URL: cpufeature-0.1.0.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27333d62d0b715130d1790828a4041ea1beba350839284b61c01eff73086b4a9 |
|
MD5 | cf13c306140e13468e7b6b3b97794eeb |
|
BLAKE2b-256 | 06c8fbd68f2a6dd70abad8e05fc5b0a062e3aaa9d00cc3d00b16818df0d5e087 |
File details
Details for the file cpufeature-0.1.0-cp36-cp36m-win_amd64.whl
.
File metadata
- Download URL: cpufeature-0.1.0-cp36-cp36m-win_amd64.whl
- Upload date:
- Size: 14.5 kB
- Tags: CPython 3.6m, Windows x86-64
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8eba4807020a81dadc89af87729dc594487714dffd2c9e94a474bcf05a2afbf |
|
MD5 | 278a89cfcaa8ef49bb6874f28755709c |
|
BLAKE2b-256 | 0f853e37797661785e40daad73f2a2e0fa120413cc61725d7dcd44e857e47ecb |