跳转到主要内容

Python CPU功能检测

项目描述

CPUFeature

CPUFeature 是一个用于检测 x86/AMD64 处理器上 CPU 功能的工具。特别设计为在导入时具有非常低的开销(约 1 毫秒)并检测在混合使用多线程和多进程的高性能计算中经常重要的功能。检测到的 CPU 功能包括

  • SIMD 指令支持
  • 核心数量(虚拟和物理核心)
  • 主板上的 CPU 数量。
  • 缓存大小

它使用 C99 编写。它支持 Windows 上的 MSVC 和 Linux 上的 GCC/LLVM 编译器。MacOSX 应该也支持 GCC/LLVM。CPUFeature 在 Creative Commons Zero 下授权,因此可以自由地将其作为子模块纳入您的项目。

CPUFeature 被认为是 Alpha 状态,因为在 GitHub Actions 上对各种平台进行了测试,但我们预计会出现边缘情况。

示例

该模块在导入时生成一个名为 CPUFeature 的字典,其中包含有关宿主机的优化和编译的有用信息。对于我的 Intel i7-7820X Skylake CPU,它生成以下信息

    > 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              : False

字段说明

  • 如果 num_threads_per_core > 1,则可能存在 Intel Hyperthreading(或等效架构)。在虚拟环境中,物理核心数量可能不可靠。
  • 缓存大小以字节为单位。
  • 对于 AVX2,请检查 AVX2OS_AVX2
  • 对于AVX512,请检查AVX512fOS_AVX512。在ICC编译之外,Python对AVX512指令的支持非常有限。直到MSVC2017,MSVC都没有AVX512支持。

作者

  • 基于Alexander Yee的FeatureDetector(https://github.com/Mysticial/FeatureDetector)。
  • 由Robert A. McLeod移植到Python,并增加了核心和缓存大小的检测。
  • drfinkus为AMD支持做出了贡献。
  • WidgetA为使用Clang编译提供了支持。

发行说明

0.2.1

  • 支持的Python版本现在为3.8 - 3.11。
  • 添加了AVX512vbmi2和AVX512vnni的测试。

0.2.0

  • 通过cibuildwheels和GitHub Actions添加了预构建的轮子,适用于Linux/Windows/MacOSX上的Python 3.6-3.9。
  • 添加了对AMD处理器的支持。
  • 添加了一个用于valgrind的脚本,以在模块崩溃时更容易地定位问题。

0.1.1

  • 针对clang编译的修复。

0.1.0

  • 添加了对处理器、核心和缓存大小的检测
  • 创建了FeatureDetector的Python包装器
  • 将FeatureDetector转换为C99,以获得更好的跨平台兼容性

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源代码发行版

cpufeature-0.2.1.tar.gz (15.0 kB 查看散列)

上传时间 源代码

构建发行版

cpufeature-0.2.1-cp311-cp311-win_amd64.whl (15.2 kB 查看散列)

上传时间 CPython 3.11 Windows x86-64

cpufeature-0.2.1-cp311-cp311-win32.whl (14.4 kB 查看散列)

上传时间 CPython 3.11 Windows x86

cpufeature-0.2.1-cp311-cp311-musllinux_1_1_x86_64.whl (30.1 kB 查看散列)

上传时间 CPython 3.11 musllinux: musl 1.1+ x86-64

cpufeature-0.2.1-cp311-cp311-musllinux_1_1_i686.whl (29.0 kB 查看散列)

上传时间 CPython 3.11 musllinux: musl 1.1+ i686

cpufeature-0.2.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.1 kB 查看散列)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

cpufeature-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (23.9 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cpufeature-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl (12.3 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

cpufeature-0.2.1-cp310-cp310-win_amd64.whl (15.2 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

cpufeature-0.2.1-cp310-cp310-win32.whl (14.4 kB 查看哈希值)

上传于 CPython 3.10 Windows x86

cpufeature-0.2.1-cp310-cp310-musllinux_1_1_x86_64.whl (29.2 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ x86-64

cpufeature-0.2.1-cp310-cp310-musllinux_1_1_i686.whl (28.2 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ i686

cpufeature-0.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.1 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

cpufeature-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (23.8 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cpufeature-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl (12.3 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

cpufeature-0.2.1-cp39-cp39-win_amd64.whl (15.2 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

cpufeature-0.2.1-cp39-cp39-win32.whl (14.4 kB 查看哈希值)

上传于 CPython 3.9 Windows x86

cpufeature-0.2.1-cp39-cp39-musllinux_1_1_x86_64.whl (29.0 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.1+ x86-64

cpufeature-0.2.1-cp39-cp39-musllinux_1_1_i686.whl (28.0 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.1+ i686

cpufeature-0.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (24.9 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

cpufeature-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (23.7 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cpufeature-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl (12.2 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

cpufeature-0.2.1-cp38-cp38-win_amd64.whl (15.2 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

cpufeature-0.2.1-cp38-cp38-win32.whl (14.4 kB 查看哈希值)

上传于 CPython 3.8 Windows x86

cpufeature-0.2.1-cp38-cp38-musllinux_1_1_x86_64.whl (29.2 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

cpufeature-0.2.1-cp38-cp38-musllinux_1_1_i686.whl (28.2 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ i686

cpufeature-0.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.1 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

cpufeature-0.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (23.9 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cpufeature-0.2.1-cp38-cp38-macosx_10_9_x86_64.whl (12.2 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

由以下支持