Difference between revisions of "Параллельная компиляция"

From EjudgeWiki
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Параллельная компиляция]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Параллельная компиляция]]
 +
 +
Компиляция решений выполняется программой [[ej-compile]]. По умолчанию эта программа работает в одиночном режиме, то есть на одном хосте можно запустить только один экземпляр программы.
 +
Для работы в параллельном режиме необходимо указать опцию <tt>-p</tt> в командной строке программы. В этом случае не будет выполняться проверка на то, что ej-compile уже запущена.
 +
Только в этом случае параллельно работающие экземпляры программы не будут конфликтовать между собой.
 +
 +
Можно настроить конфигурационные файлы таким образом, чтобы нужное число экземпляров программы запускалось при старте всей системы ejudge с помощью ejudge-control.
 +
 +
Для настройки автоматического запуска необходимого количества экземпляров программы ej-compile при старте ejudge в конфигурационный файл [[ejudge.xml]] необходимо добавить следующий фрагмент.
 +
 +
<config>
 +
  ...
 +
  <hosts_options>
 +
    <host name="IP-ADDRESS">
 +
      <option name="compile_parallelism" value="2" />
 +
    </host>
 +
  </hosts_options>
 +
  ...
 +
</config>
 +
 +
Фрагмент, как показано, добавляется внутрь корневого элемента <config>. Вместо <tt>IP-ADDRESS</tt> необходимо подставить IP-адрес сервера. В значение атрибута <tt>value</tt> подставляется требуемое количество параллельно запускаемых экземпляров ej-compile. Если используется и настройка [[параллельное тестирование|<tt>parallelism</tt>]], и настройка <tt>compile_parallelism</tt>, обе они должны находиться в одном элементе:
 +
 +
<config>
 +
  ...
 +
  <hosts_options>
 +
    <host name="IP-ADDRESS">
 +
      <option name="compile_parallelism" value="2" />
 +
      <option name="parallelism" value="4" />
 +
    </host>
 +
  </hosts_options>
 +
  ...
 +
</config>
 +
 +
ВНИМАНИЕ. На многоядерной машине узким местом скорее всего окажется дисковая подсистема. Если будет указан большой параллелизм компиляции и выполнения может оказаться так,
 +
то дисковая подсистема не справится с потоком запросов. В этом случае в списке процессов будет много процессов, находящихся в состоянии 'D' (uninterruptible sleep).
 +
 +
Параллельная компиляция поддерживается с версии [[изменения в версии 3.6.1|3.6.1]].

Latest revision as of 12:00, 4 April 2017

Навигация: Главная страница/Система ejudge/Использование/Параллельная компиляция

Компиляция решений выполняется программой ej-compile. По умолчанию эта программа работает в одиночном режиме, то есть на одном хосте можно запустить только один экземпляр программы. Для работы в параллельном режиме необходимо указать опцию -p в командной строке программы. В этом случае не будет выполняться проверка на то, что ej-compile уже запущена. Только в этом случае параллельно работающие экземпляры программы не будут конфликтовать между собой.

Можно настроить конфигурационные файлы таким образом, чтобы нужное число экземпляров программы запускалось при старте всей системы ejudge с помощью ejudge-control.

Для настройки автоматического запуска необходимого количества экземпляров программы ej-compile при старте ejudge в конфигурационный файл ejudge.xml необходимо добавить следующий фрагмент.

<config>
  ...
  <hosts_options>
    <host name="IP-ADDRESS">
      <option name="compile_parallelism" value="2" />
    </host>
  </hosts_options>
  ...
</config>

Фрагмент, как показано, добавляется внутрь корневого элемента <config>. Вместо IP-ADDRESS необходимо подставить IP-адрес сервера. В значение атрибута value подставляется требуемое количество параллельно запускаемых экземпляров ej-compile. Если используется и настройка parallelism, и настройка compile_parallelism, обе они должны находиться в одном элементе:

<config>
  ...
  <hosts_options>
    <host name="IP-ADDRESS">
      <option name="compile_parallelism" value="2" />
      <option name="parallelism" value="4" />
    </host>
  </hosts_options>
  ...
</config>

ВНИМАНИЕ. На многоядерной машине узким местом скорее всего окажется дисковая подсистема. Если будет указан большой параллелизм компиляции и выполнения может оказаться так, то дисковая подсистема не справится с потоком запросов. В этом случае в списке процессов будет много процессов, находящихся в состоянии 'D' (uninterruptible sleep).

Параллельная компиляция поддерживается с версии 3.6.1.