Package: cpufeature
CPUFeatureCPUFeature is a tool for detecting CPU features on x86/AMD64 processors. In particular it is engineered to have very low overhead on import (~ 1 ms) and to detect features that are often important in high-performance computing where hybrid combinations of multi-threading and multi-processing are used. Detects CPU features such as:SIMD instruction supportNumber of cores (both virtual and physical)Number of CPUs on the motherboard.Cache sizesIt is written in C99. It supports Windows with MSVC and Linux with GCC/LLVM compilers. MacOSX should also work with GCC/LLVM. CPUFeature is licensed under Creative Commons Zero, so it may be freely incorporated as a submodule into your own projects.CPUFeature is considered to be in an alpha state because while it is tested via GitHub Actions on a variety of platforms, we expect edge cases to appear.ExampleThe module generates adictcalledCPUFeatureon 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
      num_cpus                : 1
      cache_line_size         : 64
      cache_L1_size           : 32768
      cache_L2_size           : 1048576
      cache_L3_size           : 11534336
      OS_x64                  : True
      OS_AVX                  : True
      OS_AVX512               : True
      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
      AVX512vbmi2             : False
      AVX512vnni              : FalseNotes on FieldsIfnum_threads_per_core > 1likely Intel Hyperthreading (or equivalent architecture) is present. The physical core count may be unreliable in virtual environments.Cache sizes are in bytes.For AVX2, checkAVX2andOS_AVX2.For AVX512, checkAVX512fandOS_AVX512. Python support for AVX512 instructions is highly limited outside of compilation with ICC. MSVC does not have AVX512 support until MSVC2017.AuthorsBased 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.drfinkuscontributed to AMD support.WidgetAcontributed support for compilation with Clang.Release Notes0.2.1Supported Python versions are now 3.8 - 3.11.Added tests for AVX512vbmi2 and AVX512vnni.0.2.0Added pre-build wheels viacibuildwheelsand GitHub Actions for Python 3.6-3.9 on Linux/Windows/MacOSX.Added support for AMD processors.Added a script forvalgrindto more easier locate problems when the module crashes.0.1.1Fixes for compilation withclang.0.1.0Added detection of processors, cores, and cache sizesCreated Python wrapper around FeatureDetectorReduced FeatureDetector to C99 for better cross-platform compatibility