OpenMP – пожалуй, самая распространённая модель параллельного программирования на потоках, на системах с общей памятью. Ценят её за высокоуровневые параллельные конструкции (в сравнении с программированием системных потоков) и поддержку разными производителями компиляторов. Но этот пост не про сам стандарт OpenMP, про него есть много материалов в сети.
Распараллеливают вычисления на OpenMP ради производительности, о чём, собственно, и статья. Точнее, об измерении производительности с помощью Intel VTune Amplifier XE. А именно, как получить информацию о:
- Получении профиля всего OpenMP приложения
- Профиле отдельных параллельных регионов OpenMP (время CPU, горячие функции и т.д.)
- Балансе работы внутри отдельного параллельного региона OpenMP
- Балансе параллельного/последовательного кода
- Уровне гранулярности параллельных задач
- Объектах синхронизации, времени ожидания и передачах управления между потоками