Работа с опциями, поддерживаемыми кластерами
Описание
Существуют категории функциональности кластеров, которые являюются более общими, чем "предустановленный софт". Например, часть кластеров может поддерживать MPI, часть - нет. Необходимо опубликовать информацию о функциональности кластеров и научиться ее использовать.
Текущее состояние
Обсуждение.
Подробное описание
Проблема, которая породила данное предложение: предположим, пользователь пишет задачу, которая требует MPI для работы. Ему без разницы, какая реализация MPI при этом будет использоваться (но надо, чтобы на кластере была хоть какая-то). Сейчас единственный способ добиться запуска такой задачи, это указать явно flavour (или даже конкретную версию) того mpi, который нужен, через атрибут software в требованиях. Это сильно сужает круг доступных ресурсов.
Предлагается добавить в описании очереди кластера новый атрибут, под названием "Feature". Этот атрибут должен содержать список тех мета-опций, которые поддерживает кластер. Например:
<Queue> ... <Feature>MPI</Feature> <Feature>OpenMP</Feature> ... </Queue>
Формат описания сейчас приблизительный, возможно это стоит делать как-то иначе.
Предварительный список допустимых значений Feature:
- single
- multiple
- mpi
stepanova 2011-02-18 03:55
Вставлять не в <SubCluster?>, а все же в <Queue>;
и можно без выделенного блока (искать чуть проще, наверно)
<SubCluster>
...
<Queue>
<CEInfo>xxx/yyy</CEInfo>
<JobType>single</JobType>
...
<JobType>mpi</JobType>
<ACL>
..
</ACL>
</Queue>
</SubCluster>
*/ Возможные типы сейчас только single, mpi, multiple.
shamardin 2011-02-18 11:22
Я считаю, что анонсировать нужно именно эти самые features, а не поддерживаемые jobtype'ы. Насколько я понимаю, single и multiple, тем более, поддерживает любой кластер. Может потом появитяся еще что-то полезное, типа там <Feature>SharedMemory</Feature>
kurakin 2011-02-18 11:34
single и multiple конечно поддерживает любой (теоретически), но в очередях есть запреты. У нас (KI) есть очередь single, в которую нельзя запускать задачи multiple. Соответственно и в очередь для mpi запускать задачи на одно ядро тоже нельзя. Так что хочется деления по капабилити по очередям.
shamardin 2011-02-18 11:40
Ok, тогда предлагаю набор Features, который пока совпадает с допустимыми jobType глобуса, но имеющий строго фиксированную семантику (в отличие от jobType):
- single: поддержка запуска однопроцессных заданий.
- multiple: поддержка запуска многопроцессных заданий, без MPI.
- mpi: поддержка запуска mpi-заданий.
kurakin 2011-02-18 11:34
А касательно mpi, есть ли у нас общие для всех правила описания какие варианты mpi поддерживаются и как выбирать запуск именно через это тип mpi. У нас как и у всех, наверное, реализован один какой-то mpi, более того, поддерживаем официально только один, но теоретически можно позволить выбирать mpi. Поидее это было бы удобно делать так: mpi - любой дефолтный, mpiX конкретный.
shamardin 2011-02-18 12:27
Очень жаль, что вы не присутствуете на митингах, об этом и шла речь. Выбрать сейчас конкретную реализацию MPI можно, и достаточно легко (через "software": "mvapich" например). А вот сказать "дай мне любой mpi, какой есть, и используй на кластере тот mpi, который для него дефолтный" сейчас нельзя.
stepanova 2011-02-18 12:43
Ок, нормально, пусть <Feature> для очереди.
Правда, насчет семантики чего-то больно мудрено - пусть single, mpi, multiple и будет пока (это ж с конкретной вещью связано, зачем админов заставлять лишнее преобразование в другие слова делать.
Тогда что - сегодня правлю схему c примером и вечером делаю рассылку админам, чтобы все добавили? Или всем тикеты?
kurakin 2011-02-18 13:23
Лучше тикеты, если известно кому. Быть может предварительно заслать "решение рабочей группы" в develop, на финальный review и как своего рода уведомление. Вдруг у остальных есть какие мысли. И если до некоторого времени Ч не поступит комментариев, вступает в силу новая схема. Да. За одно, будет не плохо добавить уведомление о том как проще всего провести валидацию своего сайта на текущую схему (со ссылкой на схему), конечно все должны знать, но уверен что лишнем не будет. Спасибо.
shamardin 2011-02-18 13:34
Давайте не будем торопиться, и немного "осмыслим" это предложение до понедельника, может еще кто-либо сегодня прокомментирует. Плюс, нужно сначала задокументировать это все в текстах про настройку ЛИС.
У меня лично есть некоторое предубеждение против feature "multiple". Я пока знаю только один use case, для которого это нужно: это openmp. Может, лучше его так и называть?
kurakin 2011-02-18 13:49
Лично я не вижу причин почему не может быть осуществлен запуск не mpi задачи, но которой требуется N вычислителей. Грубо говоря запустить обычный hostname N раз имеет право на жить. Простые тупые молотилки, не взаимодействующие друг с другом, но решающие "одну" задачу. Почему нет?
shamardin 2011-02-18 13:54
Если это тупые молотилки, не взаимодейтсвующие друг с другом, то пусть идут как отдельные грид-задачи: лучше ресурсы будут использоваться, так как могут разойтись на разные кластеры.
kurakin 2011-02-17 14:09
Конечно вариант, но сколько отдельных молотилок можно запустить, а сколько "пакетов" молотилок. Ограничения разные, опять же, на каждую молотилку загружать данные или на "пакет". Собственно тут опять же можно рисовать и за и против. И что забавно и то и другое будет верно. Может просто банально не вводить лишнее ограничение. Если есть видение что openmp отдельный случай, его можно выделить в новый jobtype, а уж позволять ли другие виды multiple или нет - оставить на откуп локальным ресурсам. Хотя, лично я, разници не вижу для себя как для ресурса. Но может я просто чего-то не понимаю.
stepanova 2011-02-18 02:50
Именно эта тройка поддерживается GRAM в настоящее время. Введение ее сейчас никаких плохих последствий создать не должно. Может multiple реально и мало понадобится,
зато остальным можно будет пользоваться.
По поводу качественной выделенной фичи openmp или еще какой-то экзотики придется еще думать, тестить, вносить изменения в GRAM. Со всеми вытекающими временными затратами, в т.ч.переделкой всех сборок ngrid-ce-*.
Короче, я со своей стороны все сделала, внизу страницы драфт сообщения в рассылку.
kurakin 2011-03-01 12:36
Для тех кто в танке, а чем все закончилось то?
После этого pilot будет автоматически знать, что если в задаче стоит (пока не утвержденный) атрибут type = mpi, то нужно выбирать только те ресурсы, для которых заявлен Feature MPI.
Преимущества, которые это даст
Более универсальные и простые для использования описания задач.
Какие компоненты нуждаются в модификации
- pilot
- ngrid-lis /site-info-example +schema - немного.
- ngrid-cis? - не требуется
Сценарий использования
TBD.
Сообщение администраторам
Коллеги,
в результате обсуждения http://www.ngrid.ru/trac/wiki/PilotFeatureClusterFeatures сформировалось такое решение:
для оптимизации обработки пилотом разных типов заданий необходимо в файле site-info.xml добавить новые теги Feature в описание очередей субкластеров.
<Queue> <CEInfo>... <Feature>mpi</Feature> <Feature>single</Feature> <ACL>... </Queue>
Допустимые значения Feature: single, multiple, mpi. Такой набор в настоящее время поддерживается GRAM. В дальнейшем возможно его расширение, а также добавление других мета-опций. Напоминаю, что желательно эту операцию совместить с проверкой валидности ваших site-info.xml, например, так:
xmlstarlet val --err -s http://ngrid.ru/glueschema/V13/R1/glueschema13R2-7.xsd site-info.xml
P.S.
Последние варианты файлов с примерами в svn:
lis/ngrid-lis-1.0/samples/site-info-example.xml /samples/site-info-example-with-comments.xml /schema/glueschema13R2-7.xsd
В старый пример на wiki http://www.ngrid.ru/trac/wiki/SiteInfoWithComments изменения добавлены;
в новой новой инструкции изменения не требуются.
Схема, как и раньше, здесь:
http://ngrid.ru/glueschema/V13/R1/glueschema13R2-7.xsd;
Изменения:
$ diff -u glueschema13R2-7.xsd-17.02.11 glueschema13R2-7.xsd
--- glueschema13R2-7.xsd-17.02.11 2010-10-07 12:29:37.000000000 +0400
+++ glueschema13R2-7.xsd 2011-02-19 01:02:52.000000000 +0300
@@ -4,6 +4,7 @@
+<!-- Revision number: 3.2 date: 18 Feb 2011 :: add FeatureTypeEnum (single,mpi,multiple) -->
@@ -22,6 +23,36 @@
<!-- enumerations definition -->
+ <xs:simpleType name="FeatureTypeEnum">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="single"/>
+ <xs:enumeration value="mpi"/>
+ <xs:enumeration value="multiple"/>
+ </xs:restriction>
+ </xs:simpleType>
@@ -166,6 +171,7 @@
<xs:complexType name="Queue">
<xs:sequence>
<xs:element name="CEInfo" type="xs:string"/>
+ <xs:element name="Feature" type="FeatureTypeEnum" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="ACL" type="ACLType"/>
</xs:sequence>
</xs:complexType>
