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