М.: ДМК Пресс, 2021. — 802 c. — ISBN 978-5-97060-936-1.
Пишите быстрые, мощные, энергоэффективные программы, легко масштабируемые под обработку огромных объемов данных. Параллельное программирование позволяет распределять задачи обработки данных между несколькими процессорами, существенно повышая производительность. В книге рассказывается, как с минимальными трудозатратами повысить эффективность ваших программ. Вы научитесь оценивать аппаратные архитектуры и работать со стандартными инструментами отрасли, такими как OpenMP и MPI, освоите структуры данных и алгоритмы, подходящие для высокопроизводительных вычислений, узнаете, как экономить энергию на наладонных устройствах, и даже запустите масштабную симуляцию цунами на батарее из GPU-процессоров.
ВВЕДЕНИЕ В ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ
Зачем нужны параллельные вычисления?
Планирование под параллелизацию
Пределы производительности и профилирование
Дизайн данных и модели производительности
Параллельные алгоритмы и шаблоны
ПАРАЛЛЕЛЬНАЯ РАБОЧАЯ ЛОШАДКА
Векторизация: флопы забесплатно
Стандарт OpenMP, который «рулит»
MPI: параллельный становой хребет
GPU: РОЖДЕНЫ ДЛЯ УСКОРЕНИЯ
Архитектуры и концепции GPU
Модель программирования GPU
Программирование GPU на основе директив
Языки GPU: обращение к основам
Профилирование и инструменты GPU
ЭКОСИСТЕМЫ ВЫСОКОПРОИЗВОДИТЕЛЬНЫХ ВЫЧИСЛЕНИЙ
Аффинность: перемирие с вычислительным ядром
Пакетные планировщики: наведение порядка в хаосе
Файловые операции для параллельного мира
Инструменты и ресурсы для более качественного исходного кода