Raspberry Pi(armv7l 架构)具有 neon vfpv4 支持,可用于优化。
标准版numpy在安装命令时是否包含这些优化pip3 install numpy
or apt-get python3-numpy
?
我不是在谈论 blas 和 lapack。原生 numpy.
正如马克·塞切尔指出的那样,numpy
似乎没有针对 NEON 内在函数的特定代码。然而,这还不是故事的全部。现代编译器通常能够采用串行编写的代码并将其转换为使用 SIMD 内在函数。例如,GCC 可以部分展开循环并使用 NEON 的 SIMD 指令同时执行循环的多次迭代。
接下来要注意的是pip install
and apt-get install
会做不同的事情。apt-get
将从 Raspbian/Debian 存储库中获取预构建的二进制文件(取决于您使用的版本)。然而pip
只能获取源numpy
当在 ARM 架构上时。这是因为 Python 包索引 (PyPI) 不存储 ARM 架构的二进制文件。
Debian 和 Raspbian 似乎都有armhf
的版本python3-numpy
在他们的存储库中。这hf
代表“硬浮点”——在硬件而不是软件中完成的浮点计算。这Debian 页面似乎也表明armhf
已编译软件包以利用 NEON 内在函数,但结果有限。也就是说,GCC 使用 NEON 内在函数,但尚未像使用 SSE/SSE2 内在函数时那样进行微调。
pip
在这种情况下,这将是更糟糕的选择,因为看起来 GCC 在针对 ARM 浮点指令时有点谨慎。也就是说,pip 将下载 numpy 源代码并在您的 Raspberry Pi 上编译它,但可能不会像默认情况下那样优化代码。您可能需要告诉 pip 使用一些编译器选项--global-option
争论。例如--global-option="-mfloat-abi=hard"
。您可以找到一组全面的选项来通过here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)