从源代码构建TensorFlow时,我们要求设置--config=opt
(默认情况下会启用gcc标记-march=native
)但是在网络上我看到很多人使用-c opt
1}}相反,但根据Bazel的文档-c
实际上是--compilation_mode
而不是--config
的简写!
令人困惑的是,--compilation_mode
也需要选择'选择'作为一种价值观,但我认为这只是巧合吗?在TensorFlow编译期间执行-c opt
时,有人可以澄清--config=opt
和bazel build
之间的区别吗?
答案 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 ++选项)。