编译TensorFlow Lite适配RISC-V CVA6时AVX指令报错的解决咨询
解决RISC-V工具链编译TensorFlow Lite时AVX指令选项报错的问题
问题原因
报错来自TensorFlow Lite依赖的ruy矩阵乘库——它默认会尝试编译针对x86架构的AVX优化代码路径,但你的RISC-V工具链不识别这些x86专属的-mavx2、-mavx512f等编译选项,因此触发错误。
解决方案
通过添加CMake参数禁用ruy的x86优化,并明确指定RISC-V目标架构,即可规避该问题:
修改后的完整编译命令
mkdir minimal_build cd minimal_build RISCVCC_PREFIX=$HOME/toolchains/riscv/bin/riscv64-unknown-linux-gnu- cmake -DCMAKE_C_COMPILER=${RISCVCC_PREFIX}gcc \ -DCMAKE_CXX_COMPILER=${RISCVCC_PREFIX}g++ \ -DCMAKE_C_FLAGS="-march=rv64imac" \ -DCMAKE_CXX_FLAGS="-march=rv64imac" \ -DTFLITE_ENABLE_XNNPACK=OFF \ -DRUY_ENABLE_X86=OFF \ ../tensorflow/lite/ cmake --build . -j
参数说明
-DRUY_ENABLE_X86=OFF:直接禁用ruy库中所有x86架构相关的优化代码编译,彻底避免生成带AVX选项的编译任务。-DCMAKE_C_FLAGS="-march=rv64imac"和-DCMAKE_CXX_FLAGS="-march=rv64imac":强制编译器生成适配RV64IMAC指令集的代码(对应你的CVA6核心支持的I/M/A/C扩展),覆盖可能的自动指令集检测错误。-DTFLITE_ENABLE_XNNPACK=OFF:保留你原有的设置,因为XNNPACK主要针对x86/ARM优化,对RISC-V支持不完善。
额外排查
如果仍有类似报错,可尝试添加-DTFLITE_DISABLE_X86_NEON=ON参数,进一步禁用TFLite中x86相关的优化逻辑。
内容的提问来源于stack exchange,提问作者Clark
相关产品推荐
相关产品推荐

