Эффективная Пирамида Изображения в CUDA? - PullRequest
2 голосов
/ 15 декабря 2010

Какой самый эффективный способ сделать пирамидальное изображение в CUDA? Я написал для этого свои собственные ядра, но представьте, что мы можем добиться большего успеха.

Привязка к текстуре OpenGL с использованием взаимодействия OpenGL и аппаратного mipmapping, вероятно, будет намного быстрее. Любые указатели о том, как сделать то или иное

1 Ответ

1 голос
/ 18 октября 2011

MipMaps настраиваются при доступе / инициализации в OpenGL / DirectX. Ядро CUDA может делать то же самое, если вы выделяете текстуру на 50% шире (или выше), чем исходная текстура, и используете ядро ​​для уменьшения текстуры и записи результата рядом с исходной текстурой. Ядро, вероятно, будет работать лучше всего, когда каждый поток оценивает пиксель в следующем уменьшенном изображении. Вы сами должны определить схему выборки и выбрать подходящие веса для объединения пикселей. Для начала попробуйте билинейный режим, затем, как только он заработает, вы можете настроить трилинейные (кубические) или другие схемы выборки, такие как анизотропные и т. Д. Простая выборка (линейная и кубическая), вероятно, будет более эффективной, поскольку произойдет объединенный доступ к памяти (см. Программирование CUDA SDK). руководство). Вероятно, вам нужно будет разбить выполнение ядра на части, так как количество потоков ограничено для параллельного вызова (слишком много пикселей, слишком мало потоков = используйте мозаику для параллельного выполнения чанков). Возможно, вы найдете Mesa3D полезным в качестве ссылки (это открытый исходный код) реализация OpenGL).

...