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

Car*_*omé 7 bazel tensorflow

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

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

小智 10

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

--config=opt告诉巴泽勒,中寻找.bazelrc文件的编译过程中,读匹配任何设置opt配置.configure使用tensorflow 运行脚本后,您应该.bazelrc在工作区的根目录中放置一个文件,该文件定义多个配置的设置.对于opt配置,它添加了额外-march-native的编译.

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


Dam*_*rez 5

--config设置一个在 .rc 文件中定义的一组标志中扩展的配置。例如,如果 rc 文件包含build:opt -c opt,则--config opt命令行上的设置将扩展为-c opt. tensorflow rc文件设置-c opt但没有定义任何opt配置。所以设置--config opt不会起任何作用。

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