问题类型
构建/安装
你是否在TF nightly版本中复现了这个bug?
否
来源
源代码
Tensorflow版本
2.12.0
自定义代码
无
OS平台和发行版
Linux Raspberrypi OS 32位(Debian bullseye)
移动设备
树莓派Zero W
Python版本
3.9.2
Bazel版本
cmake 3.18.4
GCC/编译器版本
GNU c++ (Raspbian 10.2.1-6+rpi1) 10.2.1 20210110
CUDA/cuDNN版本
NA
GPU型号和内存
NA
当前行为?
树莓派Zero/Zero W的tf-lite构建指令表示以下内容应作为CFLAGS/CXXFLAGS的一部分:-march=armv6 -mfpu=vfp -mfloat-abi=hard -funsafe-math-optimizations
根据xxnpack的README,XNNPACK支持在armv6上运行,该设备为树莓派Zero W。然而,所有针对树莓派Zero的构建指令都明确禁用了xnnpack。鉴于xnnpack文档中对rpi0的支持,我尝试使用启用了xnnpack的tf-lite进行构建。
当启用xnnpack子构建时,会在xnnpack子构建过程中向编译器调用添加以下冲突的CFLAGS:-marm -march=armv8.2-a+dotprod -mfpu=neon-fp-armv8
请扩展cmake和构建指令,以允许tf-lite在使用启用了xnnpack的树莓派Zero/Zero W正确构建。
5条答案
按热度按时间iibxawm41#
你好,@samveen
根据TFLite文档,ARMv6不支持XNNPACK,因为没有NEON支持。
你是否观察到了与README中建议的
-mfpu=vfpv2
相同的行为?谢谢。
pcww981p2#
从日志输出中可以看出,无论用户为
-march
和-mfpu
提供的值是什么,tflite 与 XNNPACK 的构建集成都会将-march=armv8.2-a+dotprod -mfpu=neon-fp-armv8
添加到 XNNPACK 的构建标志中。从 XNNPACK 的 readme 中可以看出,XNNPACK 有一部分是适用于树莓派 Zero/Zero W 的。然而,不清楚的是 tflite 在为 Zero/Zero W 构建时是否可以使用那部分 XNNPACK。
我会尝试按照说明在树莓派 Zero 上构建 XNNPACK,并在构建状态方面回复您。
2mbi3lxu3#
bash ./scripts/build-local.sh -DXNNPACK_ENABLE_ARM_DOTPROD:BOOL=OFF
XNNPACK_ENABLE_ARM_DOTPROD:BOOL=OFF
FP32 MobileNet v3 Large
的第3个测试,这让我相信它可能陷入了困境,而不是花费时间(Zero/Zero W上的预期时间比FP32 MobileNet v2 1.0X
少,后者不到3秒就完成了)roejwanj4#
感谢您提供的信息。
萨姆维恩,您能调查一下这个问题吗?
谢谢。
mepcadol5#
@pjpratik@sachinprasadhs 我针对XNNPACK创建了一个问题,其中包含了关于RPi0构建的更多详细信息 - google/XNNPACK#4701 ,给出了我遇到的问题、我遵循的构建过程以及我的本地构建环境的详细信息。希望这应该能提供更多关于底层问题的洞察力。