Tensorflow + Bazel保存配置以在另一台机器上编译

时间:2019-02-13 19:17:22

标签: tensorflow compilation bazel

尝试从源代码构建Tensorflow,我想针对特定的CPU(x5-Z8350)对其进行优化。但是,由于我不知道要提供给bazel build的特定标志,因此我只使用了-march=native选项。问题是我需要在另一台更快的计算机上进行编译。

作为参考,我遵循的构建指南是Tensorflow的官方指南:Build from source

因此,我想知道是否有任何方法可以获取设置-march=native时使用的隐式标志?另外,答案是否与操作系统无关?

这是我要记住的全局步骤:

  1. 在速度较慢的计算机( M1 )上运行 ./ configure ,并使用-march=native
  2. M1 上运行bazel build [...],以开始Tensorflow编译
  3. 保存编译器使用的标志
  4. 使用保存的编译标志而不是默认的-march=native
  5. 在快速计算机( M2 )上运行步骤1和2

1 个答案:

答案 0 :(得分:0)

def set_cc_opt_flags(environ_cp):
  """Set up architecture-dependent optimization flags.

  Also append CC optimization flags to bazel.rc..

  Args:
    environ_cp: copy of the os.environ.
  """
  if is_ppc64le():
    # gcc on ppc64le does not support -march, use mcpu instead
    default_cc_opt_flags = '-mcpu=native'
  elif is_windows():
    default_cc_opt_flags = '/arch:AVX'
  else:
    default_cc_opt_flags = '-march=native'
  question = ('Please specify optimization flags to use during compilation when'
              ' bazel option "--config=opt" is specified [Default is %s]: '
             ) % default_cc_opt_flags
  cc_opt_flags = get_from_env_or_user_or_default(environ_cp, 'CC_OPT_FLAGS',
                                                 question, default_cc_opt_flags)
  for opt in cc_opt_flags.split():
    write_to_bazelrc('build:opt --copt=%s' % opt)
  # It should be safe on the same build host.
  if not is_ppc64le() and not is_windows():
    write_to_bazelrc('build:opt --host_copt=-march=native')
  write_to_bazelrc('build:opt --define with_default_optimizations=true')

configure.py 中所写,-march = native是默认选项:

default_cc_opt_flags = '-march=native'

因此您可以运行

cd tensorflow
yes "" | ./configure

使用所有默认选项自动配置构建。

然后您可以检查 .tf_configure.bazelrc 来查看

build:opt --copt=-march=nativ已设置。