Вопрос
Как мне запустить два теста так, чтобы:
- Они оба исполняются одновременно
- Оба теста имеют половину своих потоков на каждом сокете.
- Нет двух потоков с одним и тем же ядром.
Фон
У меня есть две программы: бенчмарк, написанный на Fortran, и бенчмарк, написанный на C. Они оба реализуют библиотеку OpenMP и настроены на.
В настоящее время я пытаюсь распределить потоки обоих процессов по нескольким сокетам, не позволяя двум потокам совместно использовать одно и то же ядро. OpenMP позволяет равномерно распределять потоки по нескольким сокетам, используя переменную среды OMP_PROC_BIND=spread
. Однако при одновременном выполнении обеих программ я получаю оба теста, использующих одни и те же ядра.
Я запускаю эти тесты на сервере с двумя 12-ядерными процессорами Haswell-E, и у меня установлены тесты для создания 12 потоков в одной части, так что нет недостатка в ядрах. В настоящее время я использую CentOS 7.3.1611.
Примечание
Я знаю, что это странная конфигурация, однако она необходима для анализа производительности. Большое спасибо заранее всем, кто внес свой вклад в эту тему.