Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемmvs.icc.ru
1 ВВОДНАЯ ЛЕКЦИЯ ПО ПАРАЛЛЕЛЬНОМУ ПРОГРАММИРОВАНИЮ НА ВЫЧИСЛИТЕЛЬНОМ КЛАСТЕРЕ МВС-1000/16 ИДСТУ СО РАН Новопашин А.П. ИДСТУ СО РАН
2 Вычислительные кластеры Вычислительный кластер - это совокупность компьютеров (вычислительных узлов), объединённых единой коммуникационной средой для решения одной или нескольких вычислительных задач. MBC-1000/16 ИДСТУ СО РАН - однородный вычислительный кластер из 16 SMP-узлов Преимущества кластерного подхода: экономичность неограниченная масштабируемость надежность высокая степень готовности Иркутский суперкомпьютерный центр коллективного пользования
3 Вычислительный кластер МВС-1000/16 (ФГУП Квант (Москва), ИПМ РАН)) Основу вычислительной мощности кластера составляют 16 вычислительных узлов на базе процессоров Intel Xeon, объединенных c помощью интерфейсов двух типов: Myrinet и Gigabit Ethernet. Пиковая производительность ~170 GFlops. Реальная производительность на тесте Massively Parallel Linpack ~100 GFlops. Иркутский суперкомпьютерный центр коллективного пользования
4 Структура МВС-1000/16 Иркутский суперкомпьютерный центр коллективного пользования
5 Состав кластера: 16-портовый коммутатор Myrinet M3-E16 с двумя коммутационными платами на 8 оптических портов – M3-SW16-8F 24-портовый коммутатор Gigabit Ethernet AT-GS924i 16 вычислительных узлов (ВУ) (один из которых – управляющий (УВУ)) на базе серверной платформы Supermicro SuperServer 6013P-i. Конфигурация ВУ: 2 x CPU Intel Xeon 2,667 GHz RAM 2 GB HDD IDE 80 GB Maxtor LAN Gigabit Ethernet NIC Myrinet M3F-PCIXD-2 Конфигурация УВУ: 2 x CPU Intel Xeon 2,667 GHz RAM 2 Gb 2 x HDD IDE 80 GB Maxtor 2 x LAN Gigabit Ethernet Иркутский суперкомпьютерный центр коллективного пользования
6 Программное обеспечение: Операционная система – Gentoo Linux (ядро ) Коммуникационные среды – реализации MPI (LAM (v.7.0.3) и MPICH-GM (v.1.2.6)) и PVM (PVM-GM (v.3.4.4)) Компиляторы GNU C/C++/F77 (v.3.4.4) и Intel C/C++/F90/F95 (v.8.1) Библиотеки Intel Math Kernel Library (v.7.0), SCALAPACK (v.1.7), PETSc (v.2.3.1) и др. Системы параллельного программирования DVM (v.3.95), HPF Adaptor (v.10.2), Норма (v.0.13) Система мониторинга Ganglia (v.3.0.1) Система управления прохождением параллельных задач Иркутский суперкомпьютерный центр коллективного пользования
7 Как поделить между процессорами работу Как поделить между процессорами данные Как организовать доступ к удаленным данным или обмен данными, которые в процессе вычислений нужны одному процессору, в то время как хранятся на другом. Распределение вычислений и данных должно быть согласованным и выполняться с учетом чередования последовательных и параллельных участков программы. Иркутский суперкомпьютерный центр коллективного пользования Сложность параллельного программирования систем с распределенной памятью:
8 Иркутский суперкомпьютерный центр коллективного пользования
9 Модели параллелизма Модель с общей памятью (МОП). Процессы разделяют общее адресное пространство, отсутствуют ограничения на использование общих данных, предполагается явная спецификация общих данных и упорядочение доступа к ним с помощью средств синхронизации. Логически независимые нити (потоки) вычислений определяются на уровне функциональных задач или витков цикла (пример - OpenMP). Модель параллелизма по данным (МПД). Программист распределяет данные по процессорам вычислительной системы. Вычисления распределяются по правилу собственных вычислений - каждый процессор вычисляет только те данных, которые распределены на этот процессор (пример - HPF). Модель передачи сообщений (МПС). Каждый процесс имеет собственное локальное адресное пространство. Обработка общих данных и синхронизация осуществляется посредством передачи сообщений (пример - стандарт MPI). Это основная модель для вычислительных кластеров.
10 MPI (Message Passing Interface) - стандартизованный интерфейс для построения программ по модели обмена сообщениями. MPI - наиболее широко используемый и динамично развивающийся интерфейс в своем классе. Существуют бесплатные и коммерческие реализации для большинства суперкомпьютерных платформ. Достоинства: Возможность использования в языках Фортран, Си, Си++ Возможность совмещения обменов сообщениями и вычислений Несколько режимов передачи сообщений Широкий набор коллективных операций Широкий набор редукционных операций Удобные средства именования адресатов сообщений Возможность задания типа передаваемой информации Недостатки: Слишком сложен для прикладного программиста (программирование на низком уровне) Иркутский суперкомпьютерный центр коллективного пользования МPI
11 MPI-2 – дополнен такими важными элементами функциональности как: Динамическое создание и уничтожение процессов. Односторонние коммуникации и средства синхронизации для организации взаимодействия процессов через общую память. Параллельные операции ввода-вывода (для эффективного использования существующих возможностей параллельного доступа многих процессоров к различным дисковым устройствам). Наиболее популярные реализации для кластеров: MPICH (Argonne National Laboratory). Поддерживаются кластеры на базе SMP-узлов. LAM (Ohio Supercomputer Center). Реализация MPI и среда разработки MPI-программ для гетерогенных UNIX-кластеров. Иркутский суперкомпьютерный центр коллективного пользования МPI-2
12 Иркутский суперкомпьютерный центр коллективного пользования Модели параллелизма Модель с общей памятью (МОП). Процессы разделяют общее адресное пространство, отсутствуют ограничения на использование общих данных, предполагается явная спецификация общих данных и упорядочение доступа к ним с помощью средств синхронизации. Логически независимые нити (потоки) вычислений определяются на уровне функциональных задач или витков цикла (пример - OpenMP). Модель параллелизма по данным (МПД). Программист распределяет данные по процессорам вычислительной системы. Вычисления распределяются по правилу собственных вычислений - каждый процессор вычисляет только те данных, которые распределены на этот процессор (пример - HPF). Модель передачи сообщений (МПС). Каждый процесс имеет собственное локальное адресное пространство. Обработка общих данных и синхронизация осуществляется посредством передачи сообщений (пример - стандарт MPI). Это основная модель для вычислительных кластеров.
13 OpenMP - это интерфейс прикладной программы (API), расширяющий последовательный язык программирования (Фортран, Си, Си++) набором директив распараллеливания. Стандарт параллельного программирования для систем с общей памятью (SMP-систем). OpenMP реализует параллелизм по управлению: Программа начинает свое выполнение как один процесс (главная нить), пока не встретится параллельная область программы (ограничивается директивами PARALLEL и END PARALLEL). При входе в параллельную область главная нить порождает некоторое число подчиненных ей нитей, образуя группу нитей. Все операторы программы, находящиеся в параллельной конструкции, выполняются всеми нитями группы параллельно, пока не произойдет выход из параллельной области или не встретится одна из конструкций распределения работ (DO, SECTIONS или SINGLE). При выходе из параллельной конструкции все порожденные ранее нити сливаются с главной, которая продолжает выполняться далее последовательно. Иркутский суперкомпьютерный центр коллективного пользования OpenМP
14 Достоинства: Реализация возможностей систем с общей памятью Явное и полное задание параллелизма программистом Возможность инкрементального распараллеливания последовательной программы без изменения ее структуры (для программ с большими параллельными циклами) Единственность разрабатываемого кода – отсутствие необходимости поддерживать последовательный и параллельный вариант программы (директивы OpenMP игнорируются обычными компиляторами) Гибкий механизм контроля над поведением параллельного приложения Поддержка наиболее распространенных языков программирования Недостатки: Ограничения, характеризуемые областью применения Иркутский суперкомпьютерный центр коллективного пользования OpenМP
15 Гибридная модель как попытка распространения OpenMP на мультикомпьютеры и кластерные системы: программа представляет собой систему взаимодействующих MPI-процессов, а каждый процесс программируется на OpenMP. Гибридный подход эффективен, когда в программе присутствует два уровня параллелизма – параллелизм между подзадачами и параллелизм внутри подзадачи (многоблочные методы). Тогда c помощью MPI организуется взаимодействие подзадач - обмен между ними граничными значениями, а сами подзадачи распараллеливаются путем распределения между процессорами элементов массивов и витков циклов (роль OpenMP). Основной недостаток подхода: программисту требуется знать и уметь использовать две разные модели параллелизма и разные инструментальные средства. Иркутский суперкомпьютерный центр коллективного пользования OpenМP+MPI
16 Иркутский суперкомпьютерный центр коллективного пользования Модели параллелизма Модель с общей памятью (МОП). Процессы разделяют общее адресное пространство, отсутствуют ограничения на использование общих данных, предполагается явная спецификация общих данных и упорядочение доступа к ним с помощью средств синхронизации. Логически независимые нити (потоки) вычислений определяются на уровне функциональных задач или витков цикла (пример - OpenMP). Модель параллелизма по данным (МПД). Программист распределяет данные по процессорам вычислительной системы. Вычисления распределяются по правилу собственных вычислений - каждый процессор вычисляет только те данных, которые распределены на этот процессор (пример - HPF). Модель передачи сообщений (МПС). Каждый процесс имеет собственное локальное адресное пространство. Обработка общих данных и синхронизация осуществляется посредством передачи сообщений (пример - стандарт MPI). Это основная модель для вычислительных кластеров.
17 HPF (High Performance Fortran) - расширения языка Фортран-90. HPF-2 - расширения языка Фортран-95. Часть расширений реализована в виде функций и операторов языка, а часть - в виде директив компилятору (которые являются комментариями языка Фортран). HPF реализует модель параллелизма по данным. Каждый массив разрезается несколькими гиперплоскостями на секции примерно одинакового объема, каждая из которых будет расположена на своем процессоре. Распределение данных производится в два этапа: с помощью директивы ALIGN задается соответствие между взаимным расположением элементов нескольких массивов с помощью директивы DISTRIBUTE группа массивов отображается на решетку процессоров. В HPF вся работа по распределению данных возлагается на программиста. Иркутский суперкомпьютерный центр коллективного пользования HPF
18 Достоинства: Параллелизм по данным является естественным параллелизмом вычислительных задач, для которых характерно вычисление по одним и тем же формулам множества однотипных величин – элементов массивов. Cохраняется последовательный стиль программирования. Программист не должен представлять программу в виде взаимодействующих процессов и заниматься низкоуровневым программированием передач сообщений и синхронизации. Распределение вычисляемых данных между процессорами – это не только самый компактный способ задать распределение работы между процессорами, но и способ повышения локализации данных. Чем меньше данных требуется процессору для выполнения возложенной на него работы, тем быстрее она будет выполнена. Недостатки: Имеющихся средств спецификации свойств программ часто оказывается недостаточно для эффективного распараллеливания (в частности, нерегулярных вычислений). Иркутский суперкомпьютерный центр коллективного пользования HPF
19 DVM-система (Distributed Virtual Memory & Distributed Virtual Machine) – единый комплекс средств разработки параллельных программ для научно-технических расчетов: Компилятор Fortran-DVM = язык Фортран + спец. комментарии Компилятор С-DVM = язык Си + специальные макросы Lib-DVM - система поддержки параллельного выполнения DVM-отладчик Анализатор производительности DVM-программ Предсказатель производительности DVM-программ Свойства языков Fortran-DVM и C-DVM: Специальные комментарии и макросы являются высокоуровневыми спецификациями (директивами) параллелизманевидимыми для стандартных компиляторов Один экземпляр программы для последовательного и параллельного счета Сохраняется последовательный стиль программирования Отсутствуют низкоуровневые передачи данных и синхронизации Иркутский суперкомпьютерный центр коллективного пользования DVM-система
20 Модель DVM реализует два уровня параллелизма: Параллелизм по данным реализуется распределением витков тесно-гнездового цикла между процессорами. При этом каждый виток такого параллельного цикла полностью выполняется на одном процессоре. Операторы вне параллельного цикла выполняются по правилу собственных вычислений. Параллелизм задач реализуется распределением данных и независимых вычислений на решетку процессоров. При вычислении значения собственной переменной процессору могут потребоваться как значения других собственных переменных, так и значения удаленных переменных. Все удаленные переменные должны быть указаны в директивах доступа к удаленным данным. Типы директив: Распределения данных Распределение вычислений Спецификация удаленных данных Иркутский суперкомпьютерный центр коллективного пользования Модель параллелизма DVM
21 В модели DVM параллельная программа на исходном языке Fortran-DVM (или C-DVM) преобразуется в программу на языке Фортран (или Си), содержащую вызовы функций системы поддержки, и выполняющуюся в соответствии с моделью SPMD на каждом выделенном задаче процессоре: В момент запуска программы существует единственная ветвь, которая начинает свое выполнение с первого оператора программы на всех выделенных для решения задачи процессорах. Все объявленные в программе переменные (за исключением специально указанных "распределённых" массивов) размножаются по всем процессорам. При входе в параллельную конструкцию (параллельный цикл или область параллельных задач) ветвь разбивается на определенное количество параллельных ветвей, каждая из которых выполняется на выделенном ей процессоре. При выходе из параллельной конструкции все ветви снова сливаются в единую ветвь. Иркутский суперкомпьютерный центр коллективного пользования Модель выполнения DVM
22 1.Легкость создания параллельных программ, размер параллельной программы по отношению к последовательной (HPF, DVM, OpenMP). 2.Эффективность разработанных параллельных программ (MPI, OpenMP+MPI - для однородных кластеров, DVM - для неоднородных). 3.Переносимость и повторное использование (HPF, DVM). 4.Качество и разнообразие средств отладки (DVM, MPI). Иркутский суперкомпьютерный центр коллективного пользования Сравнение подходов
23 ScaLAPACK Библиотека ScaLAPACK (Scalable LAPACK) – библиотека LAPACK, переработанная для использования на компьютерах с распределенной памятью; включает набор процедур для решения систем линейных уравнений, обращения матриц, нахождения собственных значений и др. Разработана с использованием PBLAS - параллельной версии библиотеки BLAS (Basic Linear Algebra Subroutines), включающей базовые операции линейной алгебры (перемножение матриц, умножение матрицы на вектор и т.д.). Библиотека может быть портирована на любую платформу, где поддерживается PVM или MPI. Иркутский суперкомпьютерный центр коллективного пользования Специализированные параллельные библиотеки
24 PETSc Библиотека PETSc (Portable, Extensible Toolkit for Scientific Computation) - набор процедур и структур данных для параллельного решения научных задач с моделями, описываемыми в виде дифференциальных уравнений с частными производными. Библиотека основана на использовании MPI, BLAS, LAPACK. Библиотека разработана в Argonne National Laboratory / MCS division. Распространяется бесплатно. Иркутский суперкомпьютерный центр коллективного пользования Специализированные параллельные библиотеки
25 PGAPack Библиотека PGAPack (Parallel Genetic Algorithm Library) параллельных генетических алгоритмов. Разработана в ANL/MCS (David Levine). AzTec Библиотека итерационных методов для решения больших систем линейных уравнений с разреженными матрицами. Иркутский суперкомпьютерный центр коллективного пользования Специализированные параллельные библиотеки
26 Parallel FFTW Высокпороизводительная параллельная библиотека для вычисления многомерного быстрого преобразования Фурье. ATLAS Библиотека ATLAS (Automatically Tuned Linear Algebra Software) позволяет автоматически генерировать и оптимизировать численное программное обеспечение для процессоров с многоуровневой организацией памяти и конвейерными функциональными устройствами. Базируется на BLAS. ATLAS позволяет получать "оптимальный" код для архитектуры целевого компьютера. Библиотека разработана в Argonne National Laboratory / MCS division. Распространяется бесплатно. Иркутский суперкомпьютерный центр коллективного пользования Специализированные параллельные библиотеки
27 Удаленный доступ в защищенном режиме Зарегистрироваться в качестве пользователя МВС-1000/16 - получить login и пароль. Установить на своем компьютере утилиту защищенного удаленного доступа по протоколу ssh (например, PuTTY). Зайти с использованием этой утилиты на host-машину (Host name: mvs.icc.ru Port: 22).mvs.icc.ru Создать директорию для своей программы, переписать туда программу и файлы с исходными данными (с преобразованием текстовых файлов в формат ОС UNIX). С этой целью рекомендуется использовать протокол защищенного копирования файлов scp (реализация в виде утилиты WinSCP). Средства удаленного доступа можно загрузить с сайта: Там же в разделе Пользователю находится инструкция по удаленному доступу к МВС-1000/16, руководство пользователя кластера и заявление, которое необходимо заполнить для регистрации. Иркутский суперкомпьютерный центр коллективного пользования
28 МВС-1000/16 для пользователя Иркутский суперкомпьютерный центр коллективного пользования С точки зрения пользователя МВС-1000/16 состоит из 4-х компонентов: многопроцессорного вычислителя; управляющей ЭВМ (host-машина); сервера доступа; файлового сервера. Сервер доступа объединен с управляющей ЭВМ и имеет сетевое имя irc-1, имена вычислительных узлов – irc-2, irc-3, …., irc-16. На файловом сервере каждый пользователь имеет свой домашний каталог /home/имя_пользователя. Сервер служит для подготовки и хранения исходных текстов программ пользователей, данных для пользовательских задач, результатов расчетов, для компиляции и подготовки самих задач. Управляющая ЭВМ служит для доступа пользователей, а также для запуска (завершения, управления) на многопроцессорном вычислителе пользовательских задач. На host-машине ведется очередь задач к вычислителю. В нашем случае файловый сервер объединен с управляющей ЭВМ.
29 Система запуска задач Задача (параллельная прикладная программа) пользователя выполняется на одном или нескольких процессорах вычислителя. Задачи запускаются и завершаются независимо друг от друга. Вычислитель делится между задачами динамически с точностью до узла. Узел не делится между задачами. При запуске задачи на счет она получает набор узлов с произвольными именами из числа свободных. При этом другие узлы задаче не доступны. Старт (завершение, получение информации) задачи инициируется пользователем на управляющем узле набором команд системы запуска. Система запуска задач прозрачна для программы, обслуживает исключительно взаимодействие системы с пользователем в процессе запуска программы на счет и последующего контроля. Иркутский суперкомпьютерный центр коллективного пользования
30 Типы задач. Планирование очередей Все задачи пользователей делятся на три категории: Отладочные задачи – это короткие по времени задачи, которые запускаются исключительно в целях отладки. Пакетные задачи – это средние по времени задачи, которые производят реальные расчеты и выполняются, не прерываясь. Фоновые задачи – задачи с большим временем счета, которые могут прерываться системой. Для фоновой задачи пользователь должен явно указать квант – минимальное время счета фоновой задачи, в течение которого задачу прерывать нельзя. Планирование очередей в каждый момент времени производится в соответствии с параметрами текущего режима планирования. Режим планирования определяется следующими параметрами: дата и время включения режима; максимальное время, отведенное для отладочных задач; максимальное время, отведенное для пакетных задач; число процессоров, которые «резервируются» для отладочных задач; шкала приоритетов пользователей. Иркутский суперкомпьютерный центр коллективного пользования
31 Пример команд компиляции MPI-приложений Для компиляции MPI-программ рекомендуется пользоваться командами: mpicc (для программ на С) mpiСС (для программ на С++) mpif77 / mpif90 (для программ на Фортране 77/90) Опция –o name позволяет задать имя name для получаемого исполняемого файла (по умолчанию a.out). Для оптимизации рекомендуется использовать ключ –fast, например: mpif77 –fast –o program program.f Если необходимо скомпилировать только объектный модуль, используется опция –c, например: mpiCC –c program2.c Для сборки многомодульных приложений целесообразно использовать утилиту make. Иркутский суперкомпьютерный центр коллективного пользования
32 Основные команды системы запуска задач Запуск на исполнение MPI-программы: mpirun [параметры_mpirun...] Параметры команды: -maxtime Максимальное время счета. От этого времени зависит положение задачи в очереди. После истечения этого времени задача принудительно заканчивается. -np Число процессоров, требуемое программе. -quantum Параметр указывает, что задача является фоновой, и задает размер кванта для фоновой задачи. -h - интерактивная подсказка по параметрам команды. Иркутский суперкомпьютерный центр коллективного пользования
33 Основные команды системы запуска задач Пользователь может оформить паспорт задачи в виде отдельного файла и потом запустить задачу с этим паспортом специальной командой. Формат файла-паспорта задачи приведен в руководстве пользователя. Запустить задачу с указанным в паспорте именем: mrunf Иркутский суперкомпьютерный центр коллективного пользования
34 Основные команды системы запуска задач Стандартный вывод (печать на экран) задачи можно просмотреть с помощью команды: mout [имя_задачи.номер_задачи [что_выдавать]] При отсутствии параметров будет предложен выбор из списка запущенных задач. При отсутствии параметра что_выдавать будет предложен вопрос. В качестве ответа можно задать либо out, что означает выдачу стандартного вывода, либо err, что означает просмотр стандартного вывода сообщений об ошибках, либо log (стандартный вывод специального системного процесса-менеджера задачи). Если Вы задали параметры команде mout, то она выдаст Вам запрошенную информацию, даже если задача уже завершилась на момент вызова команды. Иркутский суперкомпьютерный центр коллективного пользования
35 Основные команды системы запуска задач Завершение запущенной задачи: mkill [имя_задачи.номер_задачи] Полное завершение задачи c повторами: mterm [имя_задачи.номер_задачи] В качестве параметра указывается имя задачи и – через точку – ее номер. При отсутствии параметра пользователю будет выдан список всех запущенных задач и предложено ввести номер (по списку) той задачи, которую нужно завершить. Иркутский суперкомпьютерный центр коллективного пользования
36 Основные команды системы запуска задач Получение информации о запущенных пользователем задачах: mps [имя_задачи.номер_задачи] При отсутствии параметра на экран будет выдан список всех запущенных пользователем и работающих или находящихся в очереди на момент выдачи команды задач. Если задача находится в очереди, это будет отмечено словом queued рядом с именем задачи. Команда просмотра очереди (без параметров): mqinfo Иркутский суперкомпьютерный центр коллективного пользования
37 Основные команды системы запуска задач Определение статуса задачи ("в очереди", "запущена", "завершилась"): mqtest Удаление задачи из очереди: mqdel Команда получения информации о свободных процессорах: mfree Иркутский суперкомпьютерный центр коллективного пользования
38 Список литературы: [1] Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, с. [2] Лацис А. Как построить и использовать суперкомпьютер. - М.: Бестселлер, c. [3] Эндрюс Г.Р. Основы многопоточного, параллельного и распределеннго программирования. : Пер. с англ. - М.: Изд-во "Вильямс", c. [4] Немнюгин С.А., Стесик О.Л. Параллельное программирование для многопроцессорных вычислительных систем. - СПб.: БХВ-Петербург, с. [5] Основы параллельного программирования / К.Ю. Богачёв. - М.: БИНОМ. Лаборатория знаний, с. [6] Корнеев В.Д. Параллельное программирование в MPI. - Новосибирск: Изд-во СО РАН, с. …. Иркутский суперкомпьютерный центр коллективного пользования
39 Методические и учебные пособия: [1] Антонов А.С. "Введение в параллельные вычисления" : Методическое пособие. – М.: Изд-во Физического факультета МГУ, с. [2] Антонов А.С. "Параллельное программирование с использованием технологии MPI" : Учебное пособие. – М.: Изд-во МГУ, с. [3] Букатов А.А., Дацюк В.Н., Жегуло А.И. "Программирование многопроцессорных вычислительных систем". - Ростов-на-Дону: Изд-во ООО "ЦВВР", с. [4] Шпаковский Г.И., Серикова Н.В. "Программирование для многопроцессорных систем в стандарте MPI" : Пособие. – Минск: Изд-во БГУ, с. Основной информационный WEB-ресурс: (при поддержке Лаборатории параллельных информационных технологий Научно-исследовательского вычислительного центра МГУ). Иркутский суперкомпьютерный центр коллективного пользования
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.