Название: C++ AMP: построение массивно параллельных программ с помощью Microsoft Visual C++
Автор: Грегори К., Миллер Э.
Страниц: 412
Формат: PDF
Размер: 5 Мб
Качество: Нормальное
Язык: Русский
Год издания: 2013
C++ AMP — разработанная корпорацией Microsoft технология ускорения написанных на С++ приложений за счет исполнения кода на оборудовании с распараллеливанием по данным, например, на графических процессорах.
Модель программирования в С++ АМР основана на библиотеке, устроенной по образцу STL, и двух расширениях языка С++, интегрированных в компилятор Visual C++ 2012. Она в полной мере поддерживается инструментами Visual Studio.
В книге показано, как воспользоваться всеми преимуществами С++ АМР в собственных приложениях. Помимо описания различных черт С++ АМР, приведены примеры различных подходов к реализации различных алгоритмов в реальных приложениях.
Издание предназначено для программистов, уже работающих на С++ и стремящихся повысить производительность существующих приложений.
ОГЛАВЛЕНИЕ
Предисловие ... 13
Об авторах ... 15
Введение ...16
Для кого предназначена эта книга ... 16
Предполагаемые знания ... 17
Для кого не предназначена эта книга ... 17
Организация материала ... 18
Принятые соглашения ... 19
Требования к системе ... 19
Примеры кода ... 20
Установка примеров кода ... 20
Использование примеров кода ... 21
Благодарности ... 21
Замеченные опечатки и поддержка книги ... 22
Нам важно ваше мнение ... 22
Оставайтесь на связи ... 23
Глава 1. Общие сведения и подход C++ AMP ... 24
Что означает GPGPU? Что такое гетерогенные вычисления? ... 24
История роста производительности ... 25
Гетерогенные платформы... 26
Архитектура ГП... 29
Кандидаты на повышение производительности за счет
распараллеливания ... 30
Технологии распараллеливания вычислений на ЦП ... 34
Векторизация ... 34
OpenMP ... 37
Система Concurrency Runtime (ConcRT) и библиотека
Parallel Patterns Library ... 39
Библиотека Task Parallel Library ... 41
WARP – Windows Advanced Rasterization Platform ... 41
Технологии распараллеливания вычислений на ГП ... 41
Что необходимо для успешного распараллеливания ... 43
Подход C++ AMP ... 45
C++ AMP вводит GPGPU (и не только) в обиход... 45
C++ AMP – это C++, а не C ... 46
Для использования C++ AMP нужны только знакомые вам
инструменты ... 47
C++ AMP почти целиком реализована на уровне библиотеки ... 48
C++ AMP порождает переносимые исполняемые файлы с
прицелом на будущее ... 50
Резюме ... 52
Глава 2. Пример: программа NBody ... 53
Необходимые условия для запуска примера ... 53
Запуск программы NBody ... 55
Структура программы ... 59
Вычисления на ЦП ... 60
Структуры данных ... 60
Функция wWinMain ... 62
Обратный вызов OnFrameMove ... 62
Обратный вызов OnD3D11CreateDevice ... 63
Обратный вызов OnGUIEvent ... 65
Обратный вызов OnD3D11FrameRender ... 66
Классы NBody для вычислений на ЦП ... 66
Класс NBodySimpleInteractionEngine ... 67
Класс NBodySimpleSingleCore ... 67
Класс NBodySimpleMultiCore ... 68
Функция NBodySimpleInteractionEngine:: BodyBodyInteraction ... 68
Вычисления с применением C++ AMP ... 70
Структуры данных ... 70
Функция CreateTasks ... 72
Классы NBody в версии для C++ AMP ... 74
Функция NBodyAmpSimple::Integrate ... 74
Функция BodyBodyInteraction ... 76
Резюме ... 77
Глава 3. Основы C++ AMP ... 79
Тип array ... 79
accelerator и accelerator_view ... 82
index ... 85
extent ... 86
array_view ... 86
parallel_for_each ... 91
Функции, помеченные признаком restrict(amp) ... 94
Копирование между ЦП и ГП ... 96
Функции из математической библиотеки ... 98
Резюме ... 99
Глава 4. Разбиение на блоки ... 100
Назначение и преимущества блоков ... 101
Блочно-статическая память ... 102
Тип tiled_index ... 105
Преобразование простого алгоритма в блочный ... 106
Использование блочно-статической памяти ... 108
Барьеры и синхронизация ... 113
Окончательный вариант блочного алгоритма ... 116
Влияние размера блока ... 117
Выбор размера блока ... 120
Резюме ... 122
Глава 5. Пример: блочный вариант
программы NBody... 124
Насколько разбиение на блоки повышает
производительность программы NBody? ... 124
Блочный алгоритм решения задачи N тел ... 126
Класс NBodyAmpTiled ... 127
Метод NBodyAmpTiled::Integrate ... 127
Визуализатор параллелизма ... 133
Выбор размера блока ... 140
Резюме ... 144
Глава 6. Отладка ... 145
Первые шаги ... 145
Выбор режима отладки: на ЦП или на ГП ... 146
Эталонный ускоритель ... 150
Основы отладки на ГП ... 154
Знакомые окна и подсказки ... 154
Панель инструментов Debug Location ... 155
Обнаружение состояний гонки ... 156
Получение информации о нитях ... 158
Маркеры нитей ... 159
Окно GPU Threads ... 159
Окно Parallel Stacks ... 161
Окно Parallel Watch ... 163
Пометка, группировка и фильтрация нитей ... 165
Дополнительные способы контроля ... 168
Заморозка и разморозка нитей ... 168
Выполнение блока до текущей позиции ... 170
Резюме ... 172
Глава 7. Оптимизация... 173
Подход к оптимизации производительности ... 173
Анализ производительности ... 174
Измерение производительности ядра ... 175
Использование визуализатора параллелизма ... 178
Использование пакета SDK визуализатора параллелизма ... 185
Способы оптимизации доступа к памяти ... 187
Совмещение и вызовы parallel_for_each ... 187
Эффективное копирование данных в память ГП и обратно ... 191
Эффективный доступ к глобальной памяти ускорителя ... 198
Массив структур или структура массивов... 202
Эффективный доступ к блочно-статической памяти ... 205
Константная память ... 210
Текстурная память ... 211
Занятость и регистры ... 211
Оптимизация вычислений ... 213
Избегайте расходящегося кода ... 213
Выбор подходящей точности ... 218
Оценка стоимости математических операций ... 220
Развертывание циклов ... 220
Барьеры синхронизации ... 222
Режимы очереди ... 226
Резюме ... 227
Глава 8.Пример: программа Reduction ... 229
Постановка задачи ... 229
Отказ от ответственности ... 230
Структура программы ... 231
Инициализация и рабочая нагрузка ... 233
Маркеры визуализатора параллелизма ... 234
Функция TimeFunc() ... 235
Накладные расходы ... 237
Алгоритмы на ЦП ... 238
Последовательный алгоритм ... 238
Параллельный алгоритм ... 238
Алгоритмы с использованием C++ AMP ... 239
Простой алгоритм ... 240
Простой алгоритм с array_view ... 242
Простой оптимизированный алгоритм ... 244
Наивный блочный алгоритм ... 246
Блочный алгоритм с разделяемой памятью ... 248
Минимизация расхождения ... 254
Устранение конфликтов банков ... 256
Уменьшение числа простаивающих нитей ... 257
Развертывание цикла ... 258
Каскадная редукция ... 263
Каскадная редукция с развертыванием цикла ... 265
Резюме ... 266
Глава 9. Работа с несколькими ускорителями ...268
Выбор ускорителей ... 269
Перебор ускорителей ... 269
Ускоритель по умолчанию ... 272
Использование нескольких ГП ... 274
Обмен данными между ускорителями ... 279
Динамическое балансирование нагрузки ... 285
Комбинированный параллелизм ... 288
ЦП как последнее средство ... 290
Резюме ... 292
Глава 10. Пример: программа Cartoonizer ... 294
Необходимые условия ... 295
Запуск программы... 295
Структура программы ... 299
Конвейер ... 301
Структуры данных ... 301
Метод CartoonizerDlg::OnBnClickedButtonStart() ... 303
Класс ImagePipeline ... 304
Стадия мультипликации ... 309
Класс ImageCartoonizerAgent ... 309
Реализации интерфейса IFrameProcessor ... 312
Использование нескольких ускорителей, совместимых
с C++ AMP ... 321
Класс FrameProcessorAmpMulti ... 321
Разветвленный конвейер ... 324
Класс ImageCartoonizerAgentParallel ... 325
Производительность мультипликатора ... 328
Резюме ... 331
Глава 11. Интероперабельность с графикой ... 333
Основы ... 334
Типы norm и unorm ... 334
Типы коротких векторов ... 336
Тип texture ... 340
Сравнение текстур и массивов ... 349
Использование текстур и коротких векторов ... 351
Встроенные функции HLSL ... 355
Интероперабельность с DirectX ... 356
Интероперабельность представления ускорителя
и устройства Direct3D ... 357
Интероперабельность array и буфера Direct3D ... 358
Интероперабельность texture и текстурного ресурса
Direct3D ... 359
Практическое использование интероперабельности
с графикой ... 363
Резюме ... 365
Глава 12. Советы, хитрости и рекомендации ... 367
Решение проблемы несоответствия размеру блока... 368
Дополнение до кратного размеру блока ... 369
Отсечение блоков ... 371
Сравнение разных подходов ... 375
Инициализация массивов ... 376
Объекты-функции и лямбда-выражения ... 377
Атомарные операции ... 378
Дополнительные возможности C++ AMP Features
в Windows 8 ... 382
Обнаружение таймаутов и восстановление ... 384
Предотвращение TDR ... 385
Отключение TDR в Windows 8 ... 386
Обнаружение TDR и восстановление ... 387
Поддержка вычислений с двойной точностью ... 388
Ограниченная поддержка двойной точности ... 388
Полная поддержка двойной точности ... 389
Отладка в Windows 7 ... 389
Конфигурирование удаленной машины ... 390
Конфигурирование проекта ... 390
Развертывание и отладка проекта ... 392
Дополнительные отладочные функции ... 392
Развертывание ... 393
Развертывание приложения ... 393
Запуск C++ AMP на сервере ... 394
C++ AMP и приложения для Windows 8 в магазине
Windows Store ... 397
Использование C++ AMP из управляемого кода ... 397
Из приложения .NET, приложения для Windows 7,
Windows Store или библиотеки... 397
Из приложения для C++ CLR ... 398
Из проекта для C++ CLR ... 398
Резюме ... 399
Приложение. Другие ресурсы ... 400
Другие публикации авторов этой книги ... 400
Сетевые ресурсы Microsoft ... 400
Скачивайте руководства по C++ AMP ... 401
Исходный код и поддержка ... 401
Обучение ... 402
Предметный указатель ... 403
Рейтинг: | 4.8 баллов / 2537 оценок |
Формат: | Книга |
Уже скачали: | 12841 раз |
Нам показалось, что Книги ниже Вас заинтересуют не меньше. Эти издания Вы так же можете скачивать и читать совершенно бесплатно на сайте!
Название: Завещание веков (аудиокнига) Автор: Левенбрюк Анри Издательство: Нигде не купишь Формат: MP3 Размер: 511 Мб Качество: Отличное Язык: Русский Год издания: 2012 Получив из Франции известие о в . . .
Название: Правда - хорошо, а счастье лучше (Аудиоспектакль) Автор: Александр Островский Издательство: Радио Культура Формат: MP3 Размер: 150.7 Mb Качество: Отличное Язык: Русский Жанр: Комедия Год изд . . .
Название: Великие тайны. Серия в 40 томахАвтор: Коллектив Год издания: 1997 - 2009Издательство: ВечеСтраниц: 16000Формат: FB2,PDF,DJVUРазмер: 116,0 Мб (+3%)Сери . . .
Название: Просто и ясно о фотографии для начинающих Автор: Евгения Эвоян Издательство: Самиздат Формат: PDF Размер: 15,06 Мб Качество: Отличное Язык: Русский Год издания: 2012 Все изложено настолько п . . .
Название: Тайная история русского язычестваАвтор: Александр Асов Год издания: 2009Издательство: ВечеISBN: 978-5-9533-3885-1Страниц: 521Формат: DJVUРазмер: . . .
Автор: Е.А.Игнатова, М.С.Игнатов, В.Э.Федосов, Н.А.КонстантиноваНазвание: Краткий определитель мохообразных ПодмосковьяИздательство: Товарищество научных изданий КМКГод: 2011Формат: DjVuРазмер: 20 Mb . . .
Название: Anna №5 2008 Автор: коллектив Год издания: 2008 Страниц: 70 Язык: Русский Формат: JPEG Размер: 39 МбОписание: Anna - популярный и известный журнал по рукоделию. В каждом номере представлены . . .
Название: Verniba коллекция 2011Год: 2011Издательство: VernibaСтаницы: 16Формат: PDF в RARРазмер: 2.36 Mb + 3%Качество: хорошееЯзык: русскийКаталог женского нижнего белья “Verniba” коллекция 2011 года . . .
Название: Жизнь болот Автор: Смирнов А.ВИздательство: КолосГод: 1973Страниц: 160Формат: PDFРазмер: 21.8 МбЯзык: русскийКнига написана доктором технических наук Алексеем Владимировичем Смирновым (1901- . . .
Название: Robotki Reczne Extra №1-4,6 2011 Автор: коллектив Издательство: BPV Polska SP Год издания: 2011 Страниц: 32 Язык: Польский Формат: JPEG Размер: 277 МбОписание: Польский журнал по вязанию к . . .
Если вы хотите скачивать книги, журналы и аудиокниги бесплатно, без рекламы и без смс, оставлять комментарии и отзывы, учавствовать в различных интересных мероприятиях, получать скидки в книжных магазинах и многое другое, то Вам необходимо зарегистрироваться в нашей Электронной Библиотеке.
К сожалению, в нашей Бесплатной Библиотеке пока нет отзывов о Книге Книга C++ AMP: построение массивно параллельных программ с помощью Microsoft Visual C++. Помогите нам и другим читателям окунуться в сюжет Книги и узнать Ваше мнение. Оставьте свой отзыв или обзор сейчас, это займет у Вас всего-лишь несколько минут.