2013-05-06 3 views
1

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

Есть ли какие-либо инструменты, которые могут мне помочь? найти время выполнения, отслеживать потоки и их преемственность, найти, какой процессор выполнял какой поток (если в многоядерной системе), переключение контекста и другие вещи.

У меня уже есть базовые знания о профилировании кода с помощью gprof, и я считаю, что этого недостаточно. Я ищу что-то такое же, но гораздо более мощное! любая помощь ??

ответ

1

Чтобы получить дополнительную информацию о времени выполнения, кеше и т. Д., Существуют различные подходы. Сначала создайте стабильную вычислительную среду. Заблокируйте частоту процессора, чтобы получить надежные измерения, например. в BIOS отключить Intel SpeedStep; избегать любых фоновых процессов и т.д.

счетчики производительности низкого уровня:

  • Вы можете инструмент код с прилавков высокого разрешения и производительности измерений. Взгляните на PAPI interface for performance measurement.

Advanced профайлеры:

  • Perf, с открытым исходным кодом. Perf выполняет выборочное измерение и показывает различные профилирующие данные с полной поддержкой нескольких потоков. Например, Perf Flamegraph дает очень хороший обзор горячих точек в вашем коде.
  • Intel VTune, коммерческих. Покажет вам подробную статистику кеша с счетчиков HW, производительность на поток и т. Д. Требуется довольно некоторое понимание аппаратного обеспечения для интерпретации данных.

Обратите внимание, что все вышеперечисленное также может измерять потребление энергии.

В качестве альтернативы вы можете взглянуть на поведение вашей программы с течением времени, создав трассировку потоков в ОС. Посмотрите на интеграцию LTTng Eclipse.

Если вы хотите увидеть больше информации о фактическом параллельном поведении вашего кода, например, о зависимостях данных, которые могут препятствовать параллелизму, потоковым расходам и конфликту между кешами, вы могли бы пойти в Pareon из Vector Fabrics (отказ от ответственности: я один из основателей векторных тканей). Это не профилировщик, а анализ кода для распараллеливания.

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