Россия, г. Саранск |
Компиляция и запуск Microsoft High Performance Computing Server 2008
Для эффективной эксплуатации высокопроизводительных кластерных установок необходимо использовать сложный комплекс программных систем. Долгое время пользователям Windows кластеров приходилось одновременно использовать программное обеспечение нескольких производителей, что могло быть причиной проблем с совместимостью различных программ друг с другом. C выходом Compute Cluster Server 2003 (CCS), а затем и его приемника High Performance Server 2008 можно говорить о том, что компания Microsoft предоставляет полный спектр программного обеспечения, необходимый для эффективной эксплуатации кластера и разработки программ, в полной мере использующих имеющиеся вычислительные мощности.
3.1. Цель лабораторной работы
Цель данной лабораторной работы - научиться компилировать и запускать программы под управлением Microsoft High Performance Computing Server 2003 (HPC 2008).
- Упражнение 1 - Компиляция программы для запуска в HPC 2008.
- Упражнение 2 - Запуск последовательного задания.
- Упражнение 3 - Запуск параллельного задания.
- Упражнение 4 - Запуск множества заданий.
- Упражнение 5 - Запуск потока задач.
Примерное время выполнения лабораторной работы: 90 минут.
3.2. Общая схема выполнения заданий под управлением Microsoft High Performance Computing Server 2008
Для эффективного использования вычислительного ресурса кластера необходимо обеспечить не только непосредственный механизм запуска заданий на выполнение, но и предоставить среду управления ходом выполнения заданий, решающую, в том числе, задачу эффективного распределения ресурсов. Эти задачи эффективно решаются с использованием встроенных в HPC 2008 средств.
Дадим определение важнейшим понятиям, используемым в HPC 2008:
- Задание (job) - запрос на выделение вычислительного ресурсов кластера для выполнения задач. Каждое задание может содержать одну или несколько задач.
- Задача (task) - команда или программа (в том числе, параллельная), которая должна быть выполнена на кластере. Задача не может существовать вне некоторого задания, при этом задание может содержать как несколько задач, так и одну.
- Планировщик заданий (job scheduler) - сервис, отвечающий за поддержание очереди заданий, выделение системных ресурсов, постанову задач на выполнение, отслеживание состояния запущенных задач.
- Узел (node) - вычислительный компьютер, включенный в кластер под управлением HPC 2008.
- Сокет (socket) - один из, возможно, нескольких вычислительных устройств (процессоров) узла. Даже в том случае, если процессор содержит несколько ядер под количеством сокетов будет пониматься количество устройств физически вставленных в материнскую плату (например, на компьютере с 2 процессорами Intel Xeon по 2 ядра в каждом 2 сокета).
- Ядро (core) -
- Очередь (queue) - список заданий, отправленных планировщику для выполнения на кластере. Порядок выполнения заданий определяется принятой на кластере политикой планирования.
- Список задач (task list) - эквивалент очереди заданий для задач каждого конкретного задания.
Планировщик заданий HPC 2008 работает как с последовательными, так и с параллельными задачами. Последовательной называется задача, которая использует ресурсы только 1 процессора. Параллельной же называется задача, состоящая из нескольких процессов (или потоков), взаимодействующих друг с другом для решения одной задачи. Как правило, параллельным задачам для эффективной работы требуется сразу несколько процессоров. При этом, в случае использования MPI в качестве интерфейса передачи сообщений, процессы параллельной программы могут выполняться на различных узлах кластера. HPC 2008 включает собственную реализацию стандарта MPI2: библиотеку Microsoft MPI (MS MPI). В случае использования MS MPI в качестве интерфейса передачи сообщений необходимо запускать параллельные задачи с использованием специальной утилиты mpiexec.exe, осуществляющей одновременный запуск нескольких экземпляров параллельной программы на выбранных узлах кластера. Важно отметить, что непосредственным запуском задач занима ется планировщик, а пользователь может лишь добавить задачу в очередь, так как время ее запуска выбирается системой автоматически в зависимости от того, какие вычислительные ресурсы свободны и какие задания ожидают в очереди выделения им ресурсов. Таким образом, для исполнения программы в HPC 2008 необходимо выполнить следующие действия:
- Создать задание с описанием вычислительных ресурсов, необходимых для его выполнения.
- Создать задачу. Задача определяется при помощи той или иной команды, выполнение которой приводит к запуску на кластере последовательных или параллельных программ. Например, параллельная задача описывается при помощи команды mpiexec.exe с соответствующими параметрами (список узлов для ее запуска, имя параллельной программы, аргументы командной строки программы и др.).
- Добавить задачу к созданному ранее заданию.
Выделяют два особых вида заданий:
- Параметрическое множество задач (parametric sweep) - одна и та же программа (последовательная или параллельная), несколько экземпляров которой запускается (возможно, одновременно) с разными входными параметрами и разными файлами вывода.
- Поток задач (task flow) - несколько задач (возможно, одна и та же программа с разными входными параметрами) запускаются в определенной последовательности. Последовательность запуска объясняется, например, зависимостью некоторых задач последовательности от результатов вычислений предыдущих.
Далее в лабораторной работе на примерах будет показано, как компилировать и запускать последовательнее и параллельные задачи в HPC 2008. Кроме того, будут приведены примеры параметрического множества заданий и потока заданий.