Вычисления на видеокартах
Санкт-Петербург, осень 2018
Описание
Цели курса
- Дать понимание какие алгоритмы могут выиграть от реализации на видеокартах вместо процессора, а какие - не могут
- Дать практический опыт разработки на видеокартах с помощью OpenCL
- Научить базовым приемам оптимизации под видеокарты
Описание
В рамках курса будет рассказано чем отличаются видеокарты от центрального процессора, за счет чего в некоторых случаях они обладают существенным преимуществом в вычислительной мощности, какие алгоритмы могут выиграть от этого преимущества и как реализовывать такие алгоритмы. Большая часть обсуждаемых примеров будет приведена из областей компьютерной графики, компьютерного зрения и трехмерной реконструкции (structure from motion).
Так как курс очень прикладной, то существенную часть составляют практические задания. Основная часть каждого задания состоит из реализации OpenCL-кернелов - подпрограмм на языке C, которые будут выполняться на видеокарте. Большая часть вызовов OpenCL API функций будет спрятана в предоставляемой библиотеке, но общий обзор происходящего внутри библиотеки будет дан в рамках первых двух вводных практических заданий.
Пререквизиты
От слушателей ожидается хорошее знание алгоритмов и структур данных, а так же знание C++. Для выполнения практических заданий подходит любой компьютер (OpenCL-программы можно исполнять и на центральном процессоре). Практические задания будет возможно выполнить на любой операционной системе, но рекомендуемыми являются Ubuntu и Windows.
Преподаватели
Список лекций
Warps/Wavefronts, code divergence, occupancy, registry spilling, coalesced memory access, banks conflicts.
Немного уточнений по архитектуре N-body simulation Brute force matching Key points detection Matrix transpose Matrix multiplication
Напоминание про barrier Обсуждение задачи про максимальный префикс Matrix transpose Matrix multiplication
Sort and Sweep , Parallel Spatial Subdivision, Radix sort
Bitonic sort, Radix sort, Bounding Volume Hierarchy, Z-Order Curve, Morton code, LBVH
Merge sort и SGM реконструкция глубины по стерео-паре.
Sparse matrices, Poisson surface reconstruction on GPU, Look Up Tables.
Variational methods:
- Image denoising via Total Variation Minimization:
- TV-L2 (ROF)
- TV-L1
- Image Super Resolution:
- TV-L1
- Huber model
- 2.5D surface reconstruction (TGV-Huber model)
- Surface reconstruction via Total Variation Minimization (TV-L1):
- 3D surface reconstruction on regular grid
- 3D surface reconstruction on adaptive octree
- OpenGL: hardware rasterization
- Software rasterization on CPU and Intel Larrabee
- Software rasterization on GPGPU