Difference between revisions of "Параллельное тестирование"

From EjudgeWiki
Line 24: Line 24:
  
 
Фрагмент, как показано, добавляется внутрь корневого элемента <config>. Вместо <tt>IP-ADDRESS</tt> необходимо подставить IP-адрес сервера. В значение атрибута <tt>value</tt> подставляется требуемое количество параллельно запускаемых экземпляров ej-super-run.
 
Фрагмент, как показано, добавляется внутрь корневого элемента <config>. Вместо <tt>IP-ADDRESS</tt> необходимо подставить IP-адрес сервера. В значение атрибута <tt>value</tt> подставляется требуемое количество параллельно запускаемых экземпляров ej-super-run.
 +
 +
На данный момент еще не наработано достаточно опыта, чтобы рекомендовать значения параллелизма в зависимости от количества ядер. Консервативной эвристикой будет брать число параллельно тестируемых решений равным половине от числа ядер процессора.
  
 
=== Параллельное тестирование на нескольких компьютерах по сети ===
 
=== Параллельное тестирование на нескольких компьютерах по сети ===

Revision as of 11:53, 3 December 2013

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

Система ejudge поддерживает распараллеливание тестирования программ как на многоядерных процессорах, так и по сети. На каждом экземпляре тестировщика единицей тестирования является одна посылка, то есть на тестирование берется исполняемый файл, и пока он не будет проверен до конца (в зависимости от типа турнира либо на всех тестах, либо до первого неуспешного тесте), данный тестировщик не перейдет к тестированию следующего решения.

Очередь тестирования является общей для всех турниров, в очереди посылки упорядочиваются по приоритету тестирования. Чем меньше значение приоритета, тем выше приоритет. Стандартное значение приоритета - 0. Значние приоритета может быть повышено до +15 (минимальный приоритет), либо понижено до -16 (максимальный приоритет). Отталкиваясь от базового значения 0 приоритет тестирования можно изменять для всего турнира, задачи, языка программирования, пользователя и т. п. Кроме того, решения, оправляемые на перепроверку, получают +10 к приоритету.

За тестирование посылок отвечает программа ej-super-run.

Параллельное тестирование на многоядерном процессоре

Для параллельного тестирования на одном процессоре достаточно запустить столько экземпляров программы ej-super-run, сколько требуется. Параллельно работающие экземпляры ej-super-run не конфликтуют между собой.

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

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

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

На данный момент еще не наработано достаточно опыта, чтобы рекомендовать значения параллелизма в зависимости от количества ядер. Консервативной эвристикой будет брать число параллельно тестируемых решений равным половине от числа ядер процессора.

Параллельное тестирование на нескольких компьютерах по сети