Microsoft High Performance Computing Server 2008
Работа с заданиями
Как уже упоминалось выше, в HPC 2008 разделяют 2 отдельных понятия: задание (job) и задача (task). Под заданием понимается запрос на выделение вычислительных ресурсов, тогда как задача - это команда или программа, которая должна быть выполнена на кластере. Задание может содержать как одну, так и несколько задач. Ресурсы, выделенные заданию, остаются закрепленными за этим заданием до того момента, когда закончит выполнение последняя задача, входящая в задание.
Задачи могут быть последовательными или параллельными. Для запуска параллельных заданий, осуществляющих обмен сообщениями с использованием интерфейса MPI, необходимо использовать команду mpiexec. Информация о параметрах команды mpiexec и примеры использования можно найти в лабораторной работе " Microsoft High Performance Computing Server 2008".
Для облегчения серийных запусков задач и указания последовательности выполнения в HPC 2008 выделяют два особых вида заданий:
- Параметрическое множество задач (parametric sweep) - одна и та же программа (последовательная или параллельная), несколько экземпляров которой запускается (возможно, одновременно) с разными входными параметрами и разными файлами вывода,
- Поток задач (task flow) - несколько задач (возможно, одна и та же программа с разными входными параметрами) запускаются в определенной последовательности. Последовательность запуска объясняется, например, зависимостью некоторых задач последовательности от результатов вычислений предыдущих.
HPC 2008 предоставляет пользователю возможность выбрать, какой интерфейс использовать для запуска программ: графический, командный или интерфейс приложений. Каждый интерфейс имеет свои преимущества: графический интерфейс наиболее прост в использовании, командный интерфейс позволяет опытным пользователям автоматизировать запуск задач с использованием скриптов, прикладной интерфейс предоставляет неограниченные возможности интеграции с собственным программным обеспечением. Далее дается обзор каждого из интерфейсов. Более подробная информация по графическому и командному интерфейсам может быть получена в лабораторной работе.
Шаблоны заданий
Перед тем, как пользователи смогут запускать задания в Microsoft HPC 2008, администратор кластера должен задать правила, определяющие кто, на каких узлах и какие задания может запускать. Правила задаются с помощью, так называемых, шаблонов заданий ( job templates ). Изменить их может только администратор кластера.
- Шаблон заданий позволяет задать следующие параметры (см. рис. 2.11):
- Minimum Cores/ Maximum Cores - минимальное и максимальное число ядер, которые может выбрать пользователь для своих заданий,
- Minimum Nodes/ Maximum Nodes - минимальное и максимальное число узлов, которые может выбрать пользователь для своих заданий,
- Minimum Sockets/ Maximum Sockets - минимальное и максимальное число сокетов, которые может выбрать пользователь для своих заданий,
- Requested Resources - тип ресурсов, доступный для выбора (ядро, сокет, узел),
- Exclusive - опция определяет, может ли пользователь выбирать, будет ли его задача эксклюзивно использовать ресурсы (эксклюзивность означает невозможность запуска других задач на вычислительных ресурсах одновременно с первой задачей). Опция позволяет администратору также задать значение параметра по умолчанию,
- Run Until Cancelled - возможность задания параметра " Run Until Cancelled " позволяет пользователю запускать задания, которые не будут сняты до истечения заданного временного ресурса или принудительного снятия пользователем или администратором. Это позволяет сохранить закрепление вычислительных ресурсов за пользователем для последующего запуска новых задач по результатам выполнения предыдущих,
- Priority - опция определяет список допустимых приоритетов заданий,
- Auto Calculate Min/ Auto Calculate Max - задание опции " Auto Calculate " позволяет планировщику самостоятельно определять соответственно минимальные и максимальные требования задания к ресурсам на основании требований входящих в задание задач. С помощью шаблонов заданий администратор может запретить пользователям самостоятельно выбирать эту опцию,
- FailOnTaskFailure - опция определяет, должна ли система управления завершить выполнение задания, если выполнение входящей в него задачи завершилось с ошибкой,
- Preemptable - настройка " preemptable " позволяет системе управления прерывать выполнение низкоприоритетных задач при появлении более приоритетных.
Графический интерфейс
Графический интерфейс управления заданиями представлен в HPC 2008 утилитой HPC Job Manager (см. рис. 2.12). Утилита выводит список заданий на кластере с указанием их текущего состояния, пользователя, осуществившего запуск, приоритета и другой информации. При выборе задания в нижнем списке отображаются задачи, из которых состоит выделенное задание. Предусмотрена возможность фильтрации заданий по различным параметрам.
Запуск нового задание осуществляется командой Action->Job Submission->New Job. Остановка и изменение параметров заданий и задач осуществляется соответствующими командами контекстного меню.
Командный интерфейс
HPC 2008 предоставляет командный интерфейс для управления заданиями и вычислительными узлами. Эти команды позволяют пользователям создавать, отправлять и контролировать задания, а администраторам - управлять самим кластером. Также командный интерфейс может быть использован для написания сценариев, так, например, администраторы могут автоматизировать некоторые операции по работе с очередью заданий или с вычислительными узлами.
Собственно сам интерфейс состоит из пяти ключевых команд: job, task, cluscfg, clusrun и node. Эти команды, вызываемые с различными аргументами, дают доступ практически ко всей функциональности планировщика заданий. Для удобства пользователей вся необходимая им функциональность доступна через команды job и task. Фактически эти две команды полностью покрывают всю функциональность графического менеджера заданий.
Сочетание, например, следующих трех команд: job new, job add, job submit и job view, с соответствующими аргументами, позволяет создать новое задание, поставить его в очередь, подтвердить необходимость запуска, а затем узнать его состояние. Для быстрого запуска задания можно воспользоваться, например, следующей строкой:
job submit /numpcores:4 /stdin:infile /stdout:outfile mpiexec myapp.exe
В результате на кластере будет запущено параллельное приложение myapp из 4 процессов, которое в качестве стандартного потока ввода использует файл c именем infile, а в качестве стандартного потока вывода - outfile.
Командный интерфейс достаточно хорошо документирован и достаточно прост в освоении. Кроме того, Microsoft предлагает широкий выбор уже готовых сценариев для работы с HPC 2008, которые будут полезны каждому администратору.
PowerShell
PowerShell - скриптовый язык, разработанный Microsoft для ускорения и автоматизации задач, выполняемых системным администратором. PowerShell работает с объектами Microsoft .NET, что позволяет использовать всю мощь.NET, сохраняя простоту интерактивной оболочки. Пользователи HPC 2008 имеют возможность управлять системой с помощью PowerShell, что предоставляет существенно большие возможности, чем те, что дает обычная командная строка. Проиллюстрируем мощь и простоту PowerShell на коротком примере (пример из [2.1]). В следующем скрипте администратор собирает все узлы имеющие, как минимум, 8 процессоров, в группу "FastNodes". После этого он тестирует группу, запуская на ней задание "TestJob":
Get-HpcNode | where {$_.NumProcessors -gt 8} | Add-HpcGroup "FastNodes" New-HpcJob -Name "TestJob" -NodeGroup "FastNodes" | Submit-HpcJob