А.В. Баранов, А.О. Лацис, C.В. Сажин, М.Ю. Храмцов
Руководство пользователя системы МВС-1000
Содержание
- Работа пользователя в закрытой локальной сети.
- Общие понятия.
- Порядок работы пользователя
- Подготовка программ для вычислителя.
- Как работает система запуска.
- Паспорт задачи.
- Пользовательский конфигурационный файл системы запуска.
- Вызов системы запуска.
- Создание паспортов задач.
- Просмотр паспортов задач.
- Изменение паспорта задачи.
- Удаление паспорта задачи.
- Запуск задачи на счет.
- Получение информации о запущенных задачах.
- Завершение запущенной задачи.
- Просмотр стандартного вывода процессов задачи.
- Получение информации о свободных процессорах.
- Формат файла-паспорта задачи и запуск задачи через него.
- Другие формы вызова системы запуска.
- Подготовка и запуск программ, использующих MPI
- Работа пользователя через Интернет
Работа пользователя в закрытой локальной сети
Общие понятия.
Система состоит из трех важных компонент: многопроцессорного вычислителя, управляющей ЭВМ (далее - host-машина) и сервера. Host-машина и сервер представляют собой рабочие станции Alpha. Для примеров далее будем считать, что сетевое имя host-машины - alpha, а сетевое имя сервера - alpha2.
Задача пользователя выполняется на одном или нескольких процессорах вычислителя. Задачи могут запускаться и завершаться независимо друг от друга. Вычислитель делится между задачами динамически с точностью до процессора. В то же время, отдельный процессор не делится между задачами: если одна задача получила некоторый процессор, другая задача воспользоваться им не сможет до завершения первой. Процессоры вычислителя занумерованы физическими номерами. При запуске задачи на счет она получает набор процессоров с произвольными физическими номерами из числа свободных. При этом номера процессоров, попавших в набор, задаче не доступны: с точки зрения задачи, процессоры набора занумерованы подряд от нуля. В отличие от физической нумерации процессоров в вычислителе, нумерацию процессоров в наборе, видимую из прикладной программы, будем называть логической.
На сервере каждый пользователь имеет свой домашний каталог /home/имя_пользователя. Сервер служит для подготовки и хранения исходных текстов программ пользователей, данных для пользовательских задач, результатов расчетов, для компиляции и подготовки самих задач.
Host-машина служит для запуска (завершения, управления) на многопроцессорном вычислителе пользовательских задач. Из host-машины домашний каталог пользователя виден под тем же именем, что и из сервера. Старт (завершение, получение информации) задачи инициируется запуском на сервере пользователем определенных ниже команд. Программа, принимающая от пользователя эти команды на сервере, соединяется с host-машиной и передает ей команды для исполнения.
Заметим, что возможно объединение функций сервера и host-машины на одной рабочей станции.
Порядок работы пользователя
Для того, чтобы что-нибудь посчитать на МВС-1000, пользователю необходимо:
- Войти на сервер с помощью команды telnet,
например
telnet alpha2
- Произвести подготовку и трансляцию своей программы.
- Оформить паспорт задачи в системе запуска.
- Запустить задачу.
Подготовка программ для вычислителя
На вычислительном процессоре каждого вычислительного модуля выполняется ОС модуля, совместимая со спецификацией POSIX. Это однопользовательская система, в нашем случае используется как однозадачная. Кроме того, система эта в принципе "ненадежная", то есть не защищенная от разрушений самой системы при ошибках в программе пользователя. Поэтому, хотя теоретически эту систему и можно рассматривать как долгоживущую, управляющую ресурсами и даже обеспечивающую одновременное выполнение нескольких программ, в МВС-1000 она используется как персональная ОС однократного запуска, то есть всякий раз перед предоставлением процессора задаче пользователя ОС модуля на этом процессоре загружается заново, после чего ей поручается выполнение ровно одной пользовательской программы. В ОС модуля есть понятие консоли и вводимых с клавиатуры команд, хотя командный язык отличается от аналогичных широко известных (DOS, Unix). Однако, поскольку обычно программа пользователя выполняется на многих процессорах, каждый из которых имеет свою консоль, в МВС-1000 консольный ввод и консольный вывод каждого процессора заменяются текстовыми файлами. Файлы вывода, вообще говоря, интересны пользователю (там находится все, что программа выдавала на stdout и stderr), а файлы ввода обычно формируются программой запуска задачи пользователя на счет автоматически.
Следует отметить, что "разъяснение" системе того, сколько процессоров требуется данной задаче, какие программы должны быть загружены на каждом, в каких файлах окажется стандартный ввод и стандартный вывод и т. п. само по себе является нетривиальной задачей. В ОС МВС-1000 для решения этой задачи служит специальная программная компонента - СИСТЕМА ЗАПУСКА ЗАДАЧ. Она прозрачна для программы, обслуживает исключительно взаимодействие системы с пользователем в процессе запуска программы на счет и последующего контроля.
Выполняется система запуска на сервере, передавая запросы на запуск программ host-машине по мере их появления. Далее в настоящем разделе сосредоточимся на подготовке программ к выполнению в среде ОС модуля.
Программа для ОС модуля начинает выполняться с произвольной функции, имя которой пользователь должен сообщить при запуске задачи. В частности, эта функция может называться и "main", как это принято в большинстве ОС, но может и как-то иначе. Программа запуска задачи не передает этой главной функции традиционных для Unix аргументов.
Особенностью ОС модуля является то, что в ней нет понятия загрузочного, или исполняемого, модуля. Данная ОС вообще выполняет не модули, а функции, причем загрузка отделена от выполнения. ОС содержит встроенный связывающий загрузчик, который может загрузить с диска любой объектный (".o") модуль, после чего все содержащиеся в нем функции становятся автоматически выполнимыми. Какое-то количество функций как бы загружено заранее, например, вся стандартная библиотека "C".
Таким образом, если Ваша программа оформлена как единый исходный файл на языке "C", компоновать ее перед выполнением вообще не нужно: ".o" - файл, получающийся при вызове компилятора с ключом "-c", непосредственно годится для выполнения. Если же файлов несколько, и/или имеются собственные библиотеки, или используется язык программирования, отличный от "C", следует каждый из файлов скомпилировать с ключом "-c", а затем выполнить компоновку в специальном режиме, чтобы из нескольких объектных файлов получить один, но объектный, а не загрузочный.
Помимо ключа "-c", при компиляции требуется указывать еще ряд необычных ключей. Все это производится автоматически при использовании команд, описанных ниже. Важно понимать, что пользоваться следует именно этими командами, а не умолчаниями компилятора. Скажем, если у Вас есть файл "hello.c", и Вы хотите "для начала просто попробовать, не читая пока никаких описаний", Вас, скорее всего, ждет неудача. Так, стандартная последовательность действий "все по умолчанию", а именно: cc hello.c <запуск на счет файла a.out> заведомо не ведет к успеху: полученный таким способом файл a.out никоим образом не способен напечатать "hello, world!" под управлением ОС модуля, хотя компилятор Вы в принципе использовали правильный.
Подготовка программ ведется только на сервере. Файлы исходных текстов должны быть строго текстовыми в смысле Unix, как и текстовые файлы исходных данных и командные файлы. Перед запуском программы внимательно проверьте, присутствуют ли в начале текста головной функции обязательные обращения к инициализирующим среду функциям (см. об этом в Руководстве программиста - файл progdevl.txt).
Сводку команд, при помощи которых компилируются и компонуются программы, можно получить, введя команду mhelp. Напоминаем, что пользоваться надо именно этими командами, а не умолчаниями компилятора.
Изготовление программы, как и на обычной машине, включает компиляцию и компоновку. В том и только в том случае, когда программа написана на "C", состоит из единственного файла и ничего, кроме printf, fopen и т. п. не требует, компоновка не нужна, можно запускать непосредственно результат компиляции.
Команды компиляции:
C:
vcc file.c
Fortran-77:
vf77 file.f
Fortran-90:
vf90 file.f
В результате получится "file.o". В этих командах можно добавлять ключи компиляторов по своему усмотрению, например:
vcc -O4 myfile.c
Компиляция с HPF описывается в отдельном документе.
Команды компоновки:
C:
cld file1 ... filen
C:
fld file1 ... filen
HPF:
hpfld file1 ... filen
Например:
fld -o taskrun *.o
Ключ "-o", как правило, нужен - иначе получится a.out.
Как работает система запуска
Задачей называется параллельная прикладная программа, предназначенная для выполнения на нескольких процессорах системы МВС-1000. Запуск задачи на счет осуществляется следующим образом:
- На каждый из выбранных для исполнения задачи процессоров загружается ОС модуля.
- В ОС осуществляется переход в рабочий каталог задачи.
- Происходит загрузка в ОС объектного модуля задачи.
- ОС из загруженного объектного модуля задачи вызывается на исполнение функция задачи. Процесс, порождаемый при этом на конкретном процессоре в конкретной ОС назовем процессом задачи. В функцию задачи при ее вызове в качестве параметров передаются логический номер процессора, на котором запущен процесс задачи и общее количество процессоров, выделенных задаче.
Другими словами, предполагается, что:
- Параллельная задача будет выполняться на нескольких процессорах.
- Выполняющаяся задача представляет из себя совокупность параллельных процессов (процессов задачи), каждый из которых выполняется на своем процессоре.
- Задача должна быть подготовлена пользователем в виде одного (или нескольких) объектного модуля, содержащего в том числе и функцию задачи.
- Процесс задачи порождается загрузкой в ОС объектного модуля задачи и вызова из него функции задачи.
- Функция задачи должна быть написана пользователем в предположении, что при ее вызове ей будет передано два параметра - логический номер процесса задачи и общее количество процессов задачи.
- Весь производимый процессом задачи в процессе выполнения стандартный вывод (печать на экран) будет перенаправлен в выходной файл соответствующего процесса. Стандартный ввод (как с клавиатуры) процесс задачи может получить через входной файл. Входные и выходные файлы процессов задачи создаются в рабочем каталоге задачи на host-машине (далее - каталоге стандартного ввода/вывода) и имеют номера, соответствующие логическим номерам процессов задачи. Пользователь может сам сформировать входные файлы для любого процесса задачи. По желанию пользователя стандартный вывод любого из процессов задачи может быть осуществлен не в выходной файл, а на экран. Номер этого процесса назовем номером консольного вывода.
- Задача пользователя выполняется на МВС-1000 определенное время (по умолчанию - 5 часов) и определенное количество раз (по умолчанию - 1). Пользователь имеет возможность самостоятельно специфицировать эти параметры. По истечении специфицированного времени задача будет снята со счета.
- Для автоматизации процесса запуска задачи и служит система запуска задач.
Паспорт задачи
Для того, чтобы система запуска смогла понять, что хочет запустить пользователь, на каждую задачу пользователь должен оформить паспорт (образ) задачи. Паспорт задачи содержит следующую информацию:
- символьное имя задачи;
- имя объектного модуля задачи;
- имя функции задачи;
- имя рабочего каталога задачи;
- имя каталога стандартного ввода/вывода;
- количество необходимых задаче процессоров;
- номер консольного вывода;
- максимальное время счета;
- количество повторов;
- признак наличия собственных входных файлов для процессов задачи.
Для каждого пользователя host-машина ведет персональную базу паспортов (образов) задач.
Каждая запущенная задача получает уникальное имя, состоящее из символьного имени задачи и ее номера, что позволяет запускать одну и ту же задачу одновременно в нескольких экземплярах. Для каждого экземпляра система создаст собственный каталог стандартного ввода/вывода.
Пользовательский конфигурационный файл системы запуска.
Чтобы система запуска задач работала правильно, необходимо следить за правильными ее настройками. Эти настройки для каждого пользователя сохраняются в файле .crunmvs, который должен находиться в домашнем каталоге пользователя. Формат файла следующий:
# Это комментарий # Следующая строка - название секции [General] # Далее идет содержимое секции # Следующая срока определяет имя каталога # для временных файлов # (где системе можно мусорить) # Если имя не задано или задано неправильно # система будет использовать каталог /tmp tmp_directory = ~/runmvs # Следующая срока определяет имя host-машины host = alpha # Следующая срока определяет имя редактора # В некоторых случаях, оговоренных ниже, # система вызывает редактор для правки файлов # Здесь Вы можете указать свой любимый редактор user_editor = emacs # Следующая строка - название секции # Данная секция необязательна и # содержит информацию о имени и пароле пользователя # на host-машине. Используется системой для автоматической # авторизации пользователя [Login] # Далее идет содержимое секции # Следующая срока определяет имя пользователя # на host-машине user = LACIS # Следующая срока определяет пароль пользователя# для host-машины password = tmsC40
При отсутствии секции "Login" имя и пароль будут запрашиваться системой при каждом вызове любой команды системы запуска. Занося данные о Вашем имени и пароле в конфигурационный файл, будьте внимательны - права на чтение и запись файла должны иметь только Вы. Установить правильные права доступа можно командой:
chmod 600 .crunmvs
Необходимо отметить, что Ваши пароли на сервере (alpha2) и на host-машине (alpha) могут различаться. Для замены пароля на host-машине необходимо набрать команду:
telnet alpha
Система предложит Вам сменить Ваш пароль.
Вызов системы запуска
Имя программы, реализующей функции системы запуска, - runmvs. Данная программа может быть вызвана тремя способами: с помощью команд-алиасов, вызовом в интерактивном режиме и вызовом с заданием опций в командной строке. Для вызова в интерактивном режиме просто наберите в командной строке:
runmvs
Программа запустится, установит соединение с host-машиной и выдаст пользователю интерактивное меню. Функции меню будут рассмотрены ниже, а сейчас подробнее остановимся на командах-алиасах. Рассмотрим их по группам.
Создание паспортов задач
Как уже отмечалось, host-машина ведет для каждого пользователя персональную базу паспортов задач, в терминологии системы - образов задач (task image). Прежде чем задача сможет быть запущена, необходимо оформить ее паспорт.
Оформление нового паспорта осуществляется командой
madd [имя_задачи]
В качестве необязательного параметра передается имя оформляемой задачи. При отсутствии параметра система спросит имя задачи первым вопросом.
Далее по команде madd система начнет задавать пользователю следующие вопросы:
- имя объектного модуля;
- имя функции задачи (вызываемой функции);
- имя рабочего каталога задачи;
- имя каталога стандартного ввода/вывода;
- количество требуемых процессоров для задачи;
- номер консольного вывода;
- признак наличия пользовательских входных файлов для процессов задачи.
Имя объектного модуля - это имя файла, в котором находится оттранслированный пользователем объектный модуль. Если этот файл размещается в рабочем каталоге задачи, то можно просто указать его имя. Если файл находится где-то в другом месте, необходимо указать полный путь к нему.
Имена рабочего каталога и каталога стандартного ввода/вывода задаются в виде полного пути. Допускается наличие символа "~" (тильда) в начале пути, в этом случае система подставит вместо этого символа имя домашнего каталога пользователя. ВНИМАНИЕ! Как рабочий каталог, так и каталог стандартного ввода/вывода, должны находится внутри дерева ("ниже") домашнего каталога пользователя. Выход за пределы своего домашнего каталога запрещен пользователю системы. То же замечание относится и к операциям с файлами внутри пользовательской параллельной программы.
При ответе на вопрос о количестве требуемых задаче процессоров можно как задать это количество явно, так и ответить словом any. Этим Вы говорите системе, что определите количество процессоров непосредственно перед стартом задачи, а система, в свою очередь, спросит Вас об этом при запуске задачи.
То же замечание относится и к номеру консольного вывода. В ответ на этот вопрос Вы можете также ответить словом none, что будет означать, что вывод на экран не нужен Вам ни от какого процесса задачи.
Если Вы не собираетесь задавать собственные файлы стандартного ввода (входные файлы) для своей задачи, ответьте на вопрос об этом no. Как задавать подобные файлы будет описано ниже.
Отметим, что каждый вопрос содержит ответ по умолчанию (этот ответ указывается в квадратных скобках). Выбрать ответ по умолчанию можно простым нажатием Enter.
Ответы на перечисленные вопросы задают системе основные характеристики задачи. После их задания система спросит Вас, правильно ли Вы все ввели, не нужно ли что-либо изменить в Ваших ответах. При положительном ответе (y) система еще раз задаст вопросы об основных характеристиках задачи, при отрицательном пойдет дальше.
Далее последует вопрос, не желаете ли Вы задать дополнительные характеристики задачи. При желании Вы можете задать следующие дополнительные характеристики:
- требуемое задаче время (в минутах);
- требуемое задаче количество повторов.
Если Вы откажетесь от задания этих параметров, система подставит их по умолчанию: время, равное 300 минутам; количество повторов, равное единице. Будьте внимательны, если собираетесь считать дольше. Система снимет задачу с исполнения точно по истечении заданного Вами (или принятого по умолчанию) времени.
После задания дополнительных характеристик Вам вновь предложат вопрос, не желаете ли Вы что-либо поменять. Если все задано правильно, ответьте n.
На этом оформление паспорта задачи закончено. Признаком удачного завершения этой процедуры служит сообщение системы
Task added successfully
Просмотр паспортов задач
Посмотреть, какие паспорта заведены в системе, можно, выполнив команду:
mls [имя_задачи]
Если Вы опустите параметр в этой команде, будет выдан список всех ваших задач с оформленными паспортами. При задании в качестве параметра имени задачи система выдаст на экран данные из ее паспорта.
Изменение паспорта задачи
Для изменения паспорта задачи служит команда:
medit [имя_задачи]
При задании в качестве параметра имени задачи Вам будет предложено изменить ее характеристики. При этом будут задаваться вопросы, аналогичные вопросам в команде madd. По умолчанию будут подставлены старые значения.
При отсутствии параметра команда medit выдаст список всех имеющихся паспортов и предложит пользователю ввести номер того паспорта, который надо отредактировать. Далее будут предложены те же вопросы.
Признаком удачного завершения операции редактирования служит сообщение системы:
Task updated successfully
Удаление паспорта задачи
Если задача более не нужна, удалить ее паспорт можно командой:
mdel [имя_задачи]
При задании в качестве параметра имени задачи произойдет удаление паспорта задачи с заданным именем. При отсутствии параметра команда mdel выдаст список всех имеющихся паспортов и предложит пользователю ввести номер того паспорта, который надо удалить. Признаком удачного завершения операции удаления служит сообщение системы:
Task deleted successfully
Запуск задачи на счет
Если Вы правильно оформили паспорт задачи, запустить ее можно командой:
mrun [имя_задачи]
При задании в качестве параметра имени задачи произойдет попытка запуска задачи с заданным именем. При отсутствии параметра команда mrun выдаст список всех имеющихся паспортов и предложит пользователю ввести номер паспорта задачи, которую надо запустить.
При запуске система проверяет корректность данных паспорта. При обнаружении ошибок выдается сообщение пользователю, а запуск останавливается.
Если пользователь задал в паспорте значение any для числа процессоров или номера консольного вывода, то система попросит пользователя явно указать значения этих параметров перед запуском задачи.
Удачно запущенная задача получает определенный номер, который добавляется к имени задачи. Это позволяет пользователю запускать одновременно запускать несколько экземпляров задачи с одним и тем же именем - система присвоит каждому экземпляру задачи уникальный номер. По завершении задачи ее номер "освобождается" и будет использован повторно.
При удачном старте, если пользователь задал номер консольного вывода, на экран станет поступать выдача от заказанного процесса задачи. Если номер консольного вывода не задан, система выдаст пользователю следующую информацию:
- номера свободных процессоров в системе на момент запуска задачи;
- номера выделенных под задачу процессоров в порядке логической нумерации;
- сведения о принятых системой установках по умолчанию.
Завершает выдачу сообщение об удачном старте задачи, причем в сообщении указывается присвоенный задаче номер, например:
Task "test.1" started successfully
Получение информации о запущенных задачах.
Информация о запущенных пользователем задачах можно получить с помощью команды:
mps [имя_задачи.номер_задачи]
При отсутствии параметра на экран будет выдан список всех запущенных пользователем и работающих на момент выдачи команды задач.
Параметром для команды служит имя задачи и (через точку) ее номер. При задании параметра система выдаст информацию о задаче - время старта (и завершения, если задача уже завершилась), логические номера процессов задачи, номера процессоров, на которых выполняется задача, номера прооцессов-агентов host-машины.
Завершение запущенной задачи
Завершить запущенную задачу можно командой:
mkill [имя_задачи.номер_задачи]
Параметром для команды служит имя задачи и (через точку) ее номер. Данная команда допускает задание в качестве параметра маски Unix-формата с использованием символов-джокеров. По этой команде будут завершены все задачи, имена которых удовлетворят заданной маске. Завершить все свои задачи можно командой:
mkill *
При отсутствии параметра пользователю будет выдан список всех запущенных задач и предложено ввести номер (по списку) той задачи, которую нужно завершить. Перед завершением задачи в этом случае будет задан вопрос о полном завершении задачи. Полное завершение задачи означает ее завершение без возможности повторов. В противном случае завершится только текущая итерация, и, если счетчик повторов не обнулился, задача будет запущена вновь. Это же замечание относится к команде mkill с заданным параметром - команда производит завершение лишь текущей итерации.
Безусловное полное завершение задачи происходит по команде
mterm [имя_задачи.номер_задачи]
Значение параметра данной команды аналогично mkill, только mterm вызывает полное завершение всех задач, имена которых удовлетворят заданной маске. Вызов mterm без параметров аналогичен вызову mkill без параметров.
Просмотр стандартного вывода процессов задачи
Стандартный вывод (печать на экран) любого из процессов задачи можно просмотреть с помощью команды:
mout [имя_задачи.номер_задачи [номер_процесса_задачи]]
При отсутствии параметров будет предложен выбор из списка запущенных задач. При отсутствии параметра номер_процесса_задачи будет предложен вопрос об этом номере. В качестве номера можно задать номер любого процесса задачи или log. В случае задания log на экран будет выведен стандартный вывод специального системного процесса-менеджера задачи.
Если Вы задали параметры команде mout, то она выдаст вам запрошенную информацию, даже если задача уже завершилась на момент вызова команды.
Прервать выдачу команды mout можно нажатием клавиш Ctrl-C. Снятие вывода НЕ означает снятие задачи - задача продолжит счет.
При запуске задачи система создаст в указанном в паспорте каталоге стандартного ввода/вывода подкаталог, имя которого будет совпадать с именем запущенной задачи (включая номер через точку). В этом подкаталоге и будут непосредственно размещены файлы стандартного ввода/вывода всех процессов задачи. Файлы стандартного ввода имеют имена input0 ... inputN, а файлы стандартного вывода - output0 ... outputN. Файл стандартного вывода процесса-менеджера имеет имя manager.log. Система сама не уничтожает эти файлы и подкаталог, зато перезаписывает их, если задача будет запущена повторно с этим же номером. После завершения задачи данные файлы полностью доступны пользователю.
Получение информации о свободных процессорах
Сколько на данный момент времени в системе имеется свободных процессоров можно узнать с помощью команды:
mfree
Использование собственных файлов стандартного ввода.
По умолчанию система сама формирует файлы стандартного ввода (входные файлы) для всех процессов задачи (файлы input0 ... inputN). Каждый такой стандартный файл содержит три строки - команды ОС модуля:
cd "имя_рабочего_каталога_задачи" ld "имя_объектного_модуля_задачи" функция_задачи(0,8)
Первая строка - это команда перехода в рабочий каталог пользователя. Вторая строка - команда загрузки в процессор объектного модуля задачи. Третья строка - вызов функции задачи.
Пользователь имеет возможность сформировать файлы стандартного ввода для любого процесса задачи. Сделать это можно двумя способами.
Если при формировании или изменении паспорта задачи на вопрос об использовании собственных входных файлов пользователь ответит yes, то система предложит выбрать номер процесса задачи, для которого следует сформировать такой файл. После выбора номера система вызовет определенный пользователем в конфигурационном файле (~/.crunmvs) редактор, в котором пользователь должен сформировать входной файл. Будьте внимательны при формировании файла - по умолчанию система подставит лишь первую строку стандартного файла (команду перехода в рабочий каталог задачи). Во входном файле пользователь может задавать любые команды и системные вызовы ОС, а также имитировать ввод с клавиатуры для процесса задачи (пользователям, чьи программы написаны на Фортране, следует учитывать особенности Фортрана по оформлению текстовых файлов). Сохраняя файл, система тем самым учитывает его, и, при следующем запуске задачи, если указан флаг yes в паспорте задачи, система использует заданный пользователем входной файл.
Система сама не уничтожает пользовательские входные файлы, они сохраняются в каталоге стандартного ввода/вывода с именами usr_input0 ... usr_inputN. Номер соответствует номеру процесса задачи.
Если вы укажете no в ответ на вопрос об использовании собственных входных файлов, то система проигнорирует их, даже если они сформированы и сохранены в каталоге стандартного ввода/вывода.
Другим способом формирования собственных входных файлов является следующий. После запуска задачи в каталоге стандартного ввода/вывода появится подкаталог с файлами стандартного ввода/вывода (см. пред. пункт). Вы можете взять файлы input0 ... inputN с нужными Вам номерами, скопировать их в каталог стандартного ввода/вывода (родительский по отношению к этим файлам), переименовать файлы в usr_input0 ... usr_inputN, а затем "вручную" отредактировать каждый из них. При этом не забудьте указать флаг yes для собственных входных файлов в паспорте задачи.
Формат файла-паспорта задачи и запуск задачи через него
Пользователь может оформить паспорт задачи в виде отдельного файла и потом запустить задачу с этим паспортом специальной командой. Формат файла-паспорта задачи следующий:
# Это комментарий # Следующая строка - название секции [General] # Далее идет содержимое секции # Следующая срока определяет имя задачи task_name = testmod # Следующая срока определяет имя # объектного модуля задачи object_module = mb3 # Следующая срока определяет имя # функции задачи calling_routine = main # Следующая срока определяет имя каталога # стандартного ввода/вывода host_directory = /usr/people/lacis/testmod/work # Следующая срока определяет имя рабочего # каталога задачи alpha_directory = /usr/people/lacis/testmod # Следующая срока определяет необходимое число # процессоров для выполнения задачи # Если указывается значение any, то число процессоров # должно быть определено при старте задачи cpu_count = any # Следующая срока определяет номер # консольного вывода, число в диапазоне от 0 до cpu_count-1 # Если указывается значение any, то номер консольного # вывода может быть задан при старте задачи # Если указывается значение none или число, равное # или большее cpu_count, то консольный вывод # отсутствует у всех процессов задачи console_output = none # Признак наличия собственных пользовательских # файлов стандартного ввода, # может быть yes или no user_input_files = no # Следующая строка - название секции # Секция не обязательная [TimeRequest] # Время (по максимуму), необходимое для выполнения задачи, # указывается в минутах limit = 240 # количество повторов задачи repeat_times = 2
Сформировав таким образом паспорт задачи и сохранив его в файле, Вы можете запустить задачу с указанным в паспорте именем с помощью команды:
mrunf "имя_файла-паспорта"
Реакция системы запуска при этом будет аналогичной команде mrun.
Запуск многомодульных задач
Если Вы хотите запустить задачу, у которой не один, а несколько объектных модулей, каждый из которых должен быть загружен на свой процессор, то необходимо сформировать файл-паспорт задачи следующего формата:
# Это комментарий # Следующая строка - название секции [General] # Содержимое секции аналогично предыдущему # примеру, за исключением параметра object_module # Значение этого параметра - # это имя секции (в квадратных скобках), # описывающей модули задачи object_module = [Modules] # Далее может идти содержимое секции [General] # или другие секции # Следующая строка - название секции # Секция определяет раскладку модулей по процессорам [Modules] # Формат секции следующий: # модули будут загружаться на процессоры # в порядке их указания в секции, # формат строки: # имя_модуля = (на_сколько_процессоров_загружать) # Если не указано, на сколько процессоров загружать, # для всех строк, кроме последней в секции, это будет # означать, что загружать указанный модуль надо # на 1 процессор # Модуль, указанный последним, будет загружен # на все оставшиеся процессоры # В данном примере (допустим, что всего заказано 8 процессоров): # модуль mod1 будет загружен на 1-й процессор # модуль mod2 будет загружен на 3 процессора - со 2-го по 4-й # модуль mod3 будет загружен на 5-й процессор # модуль mod4 будет загружен на все оставшиеся процессоры - # с 6-го по 8-й #mod1 #mod2 = (3) #mod3 = (1) #mod4
Указанные модули должны размещаться в рабочем каталоге задачи. Запуск задачи осуществляется с помощью указанной команды mrunf.
Другие формы вызова системы запуска
Система запуска может быть вызвана командой runmvs без параметров. Это означает запуск системы в интерактивном режиме. Пользователю выдается меню:
- Task list
- Run task
- Quit
Выбор первого пункта приводит к активации функций подготовки паспортов задач, второго пункта - к активации функций запуска и останова задач, третьего - к выходу из программы.
Функции подготовки паспортов задач описываются следующим меню:
- View the task list
- View a task from the task list
- Add a task to the task list
- Edit a task from the task list
- Delete a task from the task list
- Quit
Первый пункт - просмотр списка паспортов задач, второй - просмотр паспорт задачи из списка, третий - добавление нового паспорта задачи к списку, четвертый - редактирование паспорта задачи из списка, пятый - удаление паспорта задачи из списка, шестой - выход в предыдущее меню.
Функции запуска и останова задач описываются следующим меню:
- Run a task from the image list
- View the task run list
- View run task info
- Terminate running task
- View task output
- Quit
Первый пункт - выбор задачи из списка паспортов и запуск ее на счет, второй - просмотр списка запущенных задач, третий - просмотр информации о запущенной задаче, четвертый - завершение запущенной задачи, пятый - просмотр вывода процессов задачи шестой - выход в предыдущее меню.
При ответе на любые запросы программы пользователь может ввести символ q, что будет означать отказ от выполнения выбранной функции и выход в предыдущее меню.
Формат вызова команды runmvs может быть следующим:
runmvs [host] [ [-options] [ [name] [parameters] ] ]
Здесь:
- host - имя (IP-адрес) host-машины,
- options - опции, задающие серверную команду,
- name и parameters - аргументы серверных команд.
Параметры подробнее будут рассмотрены ниже.
При отсутствии параметра host его значение будет взято из файла конфигурации. При отсутствии параметра options клиент запустится в интерактивном режиме и предложит пользователю меню.
Параметр options может принимать одно из следующих значений (в скобках указана соответствующая команда-алиас):
- ls - просмотр списка образов задач пользователя (mls);
- ps - просмотр списка запущенных пользователем задач (mps);
- a - добавление образа задачи к списку пользователя (madd);
- e - редактирование образа задачи из списка (medit);
- d - удаление образа задачи из списка образов (mdel);
- r - запуск на счет задачи из списка образов (mrun);
- t - останов запущенной задачи из списка (mkill);
- term - останов запущенной задачи из списка (mterm);
- h - вывод на экран краткой справки по программе;
- o - просмотр стандартного вывода процесса задачи (mout).
Для всех перечисленных значений можно не указывать параметр name. В этом случае, если потребуется уточнение, к какому именно паспорту (запущенной задаче) следует применить команду, программа выдаст список паспортов (запущенных задач) и предложит выбор. При указании параметра name команда будет применена к паспорту (запущенной задаче) с указанным в параметре name именем. Для значения o, кроме того, после имени можно указать номер процесса задачи, от которого необходимо просматривать стандартный вывод.
Параметр options может принимать значение:
- rf - запуск на счет задачи из файла (mrunf)
в этом случае указание параметра name обязательно. Значение параметра name - это имя файла, содержащего паспорт запускаемой задачи.
Подготовка и запуск программ, использующих MPI
Для трансляции программ на языке С, использующих MPI используется команда:
mpicc -с <параметры>
В качестве параметров этой команды могут использоваться те же ключи, что и в команде запуска стандартного компилятора С и имена исходных файлов подлежащих трансляции.
Для трансляции программ на языке Фортран, использующих MPI используется команда:
mpif77 -с <параметры>
В качестве параметров этой команды могут использоваться те же ключи, что и в команде запуска стандартного компилятора Фортрана и имена исходных файлов подлежащих трансляции.
Если главная программа исполняемого модуля написана на С, подготовка исполняемого модуля из объектных производится с помощью команды
mpicc -o <имя исполняемого модуля > <параметры>
В качестве параметров этой команды могут использоваться ключи редактора связей и имена объектных файлов и библиотек.
Если главная программа исполняемого модуля написана на Фортране, подготовка исполняемого модуля из объектных производится с помощью команды
mpif77 -o <имя исполняемого модуля > <параметры>
В качестве параметров этой команды могут использоваться ключи редактора связей и имена объектных файлов и библиотек. При этом имя исполняемого модуля должно совпадать именем программы, указанным в операторе PROGRAM.
Запуск на исполнение программы производится с помощью команды:
mpirun -np <число_используемых_процессоров> <имя_модуля>
При этом образуется файл паспорта задачи <имя_модуля>.img, формат которого описан выше. Данный файл может быть использован в команде mrunf.
Работа пользователя через Интернет
Общие понятия
Построение системы МВС-1000 с точки зрения пользователя Internet выглядит следующим образом. Система состоит из четырех важных компонент: многопроцессорного вычислителя, управляющей ЭВМ (далее - host-машина), сервера и шлюза. Host-машина и сервер представляют собой рабочие станции Alpha. Шлюз - рабочая Intel-совместимая станция с ОС Linux. Для примеров далее будет считаться, что сетевое имя host-машины - alpha, сетевое имя сервера - alpha2, имя шлюза - gateway.
Функции вычислителя, host-машины и сервера описаны выше. Рассмотрим функции шлюза.
Шлюз является рабочим местом пользователей Internet. На шлюзе виден под тем же именем домашний каталог пользователя на сервере. При этом каждый пользователь видит лишь свой домашний каталог, чем обеспечивается разграничение доступа. На шлюз пользователи "входят" из Internet, здесь же они выполняют все действия по подготовке программ и данных и выполнению программ на вычислителе.
Трансляция и запуск программ для МВС-1000 в данной ситуации происходит следующим образом. Системным администратором МВС-1000 поддерживается ограниченный набор команд, которые пользователь Internet, находясь на шлюзе, может выполнить на сервере и host-машине. Тем не менее, данного набора команд полностью хватает для изготовления всех возможных на сегодня приложений для МВС-1000 и их выполнения на вычислителе. В состав данного набора команд входят вызовы всех компиляторов для МВС-1000 и все команды запуска задач (см. выше). На шлюзе данные команды (трансляции и запуска) имеют точно такие же названия и форматы, как и на сервере.
При выполнении команды компиляции на шлюзе запускается специальная программа, которая соединяется с сервером и передает ему на исполнение команду компиляции. Поскольку домашний каталог пользователя доступен и на шлюзе и на сервере с одинаковым именем, то результаты компиляции можно наблюдать сразу и непосредственно. Пользователь совершенно спокойно может включать эти вызовы команд компиляции в свои make-файлы - все должно работать.
Старт (завершение, получение информации) задачи инициируется запуском на шлюзе пользователем команд уже описанной системы запуска. Программа, принимающая от пользователя эти команды на шлюзе, соединяется с host-машиной и передает ей команды для исполнения.
Порядок работы пользователя
Для работы из Internet зарегистрированный в системе пользователь должен:
- Установить на своем компьютере систему, поддерживающую протокол ssh.
- 2. Зайти с использованием этого протокола на шлюз gateway.
- 3. Далее пользователь действует по правилам, приведенным выше, как будто он находится непосредственно на сервере alpha2.
Пользователю доступна оболочка Midnight Commander (напоминающая Norton), которую можно вызвать, выполнив команду:
mc -c -a
Пользовательский конфигурационный файл
Формат и имя пользовательского конфигурационного файла аналогичны формату конфигурационного файла пользователя локальной сети (см.выше). Файл называется .crunmvs и должен находиться в домашнем каталоге пользователя. Формат файла следующий :
# Это комментарий # Следующая строка - название секции # Все строки - аналогичны уже упоминавшимся # Добавляется только одна строка [General] tmp_directory = ~/tmp host = alpha user_editor = /usr/local/bin/mcedit # Добавленная срока определяет имя сервера compile_server = alpha2 [Login] user = USER password = tmsC40
При отсутствии секции Login имя и пароль будут запрашиваться системой при каждом вызове любой команды системы запуска и компиляции.
Необходимо отметить, что Ваши пароли на сервере (alpha2) и на host-машине (alpha) должны быть одинаковыми и могут изменяться только системным администратором. Для замены пароля на host-машине и сервере свяжитесь с системным администратором МВС-1000. Заменить свой пароль на шлюзе Вы можете сами, выполнив команду:
passwd
Копирование файлов
Для копирования файлов пользователь может воспользоваться ftp-клиентом, который доступен на шлюзе gateway. Копирование файлов возможно только через промежуточный ftp-сервер. При этом шлюз gateway может выступать только в роли ftp-клиента (не может быть сервером).
Отметим, что в составе оболочки Midnight Commander имеется встроенный удобный ftp-клиент.
Использование программы ssh для пользователей UNIX
При использовании, в качестве рабочей операционной системы, UNIX Вы можете использовать, при установлении соединения с удаленным сервером института, программу ssh. Для этого введите в командной строке:
ssh -l имя пользователя gateway.kiam.ru.
где "имя пользователя" - имя, под которым пользователь зарегистрирован на удаленном сервере.
© Лаборатория Параллельных Информационных Технологий, НИВЦ МГУ