You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows10下编译无AVX支持的TensorFlow 1.6+失败求助

解决TensorFlow-GPU 1.6+在不支持AVX的Xeon 5670上的编译问题

问题梳理

我太懂这种卡在编译环节的糟心感了:你用Windows 10系统,Xeon 5670 CPU不支持AVX指令集,而TensorFlow-GPU 1.6+预编译包默认带了AVX优化,直接用不了。目前你靠CUDA 9.1+CUDNN 7.1搭配1.5版本预编译包能正常跑,但自己用CMAKE或Bazel编译1.6+版本时接连踩坑——CMAKE报2个错误,Bazel也有1个错误。

核心解决思路:禁用AVX编译选项

问题根源就是编译时默认开启了你的CPU不支持的AVX指令集优化,只要手动强制关闭这些选项,就能绕过报错。下面分别给你Bazel和CMAKE的具体调整步骤:

1. Bazel编译调整(官方推荐方式)

Bazel是TensorFlow官方主推的编译工具,调整起来更直接:

  • 找到TensorFlow源码根目录,没有.bazelrc文件的话就新建一个
  • 往文件里添加以下配置,明确禁用AVX和AVX2:
    build --copt=-mno-avx
    build --copt=-mno-avx2
    build --config=cuda
    
  • 接着执行Windows环境下的标准编译命令:
    bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
    
  • 编译完成后,用生成的脚本打包成pip包,再安装到你的环境里就行

2. CMAKE编译调整

如果更习惯用CMAKE,那就在配置阶段手动加编译参数:

  • 打开CMAKE GUI,加载TensorFlow的源码目录和你指定的构建目录
  • CMAKE_CXX_FLAGSCMAKE_C_FLAGS这两个选项里,都加上-mno-avx -mno-avx2
  • 仔细核对CUDA 9.1和CUDNN 7.1的路径配置是否正确,别填错了
  • 重新生成构建文件后再尝试编译,这样就能跳过AVX相关的编译错误了

额外提醒

  • 虽然TensorFlow 1.6官方推荐用CUDA 9.0,但CUDA 9.1也能兼容,你要确保CUDNN版本和CUDA匹配(7.1对应9.1是没问题的)
  • 编译时尽量用Python 3.6,这是TensorFlow 1.6+稳定支持的版本,避免版本不兼容的问题;Windows下还要确保用的是Visual Studio 2017对应的编译器,老版本可能会出其他编译问题

内容的提问来源于stack exchange,提问作者Andrew

火山引擎 最新活动