Skip to main content

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


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)

Uploaded Source

Built Distribution

cpufeature-0.1.0-cp36-cp36m-win_amd64.whl (14.5 kB view details)

Uploaded CPython 3.6m Windows x86-64

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

Hashes for cpufeature-0.1.0.tar.gz
Algorithm Hash digest
SHA256 27333d62d0b715130d1790828a4041ea1beba350839284b61c01eff73086b4a9
MD5 cf13c306140e13468e7b6b3b97794eeb
BLAKE2b-256 06c8fbd68f2a6dd70abad8e05fc5b0a062e3aaa9d00cc3d00b16818df0d5e087

See more details on using hashes here.

File details

Details for the file cpufeature-0.1.0-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for cpufeature-0.1.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 d8eba4807020a81dadc89af87729dc594487714dffd2c9e94a474bcf05a2afbf
MD5 278a89cfcaa8ef49bb6874f28755709c
BLAKE2b-256 0f853e37797661785e40daad73f2a2e0fa120413cc61725d7dcd44e857e47ecb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page