|
|
| |
|
Программирование графических процессоров
Спецкурс для магистрантов ФИТ, специализации "Компьютерное моделирование"
осенний семестр 2013-2014 года обучения
Программа курса
Lectures notes
- Введение. Часть 1 (pdf)
- Введение. Часть 2 (pdf)
- CUDA. API (pdf)
- Текстуры в CUDA (pdf)
- Оптимизация программ (pdf)
- CUDA Driver API (pdf)
- Использование нескольких GPU (pdf)
- Оптимизированные библиотеки для GPU (pdf)
- Адаптация программ для GPU (pdf)
- Программирование GPU на Фортран, Java, C# (pdf)
- Введение в OpenCL (pdf)
ssh: 193.124.208.113:10022 или ssh:10.4.0.65 (из сети НГУ)
Порядок сдачи заданий
Все вопросы\ответы высылать по адресу arom[ at ]ccfit.nsu.ru.
Префикс темы письма "CUDA_2013".
К отчету:
- Код программы и Makefile или строку компиляции на сервере cuda.ccfit.nsu.ru
- Отчет на полстраницы с результатом работы программы и его объяснением
Задачи
- Выделить на GPU массив arr из 10^9 элементов типа float и инициализировать
его с помощью ядра следующим образом: arr[i] = sin((i%360)*Pi/180). Скопировать
массив в память центрального процессора и посчитать ошибку err =
sum_i(abs(sin((i%360)*Pi/180) - arr[i]))/10^9. Провести исследование
зависимости результата от использования функций: sin, sinf, __sinf. Объяснить
результат. Проверить результат при использовании массива типа double.
- Реализовать программу для накладывания фильтров на изображения. Возможные фильтры:
размытие, выделение границ, избавление от шума. Реализовать два варианта программы,
а именно: с применением разделяемой памяти и текстур. Сравнить время.
Для работы с графическими файлами рекомендуется использовать libpng (man libpng).
Примеры использования библиотеки в /usr/share/doc/libpng12-dev/examples/.
Ссылки по теме: на habrahabr,
на ИНТУИТ
- Модифицировать предыдущую программу так, чтобы использовались все
имеющиеся в распоряжение программы GPU. Программа должна определять количество
доступных GPU и распределять работу по ним.
-
При помощи метода наименьших квадратов найти окружность в изображении.
Для каждой случайной выборки точек организовать их обработку на GPU. Случайные
выборки организовать при помощи библиотеки CURAND.
Входные данные: изображение размером 640x480 (например, знак ограничения
скорости), количество выборок N, количество элементов в каждой выборке K.
Выходные данные: изображение с нарисованной на нём окружностью.
Рекомендация: предварительно к изображению можно применить фильтр Собеля
выделения границ и рассматривать точки, у которых нормированное значение цвета
>=0.5.
RANSAC
Least-Squares Circle Fit
- Ray Tracing.
Реализовать генерацию сцены, состоящей минимум из двух сфер и
минимум одной плоскости. На выбор реализовать или преломление или отражение
луча от сфер. На плоскости должна быть натянута текстура. Минимальный
размер результирующего изображения 640х480 точек.
Плоскость можно представить в виде 2х треугольников.
- Для заданной программы на Фортране выполнить перенос части кода на
графический процессор. Возможны два варианта: используя возможности компилятора
PGI Accelerated Fortran или с помощью вызова внешней функции с ядром на Си\С++.
Usefull links (Полезные ссылки)
|
|