我使用的是基于相当旧的 Freescale ARM 芯片的嵌入式 Linux 板。如何判断Python解释器是否使用芯片上的硬件FPU?
我的 /proc/cpuinfo 是:
处理器:ARM926EJ-S 修订版 5 (v5l) 博戈MIPS:179.81 特点:swp halfthumb fastmult edsp java CPU实施者:0x41 CPU架构:5TEJ CPU 版本:0x0 CPU部分:0x926 CPU版本:5
答案1
在 ARM 世界中,从 ARMv4 到 ARMv7 浮点支持称为VFP,并且对它的硬件支持出现在引导时内核打印的Features
行/proc/cpuinfo
或日志消息中。 VFP support
(在 ARMv8 中只是“FP”。)
在/proc/cpuinfo
Allwinner A20 上,这给出了:
Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
(查看各种vfp
功能)并在启动日志中:
VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 4
如果 VFP 不完全支持,内核将改为记录
VFP support v0.3: not present
或者
VFP support v0.3: no double precision support
至于您的 Python 解释器是否能够使用它,似乎主要取决于您的 ARM Linux 发行版的体系结构。如果我理解正确的话,基本的 Debianarmel
不会使用 FPU,Debian armhf
(和 Raspbian armhf
)会;较旧的 Debianarm
变体使用 FPU 指令,但如果硬件不支持它们,则会模拟这些指令。您armel
可以安装支持 FPU 的内核或 C 库(尽管 Debian 档案中似乎没有此类 C 库)。
答案2
尝试
awk '$1 == "fpu" { print $3 ; }' /proc/cpuinfo
这给了
yes
yes
你不能用
awk '$1 == "fpu" { print $3 ; exit ;}' /proc/cpuinfo
只有一个是的。
仅仅 grep 就会产生(标志行缩写)
fpu : yes
fpu_exception : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtr ...
fpu : yes
fpu_exception : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtr ...
不幸的是,我没有 FPU less linux 来进行测试,也许是 rapsberry 所有者?