从源代码构建 tensorflow - 缺少输入文件
Building tensorflow from source - missing input file
这里是新手,第一条消息:)
我需要在 windows 机器上使用 CUDA、AVX 和 SSE 的 tensorflow。据我了解,我需要自己构建它。我首先尝试使用 Anaconda,但它一团糟,所以我卸载了与 python 相关的所有内容,然后我开始逐步执行 the official guide
我使用了几个命令来构建,例如:
bazel build -c opt --copt=-march=native --copt=-mfpmath=both --config=cuda -k //tensorflow/tools/pip_package:build_pip_package
bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --config=cuda -k //tensorflow/tools/pip_package:build_pip_package
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
前两个命令来自 here,可能是旧的。
构建总是失败并显示此消息:
ERROR: missing input file 'external/llvm-project/mlir/include/mlir/Interfaces/SideEffectInterfaces.h', owner: '@llvm-project//mlir:include/mlir/Interfaces/SideEffectInterfaces.h'
有人知道这是怎么回事吗?
另外,在我使用的命令中,最好的构建命令是什么?
有什么方法可以将它安装在 windows 上的 Anaconda 中(具有 CUDA、avx 和 SSE 功能)?
在 windows 上构建 tensorflow 可能很困难,失败的原因有很多。该过程将根据您正在编译的版本而有所不同。在大多数情况下,如果逐字遵循,tensorflow 站点上的说明是正确的。我认为最棘手的部分是将用于编译的工具版本与您正在使用的 tensorflow 版本相匹配。
我的建议是锁定特定版本的 tensorflow 并坚持使用该版本,直到成功为止。如果您 git 从 github 克隆源代码,我建议 git checkout r2.2。这将使您进入最新版本。
我会避免使用 anaconda,因为它会使您使用的 python 版本变得复杂。我在 python 3.6.8. 上取得了不错的成绩,但也许可以使用 3.7.
您还需要特定版本的 Bazel,2.0.0 适用于 tensorflow r2.2。请注意,您需要在开始编译之前配置 BAZEL_VC 环境变量。它应该类似于 C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC。您可以在设置变量后执行 bazel clean --expunge 以避免混淆。
r2.2 tensorflow同样需要MSVC 2019,其他版本无法编译。您还需要此版本的构建工具。
您显示的最后一个 bazel build 命令是正确的。在开始新的编译之前不要忘记 python ./configure.py 。
如果我的猜测是正确的,您收到的错误消息是由于在后来的 tensorflow 源代码上使用旧版本的 MSVC,但这只是一个猜测。
这里是新手,第一条消息:)
我需要在 windows 机器上使用 CUDA、AVX 和 SSE 的 tensorflow。据我了解,我需要自己构建它。我首先尝试使用 Anaconda,但它一团糟,所以我卸载了与 python 相关的所有内容,然后我开始逐步执行 the official guide
我使用了几个命令来构建,例如:
bazel build -c opt --copt=-march=native --copt=-mfpmath=both --config=cuda -k //tensorflow/tools/pip_package:build_pip_package
bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --config=cuda -k //tensorflow/tools/pip_package:build_pip_package
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
前两个命令来自 here,可能是旧的。
构建总是失败并显示此消息:
ERROR: missing input file 'external/llvm-project/mlir/include/mlir/Interfaces/SideEffectInterfaces.h', owner: '@llvm-project//mlir:include/mlir/Interfaces/SideEffectInterfaces.h'
有人知道这是怎么回事吗?
另外,在我使用的命令中,最好的构建命令是什么? 有什么方法可以将它安装在 windows 上的 Anaconda 中(具有 CUDA、avx 和 SSE 功能)?
在 windows 上构建 tensorflow 可能很困难,失败的原因有很多。该过程将根据您正在编译的版本而有所不同。在大多数情况下,如果逐字遵循,tensorflow 站点上的说明是正确的。我认为最棘手的部分是将用于编译的工具版本与您正在使用的 tensorflow 版本相匹配。
我的建议是锁定特定版本的 tensorflow 并坚持使用该版本,直到成功为止。如果您 git 从 github 克隆源代码,我建议 git checkout r2.2。这将使您进入最新版本。
我会避免使用 anaconda,因为它会使您使用的 python 版本变得复杂。我在 python 3.6.8. 上取得了不错的成绩,但也许可以使用 3.7.
您还需要特定版本的 Bazel,2.0.0 适用于 tensorflow r2.2。请注意,您需要在开始编译之前配置 BAZEL_VC 环境变量。它应该类似于 C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC。您可以在设置变量后执行 bazel clean --expunge 以避免混淆。
r2.2 tensorflow同样需要MSVC 2019,其他版本无法编译。您还需要此版本的构建工具。
您显示的最后一个 bazel build 命令是正确的。在开始新的编译之前不要忘记 python ./configure.py 。
如果我的猜测是正确的,您收到的错误消息是由于在后来的 tensorflow 源代码上使用旧版本的 MSVC,但这只是一个猜测。