【发布时间】:2021-02-27 14:04:39
【问题描述】:
我正在尝试在 Windows 10 上构建 TensorFlow 2.4.1 C++ API,但遇到了问题。
到目前为止我做了什么:
- 从官方 repo 下载 TensorFlow Source https://github.com/tensorflow/tensorflow 并切换到官方v2.4.1标签
- 下载并安装 Python 3.6.8 x64
- 使用 python 3.6.8 创建了一个虚拟环境
- 根据数据here创建并安装requirements.txt
- 下载并安装 CUDA 11.0 和 cuDNN v8.0.4.30(适用于 CUDA 11)
- 已下载并安装 msys2 并将其位置设置在 PATH 中
- 下载并安装 bazel (3.1.0),因为它是最新的条目here
然后我用python configure.py 运行配置过程
我为具有 GPU 支持的 C++ 构建 (tensorflow_cc) 进行了配置
在这里,我遇到了一些问题,显然在配置过程中,windows 样式的反斜杠被接受为有效输入,但是当您实际运行 bazel 编译时,它们会导致问题,因此我重新运行配置以提供 linux 样式的反斜杠。至此,CUDA 和 cuDNN 被成功检测并开始编译。
下面是我.tf_configure.bazelrc的全部内容
build --action_env PYTHON_BIN_PATH="D:/code/sdk/tensorflow/venv/Scripts/python.exe"
build --action_env PYTHON_LIB_PATH="D:/code/sdk/tensorflow/venv/lib/site-packages"
build --python_path="D:/code/sdk/tensorflow/venv/Scripts/python.exe"
build --config=xla
build --action_env TF_CUDA_VERSION="11.0"
build --action_env TF_CUDNN_VERSION="8.0.4"
build --action_env TF_CUDA_PATHS="C:/Program Files/NVIDIA GPU Computing
Toolkit/CUDA/v11.0,D:/code/sdk/cudnn-11.0-windows-x64-v8.0.4.30/cuda"
build --action_env CUDA_TOOLKIT_PATH="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0"
build --action_env TF_CUDA_COMPUTE_CAPABILITIES="5.0"
build --config=cuda
build:opt --copt=/arch:AVX
build:opt --host_copt=/arch:AVX
build:opt --define with_default_optimizations=true
build --define=override_eigen_strong_inline=true
test --flaky_test_attempts=3
test --test_size_filters=small,medium
test:v1 --test_tag_filters=-benchmark-test,-no_oss,-no_windows,-no_windows_gpu,-no_gpu,-oss_serial
test:v1 --build_tag_filters=-benchmark-test,-no_oss,-no_windows,-no_windows_gpu,-no_gpu
test:v2 --test_tag_filters=-benchmark-test,-no_oss,-no_windows,-no_windows_gpu,-no_gpu,-oss_serial,-
v1only
test:v2 --build_tag_filters=-benchmark-test,-no_oss,-no_windows,-no_windows_gpu,-no_gpu,-v1only
build --action_env TF_CONFIGURE_IOS="0"
编译大约 20 分钟,但它失败并出现以下错误:
ERROR: D:/code/sdk/tensorflow/tensorflow/stream_executor/cuda/BUILD:366:1: C++ compilation of rule '//tensorflow/stream_executor/cuda:cudnn_stub' failed (Exit 2): python.exe failed: error executing command
而命令执行失败的原因是
bazel-out/x64_windows-opt/bin/external/local_config_cuda/cuda/_virtual_includes/cudnn_header\third_party/gpus/cudnn/cudnn.h(61): fatal error C1083: Cannot open include file: 'cudnn_ops_infer.h': No such file or directory
在这里我想知道发生了什么?我已经提供了通往 cuDNN 的路径,但显然 bazel 并不真正了解它,尽管它之前承认我提供的路径是正确的。我是否缺少一些需要设置以指示 cuDNN 在哪里的环境变量? 有人在 Windows 上构建过 TF C++ v2.4.1 吗?网上的信息太少了,甚至官方页面也没有提到 Windows 版本。只有 Linux 和 Mac...
【问题讨论】:
标签: c++ windows tensorflow bazel cudnn