Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634932)
Контекстум
Руконтекст антиплагиат система

Параллельные и высокопроизводительные вычисления (6000,00 руб.)

0   0
Первый авторРоби Роберт
АвторыЗамора Джулиана
ИздательствоМ.: ДМК Пресс
Страниц801
ID810548
АннотацияПараллельное программирование позволяет распределять задачи обработки данных между несколькими процессорами, существенно повышая производительность. В книге рассказывается, как с минимальными трудозатратами повысить эффективность ваших программ. Вы научитесь оценивать аппаратные архитектуры и работать со стандартными инструментами отрасли, такими как OpenMP и MPI, освоите структуры данных и алгоритмы, подходящие для высокопроизводительных вычислений, узнаете, как экономить энергию на мобильных устройствах, и даже запустите масштабную симуляцию цунами на батарее из GPU-процессоров.
Кому рекомендованоДля опытных программистов,владеющих языком высокопроизводительных вычислений, таким как C, C++ или Fortran.
ISBN978-5-97060-936-1
УДК004.421
ББК32.972
Роби, Р. . Параллельные и высокопроизводительные вычисления / Д. . Замора; Р. . Роби .— Москва : ДМК Пресс, 2022 .— 801 с. : ил. — ISBN 978-5-97060-936-1 .— URL: https://rucont.ru/efd/810548 (дата обращения: 27.04.2024)

Предпросмотр (выдержки из произведения)

Параллельные_и_высокопроизводительные_вычисления.pdf
Стр.5
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Стр.13
Стр.14
Стр.15
Стр.16
Стр.17
Стр.18
Стр.19
Параллельные_и_высокопроизводительные_вычисления.pdf
УДК 004.421 ББК 32.972 Р58 Р58 Параллельные и высокопроизводительные вычисления / пер. с англ. А. В. Логунова. – М.: ДМК Пресс, 2022. – 800 с.: ил. Роби Р., Замора Дж. ISBN 978-5-97060-936-1 Параллельное программирование позволяет распределять задачи обработки данных между несколькими процессорами, существенно повышая производительность. В книге рассказывается, как с минимальными трудозатратами повысить эффективность ваших программ. Вы научитесь оценивать аппаратные архитектуры и работать со стандартными инструментами отрасли, такими как OpenMP и MPI, освоите структуры данных и алгоритмы, подходящие для высокопроизводительных вычислений, узнаете, как экономить энергию на мобильных устройствах, и даже запустите масштабную симуляцию цунами на батарее из GPU-процессоров. Издание предназначено для опытных программистов, владеющих языком высокопроизводительных вычислений, таким как C, C++ или Fortran. УДК 004.421 ББК 32.972 Original English language edition published by Manning Publications USA. Russian-language edition copyright © 2021 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-6172-9646-8 (англ.) ISBN 978-5-97060-936-1 (рус.) © Manning Publications, 2021 © Перевод, оформление, издание, ДМК Пресс, 2021
Стр.5
Оглавление Часть I  1  2  3  4  5  Часть II  6  7  8  Часть III  9  10  11  12  13  Часть IV  14  15  16  17  ВВЕДЕНИЕ В ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ ................................ 36 Зачем нужны параллельные вычисления? ................................................ 38 Планирование под параллелизацию ........................................................... 75 Пределы производительности и профилирование ............................... 102 Дизайн данных и модели производительности ..................................... 134 Параллельные алгоритмы и шаблоны ...................................................... 179 CPU: ПАРАЛЛЕЛЬНАЯ РАБОЧАЯ ЛОШАДКА .................................. 233 Векторизация: флопы забесплатно ........................................................... 236 Стандарт OpenMP, который «рулит» .......................................................... 273 MPI: параллельный становой хребет ........................................................ 328 GPU: РОЖДЕНЫ ДЛЯ УСКОРЕНИЯ ...................................................... 385 Архитектуры и концепции GPU.................................................................. 389 Модель программирования GPU ................................................................ 430 Программирование GPU на основе директив ......................................... 458 Языки GPU: обращение к основам ............................................................. 510 Профилирование и инструменты GPU ..................................................... 558 ЭКОСИСТЕМЫ ВЫСОКОПРОИЗВОДИТЕЛЬНЫХ ВЫЧИСЛЕНИЙ.............................................................................................. 590 Аффинность: перемирие с вычислительным ядром ............................. 592 Пакетные планировщики: наведение порядка в хаосе ........................ 633 Файловые операции для параллельного мира ....................................... 654 Инструменты и ресурсы для более качественного исходного кода ..... 691
Стр.7
Содержание Оглавление ................................................................................................................ 6 Предисловие ............................................................................................................ 19 Благодарности ....................................................................................................... 24 О книге ..................................................................................................................... 26 Об авторах ............................................................................................................. 33 Об иллюстрации на обложке ............................................................................... 35 Часть I ВВЕДЕНИЕ В ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ .............................................................................. 36 1 Зачем нужны параллельные вычисления? ............................ 38 1.1 Почему вы должны изучить параллельные вычисления? .............. 41 1.1.1 Каковы потенциальные преимущества параллельных вычислений? ...................................................................................... 44 1.1.2 Предостережения, связанные с параллельными вычислениями ....... 47 1.2 Фундаментальные законы параллельных вычислений .................. 48 1.2.1 Предел на параллельные вычисления: закон Амдала ........................ 48 1.2.2 Преодоление параллельного предела: закон Густафсона–Барсиса .... 49 1.3 Как работают параллельные вычисления? ...................................... 52 1.3.1 Пошаговое ознакомление с примером приложения .......................... 54 1.3.2 Аппаратная модель для современных гетерогенных параллельных систем ....................................................................... 60 1.3.3 Прикладная/программная модель для современных гетерогенных параллельных систем ................................................ 64 1.4 Классифицирование параллельных подходов ................................... 68 1.5 Параллельные стратегии ......................................................................... 69 1.6 Параллельное ускорение против сравнительного ускорения: две разные меры ....................................................................................... 70 1.7 Чему вы научитесь в этой книге? .......................................................... 72 1.7.1 Дополнительное чтение ................................................................... 73 1.7.2 Упражнения ....................................................................................... 73 Резюме .................................................................................................................... 74
Стр.8
8 Содержание 2 Планирование под параллелизацию .......................................... 75 2.1 На подступах к новому проекту: подготовка ..................................... 77 2.1.1 Версионный контроль: создание безопасного хранилища для своего параллельного кода .......................................................... 78 2.1.2 Комплекты тестов: первый шаг к созданию устойчивого и надежного приложения .................................................................. 80 2.1.3 Отыскание и исправление проблем с памятью ................................ 90 2.1.4 Улучшение переносимости кода ....................................................... 92 2.2 Профилирование: определение разрыва между способностями системы и производительностью приложения .... 94 2.3 Планирование: основа успеха ................................................................ 94 2.3.1 Разведывательный анализ с использованием сравнительных тестов и мини-приложений ............................................................. 95 2.3.2 Дизайн стержневых структур данных и модульность кода ............ 96 2.3.3 Алгоритмы: редизайн для параллельности ..................................... 96 2.4 Имплементация: где все это происходит ............................................ 97 2.5 Фиксация: качественное завершение работы ................................... 98 2.6 Материалы для дальнейшего изучения ............................................... 99 2.6.1 Дополнительное чтение ................................................................... 99 2.6.2 Упражнения ..................................................................................... 100 3 Резюме .................................................................................................................. 100 Пределы производительности и профилирование ..... 102 3.1 Знание потенциальных пределов производительности вашего приложения ................................................................................ 103 3.2 Определение возможностей своего оборудования: сравнительное тестирование ............................................................... 106 3.2.1 Инструменты для сбора характеристик системы ....................... 107 3.2.2 Расчет теоретических максимальных флопов .............................. 110 3.2.3 Иерархия памяти и теоретическая пропускная способность памяти ............................................................................................ 111 3.2.4 Эмпирическое измерение пропускной способности и флопов ........ 112 3.2.5 Расчет машинного баланса между флопами и пропускной способностью ................................................................................. 116 3.3 Характеризация вашего приложения: профилирование .............. 117 3.3.1 Инструменты профилирования ..................................................... 117 3.3.2 Эмпирическое измерение тактовой частоты и энергопотребления процессора.................................................... 129 3.3.3 Отслеживание памяти во время выполнения ................................ 130 3.4 Материалы для дальнейшего изучения ............................................. 131 3.4.1 Дополнительное чтение ................................................................. 131 3.4.2 Упражнения ..................................................................................... 131 4 Резюме .................................................................................................................. 132 Дизайн данных и модели производительности ............ 134 4.1 Структуры данных для обеспечения производительности : дизайн с ориентацией на данные ....................................................... 136 4.1.1 Многомерные массивы .................................................................... 138 4.1.2 Массив структур (AoS) против структур из массивов (SoA) ....... 144
Стр.9
Содержание 9 4.1.3 Массив структур из массивов (AoSoA) .......................................... 150 исследование ............................................................................................ 157 4.3.1 Полноматричные представления данных ...................................... 160 4.3.2 Представление сжато-разреженного хранения............................. 164 4.2 Три категории неуспешных обращений к кешу : вынужденное, емкостное и конфликтное ......................................... 152 4.3 Простые модели производительности: тематическое 4.4 Продвинутые модели производительности ..................................... 169 4.5 Сетевые сообщения ................................................................................ 173 4.6 Материалы для дальнейшего изучения ............................................. 176 4.6.1 Дополнительное чтение ................................................................. 176 4.6.2 Упражнения ..................................................................................... 177 5 Резюме .................................................................................................................. 177 Параллельные алгоритмы и шаблоны .................................. 179 5.1 Анализ алгоритмов для приложений параллельных вычислений .............................................................................................. 180 5.2 Модели производительности против алгоритмической сложности.................................................................................................. 181 алгоритм .................................................................................................... 189 5.5.1 Использование идеального хеширования для пространственных операций с сеткой ........................................................................... 192 5.3 Параллельные алгоритмы: что это такое? ........................................ 186 5.4 Что такое хеш-функция? ....................................................................... 187 5.5 Пространственное хеширование: высокопараллельный 5.6 Шаблон префиксного суммирования (сканирования) 5.5.2 Использование компактного хеширования для пространственных операций на сетке .................................... 208 и его важность в параллельных вычислениях ................................. 217 5.6.1 Операция параллельного сканирования с эффективностью шагов ............................................................................................... 218 5.7 Параллельная глобальная сумма: решение проблемы ассоциативности ..................................................................................... 221 5.8 Будущие исследования параллельных алгоритмов ........................ 229 Резюме .................................................................................................................. 231 Часть II CPU: ПАРАЛЛЕЛЬНАЯ РАБОЧАЯ ЛОШАДКА ....................................................................................... 233 6 Векторизация: флопы забесплатно ....................................... 236 6.1 Векторизация и обзор SIMD (одна команда, несколько элементов данных) ................................................................................. 237 5.6.2 Операция параллельного сканирования с эффективностью работы ............................................................................................ 219 5.6.3 Операции параллельного сканирования для крупных массивов ..... 220 5.9 Материалы для дальнейшего изучения ............................................. 229 5.9.1 Дополнительное чтение ................................................................. 230 5.9.2 Упражнения ..................................................................................... 231
Стр.10
10 Содержание 6.2 Аппаратные тренды векторизации .................................................... 239 6.3 Методы векторизации ........................................................................... 240 6.3.1 Оптимизированные библиотеки обеспечивают производительность за счет малых усилий ................................... 240 6.3.2 Автоматическая векторизация: простой способ ускорения векторизации (в большинстве случаев) ......................................... 241 6.3.3 Обучение компилятора посредством подсказок: прагмы и директивы .................................................................................... 246 6.3.4 Дрянные циклы, они у нас в руках: используйте внутренние векторные функции компилятора ................................................. 253 6.3.5 Не для слабонервных: применение ассебмлерного кода для векторизации ............................................................................ 259 6.4 Стиль программирования для более качественной векторизации ........................................................................................... 261 6.5 Компиляторные флаги, относящиеся к векторизации , для различных компиляторов ............................................................. 262 6.6 Директивы OpenMP SIMD для более качественной переносимости ........................................................................................ 268 6.7 Материалы для дальнейшего изучения ............................................. 271 6.7.1 Дополнительное чтение ................................................................. 271 6.7.2 Упражнения ..................................................................................... 271 7 Резюме .................................................................................................................. 272 Стандарт OpenMP, который «рулит» ................................. 273 7.1 Введение в OpenMP ................................................................................ 274 7.1.1 Концепции OpenMP ......................................................................... 275 7.1.2 Простая программа стандарта OpenMP ...................................... 278 7.2 Типичные варианты использования OpenMP : уровень цикла, высокий уровень и MPI плюс OpenMP ............................................... 285 7.2.1 OpenMP уровня цикла для быстрой параллелизации ..................... 285 7.2.2 OpenMP высокого уровня для улучшенной параллельной производительности ...................................................................... 286 7.2.3 MPI плюс OpenMP для максимальной масштабируемости ........... 286 7.3 Примеры стандартного OpenMP уровня цикла ............................... 287 7.3.1 OpenMP уровня цикла: пример векторного сложения ................... 288 7.3.2 Пример потоковой триады ............................................................ 292 7.3.3 OpenMP уровня цикла: стенсильный пример ................................. 293 7.3.4 Производительность примеров уровня цикла................................ 295 7.3.5 Пример редукции на основе глобальной суммы с использованием потокообразования OpenMP ............................. 296 7.3.6 Потенциальные трудности OpenMP уровня цикла ....................... 297 7.4 Важность области видимости переменной для правильности в OpenMP ................................................................................................... 298 7.5 OpenMP уровня функции: придание всей функции целиком свойства поточной параллельности ................................................... 300 7.6 Усовершенствование параллельной масштабируемости с помощью OpenMP высокого уровня................................................ 302 7.6.1 Как имплементировать OpenMP высокого уровня ........................ 303 7.6.2 Пример имплементирования OpenMP высокого уровня ................ 306
Стр.11
Содержание 11 7.7 Гибридное потокообразование и векторизация с OpenMP .......... 309 7.8 Продвинутые примеры использования OpenMP ............................ 312 7.8.1 Стенсильный пример с отдельным проходом для направлений x и y ...................................................................... 312 7.8.2 Имплементация суммирования по Кахану с потокообразованием OpenMP...................................................... 317 7.9 Инструменты потокообразования, необходимые для устойчивых имплементаций ........................................................ 320 7.9.1 Использование профилировщика Allinea/ARM MAP для быстрого получения высокоуровневого профиля вашего приложения ..................................................................................... 321 7.8.3 Поточная имплементация алгоритма префиксного сканирования ................................................................................... 318 7.9.2 Отыскание гоночных состояний в потоках с помощью Intel® Inspector ................................................................................ 322 7.10 Пример алгоритма поддержки на основе операционных задач ........................................................................................................... 323 7.11 Материалы для дальнейшего изучения ............................................. 325 7.11.1 Дополнительное чтение ................................................................. 325 7.11.2 Упражнения ..................................................................................... 326 8 Резюме .................................................................................................................. 326 MPI: параллельный становой хребет ................................... 328 8.1 Основы программы MPI ........................................................................ 329 8.1.1 Базовые функциональные вызовы MPI для каждой программы MPI ............................................................................... 330 8.1.2 Компиляторные обертки для более простых программ MPI ........ 331 8.1.3 Использование команд параллельного запуска ............................... 331 8.1.4 Минимально работающий пример программы MPI ...................... 332 8.2 Команды отправки и приемки для обмена данными «из процесса в процесс» ........................................................................ 334 8.3 Коллективный обмен данными: мощный компонент MPI........... 341 8.3.1 Использование барьера для синхронизирования таймеров............ 342 8.3.2 Использование широковещательной передачи для манипулирования данными малого входного файла ................ 343 8.3.3 Использование редукции для получения одного единственного значения из всех процессов .............................................................. 345 8.3.4 Использование операции сбора для наведения порядка в отладочных распечатках ............................................................. 349 8.4 Примеры параллельности данных ...................................................... 353 8.4.1 Потоковая триада для измерения пропускной способности на узле ............................................................................................. 353 8.3.5 Использование разброса и сбора для отправки данных процессам для работы .................................................................... 351 8.4.2 Обмен с призрачными ячейками в двухмерной вычислительной сетке .................................................................... 355 8.4.3 Обмен с призрачными ячейками в трехмерной стенсильной калькуляции ..................................................................................... 363 8.5 Продвинутая функциональность MPI для упрощения исходного кода и обеспечения оптимизаций .................................. 364
Стр.12
12 Содержание 8.5.1 Использование конкретно-прикладных типов данных MPI для повышения производительности и упрощения кода ................ 365 8.6 Гибридная техника MPI плюс OpenMP для максимальной 8.5.2 Поддержка декартовой топологии в MPI ....................................... 370 8.5.3 Тесты производительности вариантов обмена с призрачными ячейками ................................................................ 376 масштабируемости ................................................................................. 378 8.6.1 Преимущества гибридной техники MPI плюс OpenMP .................. 378 8.6.2 Пример техники MPI плюс OpenMP ............................................... 379 8.7 Материалы для дальнейшего изучения ............................................. 382 8.7.1 Дополнительное чтение ................................................................. 382 8.7.2 Упражнения ..................................................................................... 383 Резюме .................................................................................................................. 383 Часть III GPU: РОЖДЕНЫ ДЛЯ УСКОРЕНИЯ ..................... 385 Архитектуры и концепции GPU ................................................. 389 9 9.1 Система CPU-GPU как ускоренная вычислительная платформа ................................................................................................ 391 9.1.1 Интегрированные GPU: недоиспользуемая опция в товарных системах ......................................................................................... 393 9.1.2 Выделенные GPU: рабочая лошадка ................................................ 393 9.2 GPU и двигатель потокообразования ................................................. 394 9.2.1 Вычислительным модулем является потоковый мультипроцессор (или подсрез) ...................................................... 397 9.2.2 Обрабатывающими элементами являются отдельные процессоры ...................................................................................... 397 9.2.3 Несколько операций, выполняемых на данных каждым обрабатывающим элементом........................................................ 398 9.2.4 Расчет пиковых теоретических флопов для некоторых ведущих GPU .................................................................................... 398 9.3 Характеристики пространств памяти GPU ....................................... 400 9.3.1 Расчет теоретической пиковой пропускной способности памяти ............................................................................................ 401 9.3.2 Измерение GPU с помощью приложения STREAM Benchmark ........ 402 9.3.3 Модель производительности в форме контура крыши для GPU-процессоров....................................................................... 404 9.4 Шина PCI: накладные расходы на передачу данных от CPU 9.3.4 Использование инструмента смешанного сравнительного тестирования производительности для выбора наилучшего GPU для рабочей нагрузки ............................................................... 406 к GPU .......................................................................................................... 408 9.4.1 Теоретическая пропускная способность шины PCI ........................ 409 9.4.2 Приложение сравнительного тестирования пропускной способности PCI .............................................................................. 412 9.5 Платформы с многочисленными GPU и MPI .................................... 416 9.5.1 Оптимизирование перемещения данных между GPU-процессорами по сети ............................................................ 416 9.5.2 Более высокопроизводительная альтернатива шине PCI ............. 418
Стр.13
Содержание 13 9.6 Потенциальные преимущества платформ, ускоренных за счет GPU ................................................................................................ 418 9.6.1 Сокращение показателя времени до решения ................................ 418 9.6.2 Сокращение энергопотребления с помощью GPU-процессоров ..... 420 9.6.3 Снижение в затратах на облачные вычисления за счет использования GPU-процессоров .................................................... 426 9.7 Когда следует использовать GPU-процессоры ................................. 427 9.8 Материалы для дальнейшего изучения ............................................. 428 9.8.1 Дополнительное чтение ................................................................. 428 9.8.2 Упражнения ..................................................................................... 429 10 Резюме .................................................................................................................. 429 Модель программирования GPU ................................................ 430 10.1 Абстракции программирования GPU: широко распространенная структура................................................................ 432 10.1.1 Массовый параллелизм ................................................................... 432 10.1.2 Неспособность поддерживать координацию среди операционных задач ........................................................................ 433 10.1.3 Терминология для параллелизма GPU ............................................ 433 10.1.4 Декомпозиция данных на независимые единицы работы: NDRange или решетка .................................................................... 434 10.1.5 Рабочие группы обеспечивают оптимальную по размеру порцию работы ............................................................................... 437 10.2 Структура кода для модели программирования GPU .................... 440 10.2.1 Программирование «Эго»: концепция параллельного вычислительного ядра .................................................................... 441 10.2.2 Поточные индексы: соотнесение локальной плитки с глобальным миром ........................................................................ 442 10.1.6 Подгруппы, варпы или волновые фронты исполняются в унисон .... 438 10.1.7 Элемент работы: базовая единица операции ................................ 439 10.1.8 SIMD- или векторное оборудование ............................................... 439 10.2.3 Индексные множества .................................................................... 444 10.2.4 Как обращаться к ресурсам памяти в вашей модели программирования GPU .................................................................. 444 10.3 Оптимизирование использования ресурсов GPU ........................... 446 10.3.1 Сколько регистров используется в моем вычислительном ядре? .... 447 10.3.2 Занятость: предоставление большего объема работы для планирования рабочей группы .................................................. 448 10.4 Редукционный шаблон требует синхронизации между рабочими группами ................................................................................ 450 10.5 Асинхронные вычисления посредством очередей (потоков операций) .................................................................................................. 451 10.6 Разработка плана параллелизации приложения для GPU-процессоров ............................................................................. 453 10.6.1 Случай 1: трехмерная атмосферная симуляция ............................ 453 10.6.2 Случай 2: применение неструктурированной вычислительной сетки ............................................................................................... 454 10.7 Материалы для дальнейшего изучения ............................................. 455 10.7.1 Дополнительное чтение ................................................................. 456
Стр.14
14 Содержание 10.7.2 Упражнения ..................................................................................... 457 Резюме .................................................................................................................. 457 11 Программирование GPU на основе директив ................. 458 11.1 Процесс применения директив и прагм для имплементации на основе GPU .......................................................................................... 460 11.2 OpenACC: самый простой способ выполнения на вашем GPU .... 461 11.2.1 Компилирование исходного кода OpenACC ..................................... 463 11.2.2 Участки параллельных вычислений в OpenACC для ускорения вычислений ...................................................................................... 465 11.2.3 Использование директив для сокращения перемещения данных между CPU и GPU ................................................................ 471 11.2.4 Оптимизирование вычислительных ядер GPU ............................... 476 11.2.5 Резюме результирующих производительностей для потоковой триады ................................................................... 482 11.2.6 Продвинутые техники OpenACC .................................................... 483 11.3 OpenMP: чемпион в тяжелом весе вступает в мир ускорителей ... 486 11.3.1 Компилирование исходного кода OpenMP ....................................... 487 11.3.2 Генерирование параллельной работы на GPU с по мощью OpenMP............................................................................................ 488 11.3.3 Создание участков данных для управления перемещением данных на GPU с по мощью OpenMP ................................................ 493 11.4 Материалы для дальнейшего изучения ............................................. 507 11.4.1 Дополнительное чтение ................................................................. 507 11.4.2 Упражнения ..................................................................................... 508 12 11.3.4 Оптимизирование OpenMP под GPU-процессоры .......................... 497 11.3.5 Продвинутый OpenMP для GPU-процессоров ................................. 502 Резюме .................................................................................................................. 509 Языки GPU: обращение к основам ............................................ 510 12.1 Функциональности нативного языка программирования GPU .... 512 12.2 Языки CUDA и HIP GPU: низкоуровневая опция 12.3 OpenCL для переносимого языка GPU с открытым исходным производительности ............................................................................. 514 12.2.1 Написание и сборка вашего первого приложения на языке CUDA .... 514 12.2.2 Редукционное вычислительное ядро в CUDA: жизнь становится все сложнее ................................................................. 524 12.2.3 HIP’ифицирование исходного кода CUDA ........................................ 531 кодом .......................................................................................................... 534 12.3.1 Написание и сборка вашего первого приложения OpenCL .............. 536 12.3.2 Редукции в OpenCL .......................................................................... 542 12.4 SYCL: экспериментальная имплементация на C++ становится магистральной ................................................................... 546 12.5 Языки более высокого уровня для обеспечения переносимости производительности ................................................ 550 12.5.1 Kokkos: экосистема обеспечения переносимости производительности ...................................................................... 550 12.5.2 RAJA для более адаптируемого слоя обеспечения переносимости производительности ............................................ 553
Стр.15
Содержание 15 12.6 Материалы для дальнейшего изучения ............................................. 555 12.6.1 Дополнительное чтение ................................................................. 556 12.6.2 Упражнения ..................................................................................... 557 13 Резюме .................................................................................................................. 557 Профилирование и инструменты GPU ................................ 558 13.1 Обзор инструментов профилирования ............................................. 559 13.2 Как выбрать хороший рабочий поток ................................................ 560 13.3 Образец задачи: симуляция мелководья .......................................... 562 13.4 Образец профилировочного рабочего потока ................................. 566 13.4.1 Выполнение приложения симуляции мелководья ............................ 567 13.4.2 Профилирование исходного кода CPU для разработки плана действий.......................................................................................... 569 13.4.3 Добавление вычислительных директив OpenACC, чтобы начать шаг имплементации .......................................................... 571 13.4.4 Добавление директив перемещения данных ................................... 574 13.4.5 Направляемый анализ может дать вам несколько предлагаемых улучшений ................................................................ 575 13.5 Не утоните в болоте: сосредотачивайтесь на важных 13.4.6 Комплект инструментов NVIDIA Nsight может стать мощным подспорьем в разработке ................................................. 577 13.4.7 CodeXL для экосистемы GPU-процессоров AMD ............................ 578 метриках ................................................................................................... 579 13.5.1 Занятость: достаточно ли работы? ............................................ 580 13.5.2 Эффективность выдачи: ваши варпы прерываются слишком часто? ............................................................................................. 580 13.6 Контейнеры и виртуальные машины обеспечивают 13.5.3 Достигнутая пропускная способность: она всегда сводится к пропускной способности .............................................................. 581 обходные пути ......................................................................................... 581 13.6.1 Контейнеры Docker в качестве обходного пути ............................. 582 13.6.2 Виртуальные машины с использованием VirtualBox ...................... 585 13.7 Облачные опции: гибкие и переносимые возможности ............... 587 Резюме .................................................................................................................. 589 13.8 Материалы для дальнейшего изучения ............................................. 588 13.8.1 Дополнительное чтение ................................................................. 588 13.8.2 Упражнения ..................................................................................... 589 Часть IV ЭКОСИСТЕМЫ ВЫСОКОПРОИЗВОДИТЕЛЬНЫХ ВЫЧИСЛЕНИЙ ........................................................................... 590 14 Аффинность: перемирие с вычислительным ядром ................................................................................................................. 592 14.1 Почему важна аффинность? ................................................................. 593 14.2 Нащупывание вашей архитектуры ..................................................... 595 14.3 Аффинность потоков с OpenMP .......................................................... 597
Стр.16
16 Содержание 14.4 Аффинность процессов с MPI ............................................................... 606 14.4.1 Принятое по умолчанию размещение процессов с по мощью OpenMPI .......................................................................................... 606 14.4.2 Взятие под контроль: базовые техники специфицирования размещения процессов в OpenMPI .................................................. 607 14.4.3 Аффинность – это больше, чем просто привязывание процессов: полная картина ............................................................ 612 14.5 Аффинность для MPI плюс OpenMP ................................................... 615 14.6 Контроль за аффинностью из командной строки ........................... 620 14.6.1 Использование инструмента hwloc-bind для назначения аффинности .................................................................................... 620 14.7 Будущее: установка и изменение аффинности во время выполнения .............................................................................................. 625 14.7.1 Настройка аффинности в исполняемом файле ............................. 625 14.7.2 Изменение аффинностей процессов во время выполнения ............ 627 14.6.2 Использование likwid-pin: инструмент аффинности в комплекте инструментов likwid ................................................. 622 14.8 Материалы для дальнейшего исследования .................................... 629 14.8.1 Дополнительное чтение ................................................................. 630 14.8.2 Упражнения ..................................................................................... 631 15 16 Резюме .................................................................................................................. 632 Пакетные планировщики: наведение порядка в хаосе................................................................................................................ 633 15.1 Хаос неуправляемой системы .............................................................. 634 15.2 Как не быть помехой при работе в занятом работой кластере ... 636 15.2.1 Макет пакетной системы для занятых кластеров ...................... 636 15.2.2 Как быть вежливым на занятых работой кластерах и сайтах HPC: распространенные любимые мозоли HPC ............. 636 15.3 Отправка вашего первого пакетного скрипта ................................. 638 15.4 Автоматические перезапуски для длительных заданий ............... 645 15.5 Указание зависимостей в пакетных скриптах ................................. 649 15.6 Материалы для дальнейшего исследования .................................... 651 15.6.1 Дополнительное чтение ................................................................. 651 15.6.2 Упражнения ..................................................................................... 652 Резюме .................................................................................................................. 652 Файловые операции для параллельного мира ................. 654 16.1 Компоненты высокопроизводительной файловой системы ....... 655 16.2 Стандартные файловые операции : интерфейс между параллельной и последовательной обработкой .............................. 657 16.3 Файловые операции MPI (MPI-IO) для более параллельного мира ............................................................................................................ 659 16.5 Другие пакеты программно-информационного обеспечения для параллельных файлов ........................................................................676 16.4 HDF5 как самоописывающий формат для более качественного управления данными ................................................. 668
Стр.17
Содержание 17 16.6 Параллельная файловая система: аппаратный интерфейс .......... 678 16.6.1 Все, что вы хотели знать о настройке параллельного файла, но не знали, как спросить ............................................................... 678 16.7 Материалы для дальнейшего исследования .................................... 688 16.7.1 Дополнительное чтение ................................................................. 688 16.7.2 Упражнения ..................................................................................... 690 17 Резюме .................................................................................................................. 690 Инструменты и ресурсы для более качественного 16.6.2 Общие подсказки, применимые ко всем файловым системам ....... 682 16.6.3 Подсказки, относящиеся к конкретным файловым системам ...... 684 исходного кода............................................................................................ 691 17.1 Системы версионного контроля: все начинается здесь ................ 694 17.1.1 Распределенный версионный контроль подходит для более мобильного мира ............................................................................. 695 17.2 Таймерные процедуры для отслеживания производительности исходного кода ................................................. 696 17.3 Профилировщики: невозможно улучшить то, 17.1.2 Централизованный версионный контроль для простоты и безопасности исходного кода ....................................................... 695 что не измеряется ................................................................................... 698 17.3.1 Простые тексто-ориентированные профилировщики для повседневного использования.................................................... 699 17.3.2 Высокоуровневые профилировщики для быстрого выявления узких мест ....................................................................................... 700 17.3.3 Среднеуровневые профилировщики для руководства разработкой приложений ............................................................... 701 17.4 Сравнительные тесты и мини-приложения: окно 17.3.4 Детализированные профилировщики обеспечивают подробные сведения о производительности оборудования ............ 703 17.5 Обнаружение (и исправление) ошибок памяти в производительность системы ........................................................... 705 17.4.1 Сравнительные тесты измеряют характеристики производительности системы ....................................................... 705 17.4.2 Мини-приложения придают приложению перспективу ................ 706 для устойчивого приложения .............................................................. 709 17.5.1 Инструмент Valgrind Memcheck: дублер с открытым исходным кодом ............................................................................... 709 17.5.2 Dr. Memory для заболеваний вашей памяти ................................... 710 17.5.3 Коммерческие инструменты памяти для требовательных приложений ..................................................................................... 712 17.5.4 Компиляторно-ориентированные инструменты памяти для удобства.................................................................................... 712 17.6 Инструменты проверки потоков для определения гоночных 17.5.5 Инструменты проверки столбов ограждения обнаруживают несанкционированный доступ к памяти ........................................ 713 17.5.6 Инструменты памяти GPU для устойчивых приложений GPU .... 714 условий ...................................................................................................... 715 17.6.1 Intel® Inspector: инструмент обнаружения гоночных состояний с графическим интерфейсом ........................................ 715
Стр.18
18 Содержание 17.7 Устранители дефектов: отладчики для уничтожения 17.6.2 Archer: тексто-ориентированный инструмент обнаружения гоночных условий ......................................................................................... 716 дефектов .................................................................................................... 718 17.7.1 Отладчик TotalView широко доступен на веб-сайтах HPC ........... 718 17.7.2 DDT – еще один отладчик, широко доступный на веб-сайтах HPC .......................................................................... 719 17.7.3 Отладчики Linux: бесплатные альтернативы для ваших локальных потребностей разработки ........................................... 719 17.7.4 Отладчики GPU способны помогать устранять дефекты GPU .... 720 17.8 Профилирование файловых операций .............................................. 721 17.9 Менеджеры пакетов: ваш персональный системный 17.10 Modules: загрузка специализированных цепочек администратор ........................................................................................ 724 17.9.1 Менеджеры пакетов для macOS ...................................................... 725 17.9.2 Менеджеры пакетов для Windows .................................................. 725 17.9.3 Менеджер пакетов Spack: менеджер пакетов для высокопроизводительных вычислений .................................................. 726 инструментов ........................................................................................... 727 17.10.1 Модули TCL: изначальная система модулей для загрузки цепочек программных инструментов ............................................ 730 17.10.2 Lmod: имплементация альтернативного пакета Modules на основе Lua ................................................................................... 730 17.11 Размышления и упражнения ............................................................... 730 Резюме .................................................................................................................. 731 Приложение А Справочные материалы .......................................................................... 732 Приложение B Решения упражнений ............................................................................... 740 Приложение C Глоссарий ................................................................................................... 765 Предметный указатель .......................................................................... 781
Стр.19

Облако ключевых слов *


* - вычисляется автоматически
Антиплагиат система на базе ИИ