Как найти узкое место графического конвейера - PullRequest
1 голос
/ 26 мая 2011

Я давно размышлял об этой проблеме.Как найти узкое место графического конвейера.Недавно я использовал программу для рисования огромного количества полигонов в простой сцене с альфа-смешением (AKA grass scene).Я использовал две программы, одна использует статические координаты, а другая - вращение и перемещение.Оба работают с частотой 60 кадров в секунду, без других тяжелых процессов.Но когда я использую их вместе (два окна, каждое из которых имеет одинаковое количество трав и положений травы), то одно, которое использует перемещение и вращение, работает со скоростью 10 FPS, а другое - со скоростью 55 FPS.Мой вопрос заключается в том, почему оба работают со скоростью 60 кадров в секунду и когда такое происходит, почему второй (вращение и перевод каждой травы) падает примерно на 50 кадров в секунду, а второй все еще 55?Похоже на бутылочное горлышко для меня.Пожалуйста, дайте мне знать, если у вас есть идея, или в более общем ответе, если у вас есть идея или статья о том, как найти узкое место в GPU (или GPGPU) или оптимизировать графический код для работы на GPU?

1 Ответ

5 голосов
/ 26 мая 2011

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

Экземпляр был введен для облегчения этой конкретной проблемы, с которой вы столкнулись.

Чтобы ответить, как профилировать графический конвейер, вам помогут несколько инструментов:

gDEBugger http://www.gremedy.com/

NVPerfkit http://developer.nvidia.com/nvidia-perfkit

GPU Perf Studio http://developer.amd.com/tools/PerfStudio/Pages/default.aspx

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...