<?xml version='1.0'?>
<?xml-stylesheet type='text/xsl' href='main.xsl'?>
<c:page
	xmlns='http://www.w3.org/1999/xhtml'
	xmlns:c='http://cl.usu.edu.ru'
	c:name='battle'
	c:title='Cluster > battle'
	id='body'
>

	<img src='/i/b.gif' height='250px' align='right' style='margin: 0px 30px 30px 30px' />

	<h1>Баттл <span class='small'>(<a href='report.xml'>отчёт</a>)</span></h1>

	<h2>Статус</h2>
	<p>
		Эта страница является официальным описанием баттла «Бой в кластере», который прошёл
		в четверг, 23 апреля 2009 года.
	</p>
	<h2>Окружение</h2>
	<p>Кластер представляет собой один мастер-узел и некоторое количество вычислительных узлов.</p>
	<p>На всех узлах установлена ОС Debian GNU/Linux «Lenny» со следующими наборами ПО:
		<ul>
			<li>
				На мастер-узле установлены комиляторы C/C++, assembler (GNU GCC 4.3), Pascal (GNU GPC 4.1),
				Fortran (GNU Fortran 77 3.4) и Java (Sun JDK 6 update 12), интерпретаторы Perl 5.10, Python 2.5
				и Ruby 4.2.
			</li>
			<li>
				На вычислительных узлах установлены среды исполнения Java (Sun JRE 6 update 12), интерпретаторы
				Perl 5.10, Python 2.5 и Ruby 4.2.
			</li>
		</ul>
	</p>

	<p>
		Компиляция программ, выполняющих вычисления, должна выполняться на мастер-узле, а их 
		«боевой» запуск — (только) на вычислительных узлах.
	</p>

	<h2>Регистрация</h2>
	<p>
		Для регистрации необходимо выслать по <a
			href='mailto:andrey.malets@gmail.com?subject=Cluster&amp;cc=avkhozov@gmail.com'>адресу</a>
			электронной почты письмо с указанием имени участника (команды) и требования к окружению на узлах,
			если указанная выше конфиругация будет недостаточной.
	</p>

	<p>
		Перед началом баттла на обратные адреса участников будут высланы реквизиты доступа к кластеру и
		описание задачи. Реквизиты представляют собой имя пользователя для досутпа в систему и пара
		ключей для авторизации.
	</p>

	<p>
		По указанным реквизитам можно будет получить ssh-доступ ко всем узлам кластера. Вычислительные узлы
		доступны через мастер-узел. Никаких дополнительных действий (ввода пароля, подтверждений и т.д.)
		для доступа на узлы не потребуется.
	</p>

	<h2>Общее описание задачи</h2>
	<p>
		Командам будет предложено вычислить значения некоторой функции, зависящей от натурального аргумента в
		промежутке от некоторого начального значения <code>k</code> и до бесконечности. Функция и начальное значение
		параметра <code>k</code> будут сообщены непосредственно перед началом соревнований.
	</p>

	<h2>Ход игры</h2>
	<p>
		<a id='task'><strong>Задача участников — последовательно вычислять на кластере значения функции,
			начиная от заданного <code>k</code>.</strong></a>
		В ходе боя участники могут:
		<ul>
			<li>Писать (и/или загружать) программы на мастер узле (и компилировать их, если это требуется) и
				тестировать их там же.
			</li>
			<li>Использовать вычислительные узлы для «боевых» рассчётов.</li>
			<li>Затруднять вычисления других команд на вычислительных узлах различными путями.</li>
		</ul>
		Запрещается:
		<ul>
			<li>
				Мешать отладке других участников на мастер-узле. Мастер-узел — это нейтральная территория.
			</li>
			<li>
				Намеренно затруднять доступ других команд на вычислительные узлы (напр. закрывать порты,
				пытаться «убить» ssh-сервер, оболочку bash других участников и т.п.).
			</li>
		</ul>
	</p>
	<p>
		Все логины, выданные участникам, будут находиться в одной группе. На вычислительных узлах процессам 
		участников будет дана возможность посылать любые сигналы процессам, находящимся с ними (участниками) в одной
		группе. Однако не гарантируется, что в общей для участников группе будут только сами участники.
	</p>

	<h2>Приём ответов</h2>
	<p>
		Приём ответов осуществляется через мастер-узел. Каждая команда имеет в домашней директории на мастер-узле
		каталог <code>answers</code> для ответов, доступный для записи и файл <code>current</code>, доступный
		для чтения, в котором содержится значение аргумента для последнего засчитанного значения функции.
	</p>
	<p>
		Для того, чтобы отправить очередной ответ на проверку, команда помещает файл с ответом (под любым
		именем) в каталог <code>answers</code>. Проверяющая система после проверки файла (в случае верного
		ответа) обновляет значение в файле <code>current</code> и удаляет файл с ответом. По факту удаления
		файла можно судить о том, что проверяющая система вынесла вердикт по данному файлу. Если ответ неверный,
		проверяющая система записывает старое значение в файл <code>answer</code>.
	</p>
	<p>
		Можно использовать утилиту <code>inotifywait</code> (которая будет установлена на мастер-узле)
		для проверки выноса вердикта проверяющей системы.
	</p>

	<h2>Начисление очков</h2>
	<p>
		За каждое следующее вычисленное значение функции участник получает очки.
	</p>
	<p>
		За каждую посылку сигнала <code>kill</code> на узлах процессом участника очки снимаются.
	</p>
	<p>
		Точные цифры будут объявлены непосредственно перед началом баттла.
	</p>
	<p>
		Победитель баттла будет определён по общему количеству набранных очков за всю игру.
		При наличии нескольких участников с равным количеством очков приоритет будет отдан участнику,
		вычислившему большее количество значений функции, а если таких будет несколько — тому, кто
		вычислил последнее значение раньше.
	</p>
<!--	<h2>Схема сети</h2>
	<img src='/i/s.png'/>-->
</c:page>

