Впечатляющая демонстрация возможностей CUDA

Instinct Technology совместно с Dark Water Studios создали демонстрацию DogFighter, призванную наглядно отразить гигантские возможности современных видеоускорителей в области расчетов общего назначения.

Для демонстрации разработан алгоритм параллельных расчетов поведения стаи. В данном случае использовались самолеты, для движения каждого из которых необходимо рассчитать 11 различных характеристик. В демонстрации участвовали 4096 таких самолетов. На вид хаотичное движение полностью рассчитывается только лишь одной видеокартой GeForce с поддержкой технологии CUDA, в результате ни один самолет не столкнулся с другим.

Хотя графика в демонстрации непримечательна, стоит отметить, что в ней используются динамические расчеты освещения и теней, а также эффекты постобработки: туман, глубина резкости, размытие движения, мягкий свет.

Расчеты действий каждого пилота самолета включают рулевое управление и анализ близлежащих объектов для движения к заданной точке без столкновений. У всего роя самолетов также есть общие задачи. К примеру, были поставлены цели собраться вокруг определенной точки, или окружить вращающийся дирижабль, или же заполнить объем параллелепипеда. Для визуализации одного кадра сцены видеокарта производит в общей сложности расчет 16 млн. запросов.

InstinctTech DogFighter CudaDemo
InstinctTech DogFighter CudaDemo

Появление стандартов OpenCL и DirectX Compute открывают перспективы широкого использования расчетов общего назначения на видеокартах. Для сравнения возможностей современных центральных процессоров в области параллельных вычислений, создатели демонстрации запустили ее без использования CUDA. Написанный алгоритм позволяет легко масштабировать задачу и перевести ее выполнение на процессор с другой архитектурой, что показывает преимущество таких технологий как CUDA в задачах подобного рода.

Для сохранения прежней частоты кадров им пришлось ограничить число самолетов до 512. Можно ошибочно предположить, что разница в производительности составляет 8 раз, однако наращивание числа участвующих независимых пилотов увеличивает объем расчетов не в арифметической, а геометрической прогрессии. Так для расчета движения 512 самолетов потребует уже не 16 млн. запросов, а всего лишь 260 тыс. То есть разница в производительности видеокарты и процессора составляет 60 раз.