Содержание книги "Технология CUDA в примерах
:
введение в программирование графических процессоров"
Предисловие
Вступление
Благодарности
Об авторах
Глава 1. Почему CUDA? Почему именно теперь
1.1. О чем эта глава
1.2. Век параллельной обработки
1.2.1. Центральные процессоры
1.3. Развитие GPU-вычислений
1.3.1. Краткая история GPU
1.3.2. Ранние этапы GPU-вычислений
1.4. Технология CUDA
1.4.1. Что такое архитектура CUDA
1.4.2. Использование архитектуры CUDA
1.5. Применение CUDA
1.5.1. Обработка медицинских изображений
1.5.2. Вычислительная гидродинамика
1.5.3. Науки об окружающей среде
1.6. Резюме
Глава 2. Приступая к работе
2.1. О чем эта глава
2.2. Среда разработки
2.2.1. Графические процессоры, поддерживающие архитектуру CUDA
2.2.2. Драйвер устройства NVIDIA
2.2.3. Комплект средств разработки CUDA Development Toolkit
2.2.4. Стандартный компилятор
Windows
Linux
Macintosh OS X
2.3. Резюме
Глава 3. Введение в CUDA C
3.1. О чем эта глава
3.2. Первая программа
3.2.1. Здравствуй, мир!
3.2.2. Вызов ядра
3.2.3. Передача параметров
3.3. Получение информации об устройстве
3.4. Использование свойств устройства
3.5. Резюме
Глава 4. Параллельное программирование на CUDA C
4.1. О чем эта глава
4.2. Параллельное программирование в CUDA
4.2.1. Сложение векторов
Сложение векторов на CPU
Сложение векторов на GPU
4.2.2. Более интересный пример
Вычисление фрактала Джулиа на CPU
Вычисление фрактала Джулиа на GPU
4.3. Резюме
Глава 5. Взаимодействие нитей
5.1. О чем эта глава
5.2. Расщепление параллельных блоков
5.2.1. И снова о сложении векторов
Сложение векторов на GPU с использованием нитей
Сложение более длинных векторов на GPU
Сложение векторов произвольной длины на GPU
5.2.2. Создание эффекта волн на GPU с использованием нитей
5.3. Разделяемая память и синхронизация
5.3.1. Скалярное произведение
5.3.1. Оптимизация скалярного произведения (неправильная)
5.3.2. Растровое изображение в разделяемой памяти
5.4. Резюме
Глава 6. Константная память и события
6.1. О чем эта глава
6.2. Константная память
6.2.1. Введение в метод трассировки лучей
6.2.2. Трассировка лучей на GPU
6.2.3. Трассировка лучей с применением константной памяти
6.2.4. Производительность версии с константной памятью
6.3. Измерение производительности с помощью событий
6.3.1. Измерение производительности трассировщика лучей
6.4. Резюме
Глава 7. Текстурная память
7.1. О чем эта глава
7.2. Обзор текстурной памяти
7.3. Моделирование теплообмена
7.3.1. Простая модель теплообмена
7.3.2. Обновление температур
7.3.3. Анимация моделирования
7.3.4. Применение текстурной памяти
7.3.5. Использование двумерной текстурной памяти
7.4. Резюме
Глава 8. Интероперабельность с графикой
8.1. О чем эта глава
8.2. Взаимодействие с графикой
8.3. Анимация волн на GPU с применением интероперабельности с графикой
8.3.1. Структура GPUAnimBitmap
8.3.2. И снова об анимации волн на GPU
8.4. Моделирование теплообмена с использованием интероперабельности с графикой
8.5. Интероперабельность с DirectX
8.6. Резюме
Глава 9. Атомарные операции
9.1. О чем эта глава
9.2. Вычислительные возможности
9.2.1. Вычислительные возможности NVIDIA GPU
9.2.2. Компиляция программы для GPU с заданным минимальным уровнем вычислительных возможностей
9.3. Обзор атомарных операций
9.4. Вычисление гистограмм
9.4.1. Вычисление гистограммы на CPU
9.4.2. Вычисление гистограммы на GPU
Ядро вычисления гистограммы с применением атомарных операций с глобальной памятью
Ядро вычисления гистограммы с применением атомарных операций с глобальной и разделяемой памятью
9.5. Резюме
Глава 10. Потоки
10.1. О чем эта глава
10.2. Блокированная память CPU
10.3. Потоки CUDA
10.4. Использование одного потока CUDA
10.5. Использование нескольких потоков CUDA
10.6. Планирование задач на GPU
10.7. Эффективное использование потоков CUDA
10.8. Резюме
Глава 11. CUDA C на нескольких GPU
11.1. О чем эта глава
11.2. Нуль-копируемая память CPU
11.2.1. Вычисление скалярного произведения с применением нуль-копируемой памяти
11.2.2. Производительность нуля-копирования
11.3. Использование нескольких GPU
11.4. Переносимая закрепленная память
11.5. Резюме
Глава 12. Последние штрихи
12.1. О чем эта глава
12.2. Инструментальные средства CUDA
12.2.1. CUDA Toolkit
12.2.2. Библиотека CUFFT
12.2.3. Библиотека CUBLAS
12.2.4. Комплект NVIDIA GPU Computing SDK
12.2.5. Библиотека NVIDIA Performance Primitives
12.2.6. Отладка программ на языке CUDA C
CUDA-GDB
NVIDIA Parallel Nsight
12.2.7. CUDA Visual Profiler
12.3. Текстовые ресурсы
12.3.1. Programming Massively Parallel Processors: A Hands-On Approach
12.3.2. CUDA U
Материалы университетских курсов
Журнал DR. DOBB’S
12.3.3. Форумы NVIDIA
12.4. Программные ресурсы
12.4.1. Библиотека CUDA Data Parallel Primitives Library
12.4.2. CULAtools
12.4.3. Интерфейсы к другим языкам
12.5. Резюме
Приложение A. Еще об атомарных операциях
A.1. И снова скалярное произведение
A.1.1. Атомарные блокировки
A.1.2. Возвращаясь к скалярному произведению: атомарная блокировка
A.2. Реализация хеш-таблицы
А.2.1. Обзор хеш-таблиц
A.2.2. Реализация хеш-таблицы на CPU
A.2.3. Многонитевая реализация хеш-таблицы
A.2.4. Реализация хеш-таблицы на GPU
A.2.5. Производительность хеш-таблицы
A.3. Резюме
Предметный указатель