Спросить
Войти

АКТУАЛЬНЫЕ ПРОБЛЕМЫ ОПТИМИЗАЦИИ АЛГОРИТМОВ ТРАССИРОВКИ ПУТЕЙ НА ГРАФИЧЕСКИХ ПРОЦЕССОРАХ С ПОМОЩЬЮ ТЕХНОЛОГИИ CUDA

Автор: Авагян Г.Е.

ISSN 2410-6070 ИННОВАЦИОННАЯ НАУКА №5 / 2020

УДК 004.92

Г.Е.Авагян

Студент 3 курса ОГУ,

Г.Оренбург, РФ Д.Е.Смагин Студент 3 курса ОГУ, Г.Оренбург, РФ М.В.Мешков Студент 3 курса ОГУ, Г.Оренбург, РФ

АКТУАЛЬНЫЕ ПРОБЛЕМЫ ОПТИМИЗАЦИИ АЛГОРИТМОВ ТРАССИРОВКИ ПУТЕЙ НА ГРАФИЧЕСКИХ ПРОЦЕССОРАХ С ПОМОЩЬЮ ТЕХНОЛОГИИ CUDA

Аннотация

В области компьютерной графики существуют проблемы визуализации, а именно связанные с фотореалистичностью картинки и скоростью рендеринга. В статье предлагается решение данной проблемы за счет разработки системы, реализующей алгоритмы глобального освещения и оптимизации их при помощи технологии распараллеливания задач на графических процессорах CUDA. В результате работы будет реализован алгоритм потоковой трассировки путей, оптимизированный средствами для распараллеливания задач на графических процессорах технологии CUDA.

Рендеринг, трассировка путей, параллельное программирование, графический процессор,

глобальное освещение, CUDA.

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

Технология CUDA, разработка компании NVIDIA для производимых компанией графических процессоров, и даёт наибольшее ускорение при распараллеливании задач на фоне остальных технологий. Наглядно это можно проследить на одном из тестов графического процессора NVIDIA Quadro БХ5600(Рис 1).

Число частиц OpenCL CUDA GLSL

FPS 6FLOPS FPS GFLOPS FPS GFLOPS

2048 1147.7 96.27 1398 117.27 907.6 76.13
4096 583.8 195.89 672.19 225.55 319.9 107.34
8192 148.3 199.04 172.44 213.45 106.9 143.47
16384 37.3 200.25 43.39 232.98 27.8 149.25

Рисунок 1 - Результаты тестирования GPU NVIDIA Quadro FX5600

По данным тестирования можно сделать вывод, что CUDA обгоняет на 17% по показателям кадров в секунду и операций в секунду технологию ОрепСЬ и на 35,08% технологию ОЬ8Ь.

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

часть рабочих потоков должна выполнять полезную работу. Данная проблема возникает из-за условной хвостовой рекурсии: трассируемый луч может завершится на источнике света, а может отражаться дальше, в следствии чего, некоторые потоки будут продолжать вычисления, а остальные будут ждать окончания данного процесса. Относится данная проблема в основном к модели SIMP - "одна инструкция, много потоков". Данная модель зачастую используется для реализации кода условий трассировки лучей теней (Рис 2).

if (threadidx.x < 4) {

} else { х;

Рисунок 2 Для устранения причин проблемы занятости был реализован алгоритм потоковой трассировки путей SPT, который разделяет фундаментальный алгоритм трассировки пути на 4 этапа (ядра):

1. Генерация - создание первичных лучей, т.е. создание первичных точек и определение направления лучей, по количеству пикселей. Выходные данные: буфер лучей и счётчик;
2. Продление - Считывание буфера и поиск ближайшего пересечения для каждого луча со сценой;

Выходные данные: Буфер результатов пересечения (лучей, продления пути).

3. Затенение - Вычисление модели затенения для каждого пути. На данном этапе могут генерироваться новые лучи или завершаться уже созданные, в зависимости от состояния пути;

Выходные данные: Изменения в созданных буферах.

4. Соединение - Трассировка лучей тени. Проводится та же работа, что и на этапе Продления, только для лучей тени совершается поиск любого возможного пересечения;

Выходные данные: Изменение буфера лучей, продлевающих путь.

После завершения 4ртого этапа, следует переход на 2й, цикл продолжается до тех пора, пока буфер пересечений не опустеет либо не будет достигнуто предельное количество итераций.

Возникает ряд опасений:

• Снижения количества активных путей, т.е. проблема "занятости" остаётся.

• Вызов ядра генерации, и плюс три вызова на итерацию, что значительно повышает нагрузку.

• Работа ядер с огромными буферами данных

Во-первых, максимально количество потоков, ограниченно аппаратно, поэтому если изначально задач больше или равно этому максимуму, при ещё большем увеличении количества задач, число создаваемых потоков останется фиксированным. Данная модификация разбивает одну итерацию базового алгоритма на 4, т.е. количество задач увеличивается, а значит на каждый поток может лечь большая часть работы и поэтому проблема "занятости" проявится только при падении нагрузки ниже максимального числа потоков.

Во-вторых, работа с большими буферами и затраты на вызовы ядер так же нагружают созданные потоки. Вследствие чего поддерживается полная занятость GPU.

В итоге получается, что путём увеличения количества подзадач и разбиения нагрузки между потоками, гарантированно нагружает большее количество созданных нитей, что исключает "простой" потоков, тем самый решает проблему "занятости".

Сравнение реализаций алгоритмов потоковой трассировки путей (SPT) и базового алгоритма трассировки путей (PT) глобального освещения (Таб 1, Рис 3,4).

Выполнения кода с условиями в SIMP

Таблица 1

Результаты тестов

Сцена Производительность (Миллионов путей/с) Ускорение

Автомобильная краска 42.99 58.38 36%

Город 5.4 9.7 79%

Рисунок 3 - Сцена: Автомобильная краска Рисунок 4 - Сцена: Город

Список использованной литературы:

1. AILA, T., AND LAINE, S. 2009. Understanding the efficiency of ray traversal on GPUs. In Proc. High Performance Graphics, 145-149.
2. PARKER, S. G., BIGLER, J., DIETRICH, A., FRIEDRICH, H., HOBEROCK, J., LUEBKE, D., MCALLISTER, D., MCGUIRE, M., MORLEY, K., ROBISON, A., AND STICH, M. 2010. OptiX: A general purpose ray tracing engine. ACM Trans. Graph. 29, 4, 66:1-66:13.
3. PURCELL, T. J., BUCK, I., MARK, W. R., AND HANRAHAN, P. 2002. Ray tracing on programmable graphics hardware. ACM Trans. Graph. 21, 3, 703-712
4. Джейсон Сандерс, Эдвард Кэндрот : «Технология CUDA в примерах. Введение в программирование графических процессоров» ДМК Пресс, 2011 г. - 232 c.
5. Ray tracing API [электронный ресурс] : https://developer.nvidia.com/rtx/raytracing
6. Global Illumination in a Nutshell [электронный ресурс]: https://web.archive.org/web/20110428182101/http://www.thepolygoners.com/tutorials/GIIntro/GIIntro.htm

© Авагян Г.Е., Смагин Д.Е., Мешков М.В., 2020

УДК 621.3.09

A.С. Бусарев,

сотрудник Академии ФСО России, г. Орел, РФ

B.В. Сергеев,

сотрудник Академии ФСО России, г. Орел, РФ

ПОВЫШЕНИЕ ЭФФЕКТИВНОСТИ АНТЕННО-ФИДЕРНЫХ СИСТЕМ

ДАЛЬНЕЙ КВ РАДИОСВЯЗИ

Аннотация

В данной статье рассматривается устройство и принцип работы ромбической антенны используемой

РЕНДЕРИНГ ТРАССИРОВКА ПУТЕЙ ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИЙ ПРОЦЕССОР ГЛОБАЛЬНОЕ ОСВЕЩЕНИЕ cuda
Другие работы в данной теме:
Контакты
Обратная связь
support@uchimsya.com
Учимся
Общая информация
Разделы
Тесты