numpy - numpy 是否自动针对 raspberry-pi 进行了优化

标签 numpy optimization raspberry-pi arm neon

Raspberry Pi(armv7l 架构)具有可用于优化的 neon vfpv4 支持。

numpy的标准版本在安装命令pip3 install numpy时是否包括这些优化?或 apt-get python3-numpy ?

我不是在谈论 blas 和 lapack。原生 NumPy 。

最佳答案

正如 Mark Setchell 所指出的,numpy似乎没有针对 NEON 内在函数的特定代码。然而,这还不是全部。现代编译器经常能够采用串行编写的代码并将其转换为使用 SIMD 内在函数。例如,GCC 可以部分展开循环并使用 NEON 的 SIMD 指令同时执行多次循环迭代。

接下来要注意的是pip installapt-get install会做不同的事情。 apt-get将从 Raspbian/Debian 存储库中获取预构建的二进制文件(取决于您使用的是哪个)。而pip只能获取numpy的来源在 ARM 架构上。这是因为 Python Package Index (PyPI) 不存储 ARM 架构的二进制文件。

Debian 和 Raspbian 似乎都有 armhf python3-numpy 的版本在他们的存储库中。 hf代表“硬浮点”——在硬件而不是软件中完成的浮点计算。此 debian page似乎也暗示 armhf已编译包以利用 NEON 内在函数,但结果有限。也就是说,GCC 正在使用 NEON 内在函数,但还没有像使用 SSE/SSE2 内在函数时那样精细调整(还)。
pip在这种情况下将是更糟糕的选择,因为 GCC 在针对 ARM 浮点指令时似乎有点谨慎。也就是说,pip 将下载 numpy 源代码并在您的 Raspberry Pi 上编译它,但可能不会像默认情况下那样优化代码。您可能需要通过 --global-option 告诉 pip 使用一些编译器选项。争论。例如 --global-option="-mfloat-abi=hard" .您可以找到一套全面的选项来通过 here .

关于numpy - numpy 是否自动针对 raspberry-pi 进行了优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52161063/

相关文章:

python - 在 Raspberry 上使用 python 读取原始以太网数据包

python - Numpy 随机选择生成具有所有唯一值的二维数组

python - 使用 PuLP 进行线性优化,变量附加条件

php - MySQL 获取一个选择,如果不可用则获取其他

c++ - 三元运算符 vs if 语句 : compiler optimization

树莓派上的 Scala Web 框架性能

python - 用kivy按下按钮时如何更改空格?

numpy - np.zeros(dim,1) 给出不理解的数据类型

python - mpmath 中的 mpf 是什么意思?

python - Pandas 根据列 dtypes 进行应用