Как использовать пакет OpenMP Microbenchmark EPCC для моей программы

Я реализовал приложение с использованием OpenMP, которое я скомпилировал с помощью GCC в Ubuntu 16.04, для которого я хотел бы рассчитать накладные расходы в своем приложении. (Двоичный файл моего приложения предназначен, например, для xyz.exe.)

Для этого я пытаюсь использовать пакет EPCC OpenMP micro-benchmark. После make установки пакета я попытался запустить на терминале один из тестов под названием syncbench (./syncbench). Но я хотел бы знать, как я могу использовать тест для моей реализации OpenMP (xyz.exe). Я попытался найти пакет на официальной веб-странице EPCC (https://www.epcc.ed.ac.uk/research/computing/performance-characterisation-and-benchmarking/epcc-openmp-micro-benchmark-suite) а также README, доступный с кодом установки, но не смог найти, как именно это сделать.

Если кто-то использовал этот пакет для собственной реализации, сообщите мне, как вы объединили тест с вашей реализацией.

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


person krishtof    schedule 23.11.2016    source источник
comment
Я изменил название, потому что оно сбивало с толку. Я сначала подумал, что у тебя своя реализация OpenMP.   -  person Vladimir F    schedule 26.11.2016
comment
@VladimirF: спасибо за изменения. Кроме того, у меня есть собственная реализация. Извините за путаницу, я снова отредактировал свой запрос.   -  person krishtof    schedule 29.11.2016
comment
Нет, ваша реализация будет реализацией самого OpenMP, поэтому у вас нет своей реализации OpenMP. В этом суть.   -  person Vladimir F    schedule 29.11.2016


Ответы (1)


Я думаю, вы путаете микробенчмарк и профайлер. Микротест (например, EPCC) измеряет производительность определенного набора небольших фрагментов кода (в случае теста EPCC OpenMP — производительность конструкций OpenMP). Профилировщик измеряет производительность любого кода и показывает, на что потрачено время.

Поэтому для измерения поведения вашего кода вам нужен профилировщик (такой как Intel Vtune, набор инструментов HPC, Tau,...), а не микробенчмарк.

[FWIW я работаю на Intel, но не непосредственно на Vtune]

person Jim Cownie    schedule 25.11.2016
comment
@JimCrownie: я уже использую усилитель VTune. Но этот профилировщик не говорит мне, сколько накладных расходов вносят конструкции OpenMP (например, #pragma omp parallel). Итак, мне просто нужно рассчитать точное время накладных расходов, связанных с каждой конструкцией в моем коде C++ OpenMP. - person krishtof; 29.11.2016
comment
Это не тривиально. Вы можете просмотреть время, затрачиваемое внутри среды выполнения OpenMP (используя любой понравившийся вам профилировщик), но это покажет дисбаланс нагрузки как накладные расходы в среде выполнения (а это не так). Также существуют затраты на компиляцию для OpenMP (дополнительные косвенные обращения при доступе к общим данным), которые там не будут видны. - person Jim Cownie; 01.12.2016