МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное
учреждение высшего образования
ОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
им. Ф. М. ДОСТОЕВСКОГО
В. В. Коробицын, Ю. В. Фролова
ОСНОВЫ
ПРОГРАММИРОВАНИЯ
НА CUDA
Учебно-методическое пособие
Омск
2016
УДК 004. 4’2
ББК 32. 973. 202-018. 2я73
К681
Рекомендовано к изданию
редакционно-издательским советом ОмГУ
Рецензенты:
канд. техн. наук С. А. Хрущев,
канд. техн. наук И. Б. Ларионов
Коробицын, В. В. К681 Основы программирования на CUDA : учебно-мето-
дическое пособие / В. В. Коробицын, Ю. В. Фролова. –
Омск : Изд-во Ом. гос. ун-та, 2016. – 68 с. ISBN 978-5-7779-2015-7
Издание включает главы с практическими заданиями, пред-
назначенные для освоения основ программирования на CUDA. Шесть глав дают представление о базовых понятиях разработ-
ки параллельных программ вычислений общего назначения на
графическом процессоре. Для студентов вузов и начинающих программистов. УДК 004. 4’2
ББК 32. 973. 202-018. 2я73
c Коробицын В. В. ,
○
Фролова Ю. В. , 2016
ISBN 978-5-7779-2015-7 c ФГБОУ ВО «ОмГУ
○
им. Ф. М. Достоевского», 2016
ОГЛАВЛЕНИЕ
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1 Знакомство с параллельными алгоритмами . . . . . . . . 7
1. 1. Понятие параллельного алгоритма . . . . . . . . . . . . . . . . 7
1. 2. Параллельное суммирование . . . . . . . . . . . . . . . . . . . . . 8
1. 3. Практические аспекты исследования алгоритмов . . . 15
1. 4. Практическое задание . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2 Подготовка среды разработки параллельных про-
грамм . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 21
2. 1. Описание инструментария . . . . . . . . . . . . . . . . . . . . . . . 21
2. 2. Установка CUDA под Linux . . . . . . . . . . . . . . . . . . . . . . 23
2. 3. Практическое задание . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3 Реализация простейшей программы на CUDA . . . . . 28
3. 1. Реализация умножения двух квадратных матриц . . 28
3. 2. Практическое задание . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4 Блочная иерархия программ на CUDA . . . . . . . . . . . . . 35
4. 1.