2013-04-18 3 views
0

Я должен изменить программу C/C++ с большим количеством циклов внутри одной функции. I msut добавляет функции cuda.Лучший способ сделать профилирование цикла

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

здесь вы найдете пример инструмента, который делает именно то, что я хочу, но я не найти его или что-то подобное: http://carbon.ucdenver.edu/~dconnors/papers/wbia06-loopprof.pdf

+0

Почему бы не профилировать только функции, содержащие петли? Они (надеюсь) не содержат гораздо больше кода, чем сам цикл, не так ли? –

+0

Вы уже посмотрели gprof (если вы используете gcc для cpmiling)? – ogni42

+0

, потому что у кода есть jsut одна функция, и эта функция содержит много циклов. @ ogni42 да, я смотрю с gprof, но вывод не является тем, что я не хочу. – volty41

ответ

1

Я хотел бы использовать , и выяснить, где код тратит большую часть пора. Как только вы определили функцию или часть функции, вы, вероятно, сделали. Понимание того, какие инструкции являются «самыми тяжелыми» в функции, потребует длительный тестовый тест для этого конкретного цикла, так что профилировщик может получить достаточные данные для каждой команды (или, по крайней мере, большинства инструкций) в цикле. Но на самом деле профилирование до инструкций, вероятно, не имеет значения, если вы хотите заменить код другой технологией - маловероятно, что замена одного цикла из нескольких строк кода очень поможет, так как слишком много накладных расходов. Вместо этого вы хотите взять более крупный блок и переместить его в CUDA.

Смежные вопросы