我使用的是基于相当旧的Freescale ARM芯片的嵌入式Linux主板.如何确定Python解释器是否使用芯片上的硬件FPU?
我的/ proc / cpuinfo是:
Processor : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 179.81
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 5
解决方法:
在从ARMv4到ARMv7的ARM世界中,浮点支持称为VFP,并且它的硬件支持出现在/ proc / cpuinfo的Features行中或内核在引导时打印的VFP支持日志消息中. (在ARMv8中,它只是“FP”.)
在Allwinner A20的/ proc / cpuinfo中,这给出了:
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发行版的体系结构.如果我理解正确,基本的Debian armel将不会使用FPU,Debian armhf(和Raspbian armhf)会;较旧的Debian arm变体使用FPU指令,但如果硬件不支持它们则会模拟它们.在armel上,您可以安装具有FPU支持的内核或C库(尽管Debian存档中似乎没有这样的C库).
标签:linux,floating-point,arm
来源: https://codeday.me/bug/20190810/1637055.html