Сохранение конфигурации Tensorflow + Bazel для компиляции на другом компьютере - PullRequest
0 голосов
/ 13 февраля 2019

Пытаясь собрать Tensorflow из источников, я хотел оптимизировать его для конкретного процессора (x5-Z8350).Однако, поскольку я не знаю конкретных флагов для предоставления bazel build, я просто использую опцию -march=native.Проблема в том, что мне нужно выполнить компиляцию на другом, более быстром компьютере.

Для справки, руководство, которое я следую для сборки, является официальным руководством Tensorflow: Сборка из исходного кода .

Итак, я хотел бы знать, есть ли способ получить неявные флаги, которые используются при установке -march=native?Кроме того, ответ в основном не зависит от ОС?

Вот глобальная идея шагов, которые я имею в виду:

  1. Запуск . / Настройка на медленноймашина ( M1 ) и использовать -march=native
  2. Выполнить bazel build [...] на M1 , чтобы запустить компиляцию Tensorflow
  3. Сохранить флаги, которые используютсякомпилятор
  4. Выполнить шаги 1 и 2 на быстром компьютере ( M2 ) с сохраненными флагами компиляции вместо значений по умолчанию -march=native

1 Ответ

0 голосов
/ 14 февраля 2019
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.

...