Вычисления на видеокартах

Санкт-Петербург, осень 2018

Описание

Цели курса

  • Дать понимание какие алгоритмы могут выиграть от реализации на видеокартах вместо процессора, а какие - не могут
  • Дать практический опыт разработки на видеокартах с помощью OpenCL
  • Научить базовым приемам оптимизации под видеокарты

Описание

В рамках курса будет рассказано чем отличаются видеокарты от центрального процессора, за счет чего в некоторых случаях они обладают существенным преимуществом в вычислительной мощности, какие алгоритмы могут выиграть от этого преимущества и как реализовывать такие алгоритмы. Большая часть обсуждаемых примеров будет приведена из областей компьютерной графики, компьютерного зрения и трехмерной реконструкции (structure from motion).

Так как курс очень прикладной, то существенную часть составляют практические задания. Основная часть каждого задания состоит из реализации OpenCL-кернелов - подпрограмм на языке C, которые будут выполняться на видеокарте. Большая часть вызовов OpenCL API функций будет спрятана в предоставляемой библиотеке, но общий обзор происходящего внутри библиотеки будет дан в рамках первых двух вводных практических заданий.

Пререквизиты

От слушателей ожидается хорошее знание алгоритмов и структур данных, а так же знание C++. Для выполнения практических заданий подходит любой компьютер (OpenCL-программы можно исполнять и на центральном процессоре). Практические задания будет возможно выполнить на любой операционной системе, но рекомендуемыми являются Ubuntu и Windows.

Преподаватели

Список лекций

Введение в OpenCL. Архитектура видеокарты

Warps/Wavefronts, code divergence, occupancy, registry spilling, coalesced memory access, banks conflicts.

Примеры оптимизаций с local memory

Немного уточнений по архитектуре N-body simulation Brute force matching Key points detection Matrix transpose Matrix multiplication

Умножение матриц

Напоминание про barrier Обсуждение задачи про максимальный префикс Matrix transpose Matrix multiplication

Collision detection

Sort and Sweep , Parallel Spatial Subdivision, Radix sort

Сортировки и collision detection 2

Bitonic sort, Radix sort, Bounding Volume Hierarchy, Z-Order Curve, Morton code, LBVH

Merge sort и Semi-Global Matching

Merge sort и SGM реконструкция глубины по стерео-паре.

Sparse matrices, poisson reconstruction, LUT

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, Larrabee, cudaraster
  • OpenGL: hardware rasterization
  • Software rasterization on CPU and Intel Larrabee
  • Software rasterization on GPGPU