如何从 tensorflow 构建中保存中间文件?
How to save intermediate files from tensorflow build?
我正在尝试分析 tensorflow 运算内核的预处理源。我尝试了以下命令行,改编自一般构建说明:
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package --save_temps
它构建正确,但从文档中,我期待另一个通过 -H / -S 传递给编译器。我不确定这是否发生过,但除了少数文件外,我找不到任何 .i、.ii 或 .s 文件(我看到 swig 的 .i 文件和 boringssl 和 nsync 的 .s 文件)在我的缓存文件夹中,虽然我确实得到了 python 包的源的 .i 文件:
./tensorflow/compiler/xla/python/local_computation_builder.i
./tensorflow/compiler/xla/python/xla.i
./tensorflow/python/training/server_lib.i
./tensorflow/python/training/quantize_training.i
./tensorflow/python/grappler/item.i
./tensorflow/python/grappler/cost_analyzer.i
./tensorflow/python/grappler/tf_optimizer.i
./tensorflow/python/grappler/model_analyzer.i
./tensorflow/python/grappler/cluster.i
./tensorflow/python/pywrap_tfe.i
./tensorflow/python/lib/io/py_record_writer.i
怀疑我可能需要构建一个不同的目标,我试图列出可用的目标:
bazel query //tensorflow --output package
但运行进入如下错误:
WARNING: /root/.cache/bazel/_bazel_root/f4653201e29159237cbc73869b47a72b/external/protobuf_archive/WORKSPACE:1: Workspace name in /root/.cache/bazel/_bazel_root/f4653201e29159237cbc73869b47a72b/external/protobuf_archive/WORKSPACE (@com_google_protobuf) does not match the name given in the repository's definition (@protobuf_archive); this will cause a build error in future versions
ERROR: error loading package 'tensorflow': Encountered error while reading extension file 'cuda/build_defs.bzl': no such package '@local_config_cuda//cuda': Traceback (most recent call last):
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 1166
_create_local_cuda_repository(repository_ctx)
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 1014, in _create_local_cuda_repository
_find_libs(repository_ctx, cuda_config)
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 667, in _find_libs
_find_cuda_lib("cudnn", repository_ctx, cpu_value, cu..., ...)
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 587, in _find_cuda_lib
auto_configure_fail(("Cannot find cuda library %s" %...))
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 210, in auto_configure_fail
fail(("\n%sCuda Configuration Error:%...)))
Cuda Configuration Error: Cannot find cuda library libcudnn.so.7
如果不清楚,我对bazel不是很熟悉
问题:
A) 我对问题的诊断是否正确?如果是这样,我是否正确查询目标列表?
B) 我可以在不实际编译源代码的情况下使用 bazel 生成中间表示吗?我实际上并不需要目标文件。
--save_temps
仅适用于 Bazel 显式构建的目标,它不适用于所有传递依赖项。所以你必须找到一个你感兴趣的 C++ 目标并直接构建它。然后你会看到一堆 .ii
和 .s
文件。
旁白,您可以 运行 使用 --subcommands
构建以查看 Bazel 创建的所有操作和命令行。
再问,bazel query //tensorflow/...
对我有用,请问是不是源和./configure不同步导致的?它看起来像一个配置问题。我没有尝试在启用 cuda 支持的情况下构建 TF。
我正在尝试分析 tensorflow 运算内核的预处理源。我尝试了以下命令行,改编自一般构建说明:
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package --save_temps
它构建正确,但从文档中,我期待另一个通过 -H / -S 传递给编译器。我不确定这是否发生过,但除了少数文件外,我找不到任何 .i、.ii 或 .s 文件(我看到 swig 的 .i 文件和 boringssl 和 nsync 的 .s 文件)在我的缓存文件夹中,虽然我确实得到了 python 包的源的 .i 文件:
./tensorflow/compiler/xla/python/local_computation_builder.i
./tensorflow/compiler/xla/python/xla.i
./tensorflow/python/training/server_lib.i
./tensorflow/python/training/quantize_training.i
./tensorflow/python/grappler/item.i
./tensorflow/python/grappler/cost_analyzer.i
./tensorflow/python/grappler/tf_optimizer.i
./tensorflow/python/grappler/model_analyzer.i
./tensorflow/python/grappler/cluster.i
./tensorflow/python/pywrap_tfe.i
./tensorflow/python/lib/io/py_record_writer.i
怀疑我可能需要构建一个不同的目标,我试图列出可用的目标:
bazel query //tensorflow --output package
但运行进入如下错误:
WARNING: /root/.cache/bazel/_bazel_root/f4653201e29159237cbc73869b47a72b/external/protobuf_archive/WORKSPACE:1: Workspace name in /root/.cache/bazel/_bazel_root/f4653201e29159237cbc73869b47a72b/external/protobuf_archive/WORKSPACE (@com_google_protobuf) does not match the name given in the repository's definition (@protobuf_archive); this will cause a build error in future versions
ERROR: error loading package 'tensorflow': Encountered error while reading extension file 'cuda/build_defs.bzl': no such package '@local_config_cuda//cuda': Traceback (most recent call last):
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 1166
_create_local_cuda_repository(repository_ctx)
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 1014, in _create_local_cuda_repository
_find_libs(repository_ctx, cuda_config)
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 667, in _find_libs
_find_cuda_lib("cudnn", repository_ctx, cpu_value, cu..., ...)
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 587, in _find_cuda_lib
auto_configure_fail(("Cannot find cuda library %s" %...))
File "/tf-persist/third_party/gpus/cuda_configure.bzl", line 210, in auto_configure_fail
fail(("\n%sCuda Configuration Error:%...)))
Cuda Configuration Error: Cannot find cuda library libcudnn.so.7
如果不清楚,我对bazel不是很熟悉
问题:
A) 我对问题的诊断是否正确?如果是这样,我是否正确查询目标列表?
B) 我可以在不实际编译源代码的情况下使用 bazel 生成中间表示吗?我实际上并不需要目标文件。
--save_temps
仅适用于 Bazel 显式构建的目标,它不适用于所有传递依赖项。所以你必须找到一个你感兴趣的 C++ 目标并直接构建它。然后你会看到一堆 .ii
和 .s
文件。
旁白,您可以 运行 使用 --subcommands
构建以查看 Bazel 创建的所有操作和命令行。
再问,bazel query //tensorflow/...
对我有用,请问是不是源和./configure不同步导致的?它看起来像一个配置问题。我没有尝试在启用 cuda 支持的情况下构建 TF。