Введение в параллельные вычисления. Основы программирования на языке СИ с использованием интерфейса МРI [Антон Михайлович Сальников salnikov@ipu.ru] (pdf) читать постранично

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Учреждение Российской академии наук
Институт проблем управления
им. В.А. Трапезникова РАН

А.М. Сальников, Е.А. Ярошенко,
О.С. Гребенник, С.В. Спиридонов

ВВЕДЕНИЕ
В ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ.
ОСНОВЫ ПРОГРАММИРОВАНИЯ
НА ЯЗЫКЕ СИ С ИСПОЛЬЗОВАНИЕМ
ИНТЕРФЕЙСА MPI

Москва 2010

УДК 681.3.06

Сальников А.М., Ярошенко Е.А., Гребенник О.С., Спиридонов С.В. Введение в параллельные вычисления. Основы
программирования на языке Си с использованием интерфейса MPI. – М.: ИПУ РАН, 2010. – 124 с.
Рассматривается архитектура многопроцессорных вычислительных систем. Приводится обзор современных
суперкомпьютеров. Описывается работа на суперкомпьютерах кластерного типа и особенности параллельного программирования на языке Си с использованием интерфейса
MPI. Среди рассматриваемых вопросов уделяется внимание необходимым навыкам разработки программ в операционной системе Linux. Изложенный материал адаптирован применительно к суперкомпьютеру ИПУ РАН.
Научное издание рассчитано на научных работников,
аспирантов, студентов и разработчиков прикладных программ.
Рецензенты: д.т.н. Лебедев В. Г.
д.ф.-м.н. проф. Исламов Г. Г.
Утверждено к печати Редакционным советом Института.
Текст воспроизводится в виде, утверждённом
Редакционным советом Института

ISBN 978-5-91450-065-5

ОГЛАВЛЕНИЕ
1. Архитектура многопроцессорных вычислительных
систем ................................................................................................ 4
1.1. Введение .................................................................................... 4
1.2. Традиционная классификация вычислительных систем....... 7
1.3. Классификация многопроцессорных вычислительных
систем ............................................................................................... 9
1.4. Векторно-конвейерные системы ........................................... 11
1.5. Симметричные многопроцессорные системы
(SMP и NUMA) ............................................................................... 13
1.6. Системы с массовым параллелизмом (MPP)........................ 16
1.7. Кластерные системы ............................................................... 19
2. Программирование для многопроцессорных
вычислительных систем ............................................................. 22
2.1. Программирование для систем с общей памятью ............... 22
2.2. Программирование для систем с распределенной памятью24
2.3. Параллельное программирование ......................................... 25
2.4. Оценка эффективности распараллеливания программ ....... 31
2.5. Проблемы оптимизации программ ....................................... 32
3. Суперкомпьютер ИПУ РАН ............................................... 42
3.1. Операционная система GNU/Linux ....................................... 43
3.2. Инструментарий разработчика .............................................. 50
4. Основы программирования на языке Си с
использованием интерфейса MPI.............................................. 61
4.1. Инициализация MPI ............................................................... 63
4.2. Прием/отправка сообщений с блокировкой ......................... 68
4.3. Прием/отправка сообщений без блокировки ....................... 75
4.4. Объединение запросов на прием/отправку сообщений ...... 85
4.5. Барьерная синхронизация ...................................................... 90
4.6. Группы процессов ................................................................... 92
4.7. Коммуникаторы групп ........................................................... 99
4.8. Функции коллективного взаимодействия .......................... 104
4.9. Типы данных ......................................................................... 106
Литература................................................................................... 123
3

1. АРХИТЕКТУРА МНОГОПРОЦЕССОРНЫХ
ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
1.1. Введение
Термин «суперкомпьютер» существует со времени появления первых электронных вычислительных машин (ЭВМ) и
фактически эволюционирует вместе с термином «компьютер».
Сфера применения компьютеров охватывает абсолютно все
области человеческой деятельности, и сегодня невозможно
представить себе эффективную организацию работы без применения компьютеров. Но если компьютеры в целом развиваются
разнонаправлено и самым непостижимым образом проникают в
нашу жизнь, то суперкомпьютеры по-прежнему предназначены
для того же, для чего разрабатывались первые электронные
вычислительные машины, т.е. для решения задач, требующих
выполнения больших объемов вычислений. Развитие топливноэнергетического комплекса, авиационной, ракетно-космической
промышленности и многих других областей науки и техники
требует постоянного увеличения объема производимых расчетов
и, таким образом, способствует активному развитию суперкомпьютеров.
Считается,
что
термин
«суперкомпьютер»
(англ.
supercomputer) впервые стали использовать Джордж Майкл
(George Michael) и Сидней Фернбач (Sidney Fernbach), занимавшиеся проблемой параллельных вычислений в Ливерморской
национальной лаборатории им. Э. О. Лоуренса (англ. Lawrence
Livermore National Laboratory, LLNL) с конца пятидесятых годов
двадцатого века.
Ливерморская национальная лаборатория в настоящее время входит в структуру Калифорнийского университета (англ.
The University of California, UC) и наряду с Национальной лабораторией в Лос-Аламосе (англ. Los Alamos National Laboratory,
LANL) «является главной научно-исследовательской и опытноконструкторской организацией