Вперед: Глава 1. Введение в многопроцессорные вычислительные системы
Назад: Оглавление
К содержанию: Оглавление


ПРЕДИСЛОВИЕ

Бурное развитие микропроцессорных технологий в конце 20-го века привело к колоссальному росту производительности настольных вычислительных систем. Это породило ожидания, что большие вычислительные системы скоро навсегда уйдут в прошлое. Однако, этого не произошло. Персональные компьютеры, ставшие незаменимыми помощниками в повседневной деятельности громадного числа людей, не смогли заменить большие вычислительные системы в той сфере деятельности, для которой компьютеры изначально и создавались, а именно, для решения сложных вычислительных задач. Потребности развития науки и технологий постоянно диктуют необходимость создания вычислительных систем в тысячи раз превосходящие возможности персональных компьютеров. Такие вычислительные системы называют суперкомпьютерами, а развитие суперкомпьютерных технологий объявлено приоритетным направлением во всех ведущих странах мира. В настоящее время, без применения суперкомпьютеров невозможно проведение исследований ни в фундаментальных, ни в прикладных науках. Суперкомпьютеры являются незаменимым инструментом и при моделировании процессов образования галактик, и при изучении свойств нанообъектов. Все более широкое применение суперкомпьютеры находят и в прикладных исследованиях, таких как разработка новых лекарственных препаратов, проектирование летательных аппаратов, в автомобилестроении. Понятие <суперкомпьютерные технологии> включает в себя множество аспектов - это и разработка элементной базы, и проектирование вычислительных систем <суперкомпьютерного класса>, и системное программное обеспечение суперкомпьютеров, и прикладное программное обеспечение, и, наконец, грамотное использование суперкомпьютеров. Многолетний опыт администрирования суперкомпьютерных систем и общения с начинающими пользователями позволил авторам очертить тот круг вопросов, который необходимо знать для грамотного использования суперкомпьютеров. Именно эта цель и преследовалась авторами данной книги.

Предлагаемое вниманию читателя учебно-методическое пособие является переработанным и дополненным вариантом пособия [1], изданного в 2003 г. и широко использовавшегося при чтении лекций и проведении практических занятий на факультете механики, математики и компьютерных наук Южного федерального университета (ЮФУ) при изучении курса <СуперЭВМ>. Электронная версия пособия, размещенная на сайте суперкомпьютерного центра (СКЦ) ЮГИНФО ЮФУ, была растиражирована на сайтах СКЦ ряда других университетов. Однако, к настоящему времени, это пособие в значительной мере устарело. Во-первых, часть материала, посвященная выведенному из эксплуатации суперкомпьютеру NCUBE> утратила свою актуальность. Во-вторых, в пособии не рассматривались вопросы программирования для систем с общей памятью, ставшие особенно актуальными с появлением многоядерных процессоров. Наконец, мы посчитали уместным дополнить пособие материалом по практической работе на вычислительных кластерах, который обычно излагают в различных руководствах для пользователя. Несмотря на то, что некоторые вопросы из этого раздела носят частный характер, ориентированные на работу в центре коллективного пользования(ЦКП) Южного Федерального университета (ЮФУ), тем не менее, на наш взгляд, они полезны для общего понимания технологии работы на высокопроизводительных вычислительных системах ЦКП [2].

Предлагаемое вниманию читателя пособие состоит из пяти глав. Первая глава носит обзорный характер и призвана дать общее представление о том, что представляет собой современная высокопроизводительная вычислительная система и каким образом могут быть использованы ее вычислительные ресурсы. Основное внимание в этой главе уделено архитектуре высокопроизводительных вычислительных систем и обзору средств программирования для них. Завершается глава обсуждением вопросов эффективного использования вычислительных систем. До читателя доводится мысль, что для каждой задачи существует предельная величина вычислительных ресурсов (узлов, ядер), которые следует использовать для ее решения. Дальнейшее их наращивание может не только не ускорить решение задачи, но и наоборот, замедлить.

Начинающие пользователи суперкомпьютеров испытывают значительные трудности, сталкиваясь с непривычной для себя операционной средой, в которой приходится работать. Действительно, операционная среда суперкомпьютеров значительно отличается от операционной среды персональных компьютеров. Преодолеть эти трудности призвана вторая глава этой книги. В ней дается необходимый минимум сведений об UNIX-подобных операционных системах, которые обычно используются на суперкомпьютерах и вычислительных кластерах. Упор в изложении делается не на внутреннее устройство системного ПО, а на работу с ним в режиме пользователя. В частности, рассматриваются вопросы связанные с манипуляциями с файлами, подготовкой файлов с текстами программ, компиляцией программ, использованием библиотек и запуском программ на выполнение.

В третьей главе дается систематическое изложение технологии программирования для систем с общей памятью OpenMP. Эта технология стала особенно востребованной с появлением многоядерных процессоров и использованием при построении вычислительных кластеров многопроцессорных узлов с SMP архитектурой.

Четвертая глава посвящена технологии MPI, ставшей стандартом <де-факто> для параллельного программирования в модели передачи сообщений для многопроцессорных систем с распределенной памятью. Предлагаемое читателю описание нельзя считать полным описанием MPI (Message Passing Interface), однако оно достаточно для написания программы любой сложности. Описание всех функций иллюстрируется примерами как на языке Си, так и на языке Фортран. В заключение главы приведены примеры законченных программ, для решения типовых задач.

В заключительной, пятой главе, описывается использование широко известных библиотек для многопроцессорных вычислительных систем с распределенной памятью ScaLAPACK и Aztec. Библиотека ScaLAPACK, являющаяся расширением библиотеки LAPACK для многопроцессорных систем с распределенной памятью и предназначенная для решения <точными> методами различных задач линейной алгебры с плотными матрицами, таких как решение систем линейных алгебраических уравнений или нахождение обратной матрицы. Библиотека Aztec предназначена для решения больших систем линейных алгебраических уравнений с разреженными матрицами, возникающих при решении систем дифференциальных уравнений в частных производных. Приведены примеры использования библиотек для решения реальных задач.

В ходе реализации целевой программы комиссии Президента РФ по модернизации и технологическому развитию экономики России <Создание системы подготовки высококвалифицированных кадров в области суперкомпьютерных технологий и специализированного программного обеспечения> под эгидой Суперкомпьютерного консорциума университетов России в 2012-2013 гг. в издательстве Московского университета была издана серия книг <Суперкомпьютерное образование>. Некоторые из этих книг рассматривают узкоспециализированные вопросы, как, например, книга [3]. Материалы других книг в некоторой степени пересекаются с предлагаемой вниманию читателей книгой или дополняют ее. Особенно обращаем внимание читателей на книгу А.С. Антонова [4], представляющую собой наиболее полное описание на русском языке технологий параллельного программирования MPI и OpenMP. Более широкий круг технологий рассматривается в книге [5]. В последние годы все более популярными становятся кластерные системы, использующие для повышения производительности вычислительные узлы с различными ускорителями, например, графическими процессорами. Такие системы нуждаются в особых технологиях программирования. В данном пособии эта тема не затронута вовсе, поскольку эти технологии еще не стали общеупотребительными и авторы не имеют достаточного опыта работы с ними. Для интересующихся данным вопросом мы отсылаем читателя к книге [6], также вышедшей в серии <Суперкомпьютерное образование>.



Вперед: Глава 1. Введение в многопроцессорные вычислительные системы
Назад: Оглавление
К содержанию: Оглавление