Интерес у широкого круга ИТ-пользователей к повышению эффективности этих технологий благодаря широкому применению параллелизма остается сегодня весьма действенным, даже если судить лишь по книгам, посвященным данной тематике.
В феврале-марте текущего года увидела свет книга К.Ю. Богачева «Основы параллельного программирования», которая по существу представляет собой переиздание пособия в двух томах по курсу «Практикум на ЭВМ», используемого студентами механико-математического факультета МГУ. Несмотря на отличие в заголовках и внесение редакционных изменений, их можно использовать в равной степени.
Вот как сам автор представляет свою книгу: «Настоящее пособие является введением в методы программирования параллельных ЭВМ». Цель, которая в этом пособии ставилась — «научить читателя самостоятельно разрабатывать максимально эффективные программы для таких компьютеров». Несомненное достоинство книги состоит в наличии множества примеров распараллеливания конкретных вычислительных алгоритмов.
Структура книги естественно связана с двумя основными направлениями использования принципа параллельности для повышения производительности: за счет архитектуры процессора и организации памяти. Что касается рассмотренной в книге архитектуры процессоров, то представлены как отдельные микропроцессоры категорий CISC и RISC, так и многопроцессорные системы. Вместе с тем, в книге имеются главы, в которых описаны пути повышения производительности памяти оперативной и внешней за счет организации данных.
В пособии автор опирается на примеры, базирующиеся на разновидностях ОС Unix. При этом в программах для параллельных вычислений акцент сделан на управление процессами и задачами, синхронизации и взаимодействии процессов и задач, а также на использовании стандарта MPI (Message Passing Interface) для систем с распределенной памятью, который по существу привязан к набору утилит и библиотечных функций (для языков Си/Си++, Фортран), которые позволяют создавать и запускать приложения, работающие на параллельных вычислительных системах. Уровень распараллеливаемых задач, приведенных в книге, можно увидеть на примерах программ решения задачи Дирихле для уравнения Пуассона.
В данном издании по сравнению с пособием к программе курса добавлен раздел «Список задач», который содержит тексты предлагаемых практических заданий по курсу, а также списки таблиц и примеров.
Несмотря на ограничивающие авторские рекомендации, данное пособие может оказаться полезным для широкого круга изучающих на начальном этапе программирование параллельных вычислений.
К.Ю. Богачев, Основы параллельного программирования. — М.: «БИНОМ. Лаборатория знаний», 2003. — 342 с., ил.
Другая книга, «Параллельное программирование для многопроцессорных вычислительных систем», предназначается «для программистов, преподавателей и студентов, чья деятельность связана с высокопроизводительными вычислениями». Она написана преподавателями из СПбГУ и отражает их личный опыт, который главным образом касается реализации параллельности на аппаратном и программном уровне без рассмотрения параллельных алгоритмов. Поэтому, когда в ней идет речь о программировании приложений, то имеется в виду поддержка потоков данных и заданий, а не запрограммированных алгоритмов решаемых задач.
Материал книги хорошо изложен и отредактирован, что обязательно будет вызывать у читателей чувство признательности авторам и издателям. По первым главам об архитектуре высокопроизводительных ЭВМ и особенностям программирования параллельных вычислений, которые вполне отвечают современному состоянию дел в этих областях, хотелось бы заметить, что, к сожалению, в историческом контексте они ориентированы лишь на американский опыт, что очень обедняет изложение. Студентам полезно было бы знать, что во многих вопросах, затронутых в книге отечественные ученые и инженеры, были первопроходцами не только идей, но и практических решений, которые впоследствии были в той или иной мере адаптированы за океаном. Тем самым можно было бы, например, почтить столетие С.А. Лебедева и С.И. Брука, которые многое предвосхитили в параллельных архитектурах.
В книге с достаточной полнотой для начального уровня освоения систем параллельного программирования излагаются методики, связанные с моделями MPI, PVM (Parallel Virtual Machine) и HPF (High Performance Fortran).
В четырех приложениях книги можно найти материалы по средствам отладки и мониторинга параллельных MPI- и PVM-программ, по настройке Linux-кластера для параллельных приложений, а также информацию по Web-ресурсам, посвященным параллельному программированию и кластерам.
Достоинством книги являются примеры и упражнения, позволяющие приблизиться к самостоятельной работе. Надеюсь, что у данной книги будет много читателей.
С. Немнюгин, О. Стесик, Параллельное программирование для многопроцессорных вычислительных систем. — СПб.: «БХВ-Петербург«, 2002. — 400 с.: ил.