Программирование на видеокартах

Отчетность: 
зачёт
Тип: 
факультативный
Часов: 
34
Семестр: 
архив

Вводный курс рассказывает о возможностях и способах программирования графических процессоров, получивших широкое распространение в последние годы. Рассмотрены средства, предлагаемые известнейшим производителем графических карт, — платформа CUDA фирмы NVIDIA: компилятор nvcc, его симбиоз со средой разработки Visual Studio, предложенные расширения языка C/C++ (дополнительные типы данных, ключевые слова, новые математические функции, синтаксис вызова программ, исполняемых на графической карте), а также особенности параллельного исполнения кода вообще, разделения общих ресурсов, синхронизации исполнения отдельных потоков программ. Анализируются параллельные реализации: базовых векторных алгоритмов, умножения матриц, сортировки (bitonic sort). Рассматривается использование предлагаемых фирмой NVIDIA библиотек: cuBLAS (базовые функции линейной алгебры), cuSPARSE (работа с разреженными матрицами), Thrust (объектно-ориентированный программный интерфейс).

Альтернативой привязки к конкретному производителю является использование независимых решений, работающих на более широком спектре устройств различных производителей, поэтому излагаются сведения о работе с библиотекой Boost, платформой OpenCL, библиотекой OpenCV. Для отображения результатов может быть выбран кроссплатформенный интерфейс OpenGL, поэтому излагаются основы его применения, тем более, что в рамках OpenGL теперь тоже существует возможность задействовать вычислительную мощь современных графических процессоров (язык GLSL) для отрисовки сложных трёхмерных сцен. Не следует недооценивать и проникновения современных технологий в самое популярное приложение последнего времени — браузер: даже в нём теперь (с помощью WebGL) можно создавать сложные вычислительные и графические программы, существенно ускоряемые наличием графического процессора; читатели смогут познакомиться с наиболее впечатляющими примерами таких программ. Рассчитано на студентов старших курсов физического факультета и аспирантов, но может быть использовано всеми заинтересованными студентами, аспирантами и сотрудниками для первоначального знакомства с современными вычислительными возможностями.