Книга C++ AMP: построение массивно параллельных программ с помощью Microsoft Visual C++


Книга Книга C++ AMP: построение массивно параллельных программ с помощью Microsoft Visual C++

Название: 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 оценок
Формат: Книга
Уже скачали: 12834 раз



Похожие Книги

Нам показалось, что Книги ниже Вас заинтересуют не меньше. Эти издания Вы так же можете скачивать и читать совершенно бесплатно на сайте!

  • Журнал Handyman №12 2012 (New Zealand)

    Handyman №12 2012 (New Zealand)

    Название: Handyman (New Zealand)Год / месяц: 2012 / 12 - 2013 / 1Номер: 12Формат: pdfЯзык: английскийРазмер: 69 мбBuilding on Australian Handyman's success - we have provided a uniquely New Zealand D . . .

  • Журнал Марь Ванна. Вкуснее не бывает №5 2012

    Марь Ванна. Вкуснее не бывает №5 2012

    Название: Марь Ванна. Вкуснее не бывает №5 2012Автор: коллективИздательство: ИД "Эврика"Год: 2012Страниц: 48Формат: PDFРазмер: 10.3 МбЯзык: русскийОчередной выпуск составлен из фирменных рецептов блюд . . .

  • Журнал Rock City №7 1995

    Rock City №7 1995

    Название: Rock City Издательство: ТКФ "Biz Enterprises" Год / месяц: 1995 / не указан Номер: 7 Формат: PDF Язык: Русский Размер: 22,49 Мб Кол-во страниц: 68 Описание: Ведущее Hard-rock & Heavy Metal . . .

  • Книга 1001 вопрос про Это

    1001 вопрос про Это

    Название: 1001 вопрос про ЭтоАвтор: Шахиджанян В.Издательство: ВагриусГод: 2009Страниц: 624Формат: fb2 epubРазмер: 1,8 mbISBN: 978-5-9697-0759-7Книга «1001 вопрос про ЭТО» знакома многим по выступлени . . .

  • Книга Слуцкая К - Тимошка и знаменитый художник

    Слуцкая К - Тимошка и знаменитый художник

    Жил-был цыпленок Тимошка, который любил рисовать. Однажды его в гости пригласил знаменитый художник......... Прекрасные рисунки для раскрашивания. Название: Тимошка и знаменитый художник Автор к . . .

  • Книга Blitz Chance - Немецкий для переселенцев + 25 Кадр.  Часть 2

    Blitz Chance - Немецкий для переселенцев + 25 Кадр. Часть 2

    Автор:Коллектив Название: Blitz Chance - Немецкий для переселенцев + 25 Кадр. Часть 2 Издательство: Blitz Chance Год: 2012 Формат: ISO Размер: 3700МВ Страниц:1000 Язык: Русский / Немецкий Это нов . . .

  • Книга T-Flex динамика. Руководство пользователя

    T-Flex динамика. Руководство пользователя

    Общие сведения:Структура задачи динамического расчёта.Правила выполнения динамического расчёта:Средства управления задачами;Создание задачи;Параметры задачи;Шарниры;Создание нагружений;Создание датчик . . .

  • Книга Цветочное царство №11 (ноябрь 2012)

    Цветочное царство №11 (ноябрь 2012)

    Цветочное царство - Журнал посвящен всем, кто не равнодушен к цветам. На страницах журнала Вы найдете массу полезной информации о выращивании цветов, правильном уходе, посадке.Название: Цветочное царс . . .

  • Книга Жилье мое №10-11 (октябрь-ноябрь 2012)

    Жилье мое №10-11 (октябрь-ноябрь 2012)

    Жилье мое - Специализированный архитектурно-строительный журнал. Включает в себя информацию по строительству, архитектуре, дизайну, мебели, сферам банковского кредитования, законодательству и др.Назва . . .

  • Журнал Жизнь в джунглях

    Жизнь в джунглях

    Серия книг "Интересное - рядом" откроет детям красочный и увлекательный мир животных! Превосходные иллюстрации и захватывающие факты, включенные в уникально оформленные книги, будут интересны детям лю . . .


Вы не зарегистрированы!

Если вы хотите скачивать книги, журналы и аудиокниги бесплатно, без рекламы и без смс, оставлять комментарии и отзывы, учавствовать в различных интересных мероприятиях, получать скидки в книжных магазинах и многое другое, то Вам необходимо зарегистрироваться в нашей Электронной Библиотеке.

Отзывы читателей


Ой!

К сожалению, в нашей Бесплатной Библиотеке пока нет отзывов о Книге Книга C++ AMP: построение массивно параллельных программ с помощью Microsoft Visual C++. Помогите нам и другим читателям окунуться в сюжет Книги и узнать Ваше мнение. Оставьте свой отзыв или обзор сейчас, это займет у Вас всего-лишь несколько минут.