Как профилировать узкие места OpenMP - PullRequest
6 голосов
/ 24 августа 2011

У меня есть цикл, который был распараллелен OpenMP, но из-за характера задачи, есть 4 critical предложений.

Что было бы лучшим способом профилировать скорость и найтиКакой из критических пунктов (или, может быть, некритических (!)) занимает больше всего времени внутри цикла?

Я использую Ubuntu 10.04 с g ++ 4.4.3

Ответы [ 3 ]

4 голосов
/ 25 августа 2011

Scalasca - хороший инструмент для профилирования кодов OpenMP (и MPI) и анализа результатов. Тау тоже очень приятно, но гораздо сложнее в использовании.Инструменты Intel, такие как vtune , также хороши, но очень дороги.

4 голосов
/ 06 февраля 2015

Arm MAP имеет OpenMP и профилирование pthreads - и работает без необходимости инструментов или изменения исходного кода.Вы можете увидеть проблемы синхронизации и то, где потоки тратят время на уровень строки источника.В блоге OpenMP profiling стоит прочитать.

MAP широко используется для высокопроизводительных вычислений, а также для профилирования многопроцессорных приложений, таких как MPI.

3 голосов
/ 25 августа 2011

OpenMP включает функции omp_get_wtime () и omp_get_wtick () для измерения производительности синхронизации ( документы здесь ), я бы рекомендовал использовать их.

В противном случае попробуйте профилировщик.Я предпочитаю профилировщик ЦП Google, который можно найти здесь .

Существует также ручной способ, описанный в этом ответе.

...