【问题标题】:Compile Tensorflow programs with custom compiler使用自定义编译器编译 TensorFlow 程序
【发布时间】:2017-06-08 01:27:00
【问题描述】:

我正在尝试使用我公司的 c 编译器编译一个非常简单的 Tensorflow 程序(仅打印 Tensorflow 版本),但是我从 Tensorflow 官方网站下载的 libtensorflow.so 与我们的 c 编译器不兼容。

我公司的 c 编译器几乎只是一个标准的 gcc,但 gcc 可以编译程序而我们的自定义编译器不能。

我的同事告诉我,我有两个选择:(1)用我们的编译器替换 Bazel 的编译器并使用 Bazel 编译程序或(2)先用 Bazel 编译程序,然后使用我们的编译器编译程序并包含 pb. Bazel 生成的 h 文件(因为那些 bazel 文件只能由 Bazel 生成)。

我不知道该怎么做(!),但我尝试了(2)。 (2) 的问题是我收到错误消息说 protoc 是由旧版本生成的,我不确定如何更改为正确的版本。

一些附加信息:(1)操作系统是Linux,(2)我没有使用sudo命令的权限,(3)我无法访问系统目录(例如/usr/local)

有没有希望我可以完成这项工作?您可能会问为什么不直接使用 Bazel 构建程序。因为我们公司的程序需要用我们公司的模拟器运行,而模拟器只接受我们公司编译器生成的程序。

【问题讨论】:

标签: tensorflow bazel


【解决方案1】:

您唯一的选择是使用 Bazel 构建 tensorflow,并告诉 Bazel 使用您的 C/C++ 编译器。最简单的方法是将 CC 和 CXX 环境变量设置为指向编译器的可执行文件。如果它真的是 GCC 的直接替代品,那么它应该可以工作,并且在构建之后,您应该得到一个使用您的自定义编译器编译的 tensorflow 二进制文件。

如果需要特殊标志,那么您应该在 Bazel 中创建一个自定义工具链来告诉它如何使用您的编译器,它有点复杂但并不多。相关说明位于https://github.com/bazelbuild/bazel/wiki/Building-with-a-custom-toolchain

【讨论】:

  • 其他消息来源说我只能编辑 tools/cpp/CROSSTOOL 而不需要按照教程中的说明进行整个操作。有 CROSSTOOL 和 CROSSTOOL.tpl。我应该修改哪一个?另外,我需要做什么来告诉 Bazel 使用我修改过的 CROSSTOOL?我尝试使用 compile.sh 编译 Bazel,但 Bazel 忽略了我在 CROSSTOOL 中所做的所有更改。
猜你喜欢
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多