XLA: Уровень оптимизации GPU (-Вкл).

Есть некоторые проходы, которые мы считаем полезными (особенно в масштабе), но они увеличивают размер HLO и, следовательно, время компиляции. Поэтому они не включены по умолчанию. Для удобства мы объединяем их в один параметр.

Установка optimize_level на O1 или выше приведет к следующему поведению:

  • Коллективы, обычно используемые для параллельной передачи данных, будут конвейеризированы. Это поведение также можно контролировать более детально, включая отдельные флаги.
    • xla_gpu_enable_pipelined_all_gather
    • xla_gpu_enable_pipelined_all_reduce
    • xla_gpu_enable_pipelined_reduce_scatter
  • Развёртывание циклов while в два раза. Разрушает барьер цикла, что потенциально приводит к лучшему перекрытию вычислений и коммуникаций и уменьшению количества копий.
    • xla_gpu_enable_while_loop_double_buffering
  • Планировщик скрытия задержек выполнит большую часть работы по сокрытию задержек связи.
    • xla_gpu_enable_latency_hiding_scheduler
  • Для максимизации пропускной способности сети проходы комбинатора объединяют конвейерные коллективы, используя максимально доступный объём памяти. Оптимизация не срабатывает, если цикл уже развёрнут во входном HLO.