2016-12-09 6 views
2

Я использовал gprof для сравнения кода, но так как я начал распараллеливать его, я понимаю, что gprof не дает полезного вывода.Простой профилирование для Fortran + openMP?

Как профилировать или делать что-то, что может помочь найти узкие места?

Я слышал о Scalasca и TAU, но они кажутся немного излишними.

+0

Просьба пояснить, что простые в использовании и в этом контексте несколько противоположны. Исследователи обращают внимание на инструменты HPC, ориентированные на методы и функции. В принципе, вы не получаете гранта на исследование, чтобы сделать инструмент простым в использовании. Коммерческие инструменты могут быть более ориентированы на удобство использования. – Zulan

ответ

5

Самый простой в использовании инструмент: perf. Он может легко be installed на любой Linux-системе и хорошо работает с OpenMP или другими приложениями с резьбой.

Вы можете посмотреть живое исполнение, просто запустив sudo perf top в командной строке. Это скажет вам функции и строки исходного кода, которые в настоящее время потребляют большинство ресурсов ЦП, например top, для целых процессов.

Приставка приложение с:

perf record ./your-program your-parameter 
perf report 

Подарит профиль на функции и исходный код линейным методом. Существует множество параметров для настройки perf, например. путем включения трассировки графика вызовов с помощью -g.

Однако, хотя потоки поддерживаются, вы не можете их легко отличить. Таким образом, вы не узнаете, какой поток показал, какие характеристики производительности. Для этого вам следует прибегнуть к более специализированным инструментам HPC, даже если они кажутся немного переполненными. Вы должны учитывать, что анализ параллельной производительности не прост. Независимо от того, какой инструмент вы используете.

Бесплатные инструменты будут:

  • HPCToolkit: самый простой в использовании, поскольку она использует выборки только, так что нет никакой необходимости перекомпилировать приложение
  • Score-P для записи и Cube для анализа профилей (сайты кажутся вниз Временно)
  • Tau
+0

'perf' именно то, что я искал здесь. На Ubuntu 16 мне нужно 'sudo' перед большинством команд. 'perf annotate' тоже кажется полезным. Большое спасибо @ Zulan! –

0

Если у вас есть доступ к Intel Commerc Существует несколько очень полезных инструментов. С помощью Intel Vtune amplifier вы можете проверить горячие точки для серийного запуска, а также эффективное использование ваших сердечников (на картинке сводный график для запуска в 24 ядрах openMP) enter image description here