Программирование на видеокартах (GPGPU). Спецкурс кафедры ММИ
Учебное пособие представляет собой краткий конспект вводного курса в программирование с помощью графических процессоров (GPGPU). Рассматривается использование графических карт как универсальных вычислительных устройств с параллельной архитектурой для решения трудоёмких задач, которые могут быть распараллелены.
В первой части курса подробно излагаются средства платформы CUDA от NVIDIA: компилятор nvcc, интеграция с Visual Studio, расширения языков C/C++, особенности параллельного исполнения кода, управление ресурсами и синхронизация потоков. Анализируются параллельные реализации базовых алгоритмов: векторных операций, умножения матриц и сортировки bitonic sort. Рассматривается использование библиотек NVIDIA: cuBLAS для линейной алгебры, cuSPARSE для работы с разреженными матрицами и Thrust с объектно-ориентированным интерфейсом.
Во второй части рассматриваются кроссплатформенные решения: библиотека Boost, платформа OpenCL для работы с устройствами различных производителей, библиотека OpenCV. Излагаются основы применения OpenGL для визуализации результатов, включая использование языка GLSL для задействования вычислительной мощи GPU в отрисовке сложных трёхмерных сцен. Также затрагивается технология WebGL, позволяющая создавать вычислительные и графические программы в браузере с ускорением на графических процессорах.
Пособие рассчитано на студентов старших курсов физического факультета и аспирантов, но может быть использовано всеми заинтересованными лицами для первоначального знакомства с современными вычислительными возможностями графических процессоров.









