从源代码构建TensorFlow时,-c opt和--config = opt之间的区别是什么?

时间:2017-09-20 10:17:06

标签: tensorflow bazel

从源代码构建TensorFlow时,我们要求设置--config=opt(默认情况下会启用gcc标记-march=native)但是在网络上我看到很多人使用-c opt 1}}相反,但根据Bazel的文档-c实际上是--compilation_mode而不是--config的简写!

令人困惑的是,--compilation_mode也需要选择'选择'作为一种价值观,但我认为这只是巧合吗?在TensorFlow编译期间执行-c opt时,有人可以澄清--config=optbazel build之间的区别吗?

2 个答案:

答案 0 :(得分:7)

-c opt标志用于告知Bazel在启用优化设置且没有调试信息的情况下构建。就像你提到--compilation_mode opt一样。这与用于编译任何代码的标志有关。

--config=opt告诉Bazel,在编译期间查看.bazelrc文件并读取与opt配置匹配的任何设置。使用tensorflow运行configure脚本后,您应该在工作区的根目录中有一个.bazelrc文件,该文件定义了多个配置的设置。对于opt配置,它会为编译添加额外的-march-native

所以它们以同样的方式命名有点巧合。但--config是从.bazelrc文件中选择Bazel设置的灵活工具。 -c实际上只是用于优化构建代码。

答案 1 :(得分:3)

sudo nano ~/.aws/config设置一个扩展在.rc文件中定义的一组标志的配置。例如。如果rc文件包含aws configure,则在命令行上设置aws configure将扩展为--config。 tensorflow rc文件set -c opt但未定义任何build:opt -c opt配置。因此设置--config opt将无效。

ADDENDUM:TensorFlow的./configure在opt配置的.bazelrc上添加一些C ++选项(因此它将扩展到那些C ++选项)。