Вопрос

Как мне запустить два теста так, чтобы:

  • Они оба исполняются одновременно
  • Оба теста имеют половину своих потоков на каждом сокете.
  • Нет двух потоков с одним и тем же ядром.

Фон

У меня есть две программы: бенчмарк, написанный на Fortran, и бенчмарк, написанный на C. Они оба реализуют библиотеку OpenMP и настроены на.

В настоящее время я пытаюсь распределить потоки обоих процессов по нескольким сокетам, не позволяя двум потокам совместно использовать одно и то же ядро. OpenMP позволяет равномерно распределять потоки по нескольким сокетам, используя переменную среды OMP_PROC_BIND=spread . Однако при одновременном выполнении обеих программ я получаю оба теста, использующих одни и те же ядра.

Я запускаю эти тесты на сервере с двумя 12-ядерными процессорами Haswell-E, и у меня установлены тесты для создания 12 потоков в одной части, так что нет недостатка в ядрах. В настоящее время я использую CentOS 7.3.1611.

Примечание

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

1 ответ1

0

Во-первых: получите макет вашего процессора из /proc /cpuinfo, который будет выглядеть примерно так (это на 2-сокетном, 6-ядерном, урезанный список):

> cat /proc/cpuinfo |grep -P 'processor|physical id|core id'
processor : 0
physical id : 1
core id   : 0
processor : 1
physical id : 0
core id   : 0
processor : 2
physical id : 1
core id   : 1
processor : 3
physical id : 0
core id   : 1

физический идентификатор будет вашим сокетом, обратите внимание, в моем случае переключение основного идентификатора между сокетами.

используйте 'schedtool', чтобы установить сродство 1 группы ко всем физическим идентификаторам. Так что в моем случае, так как четы и шансы находятся на отдельных физических процессорах (сокетах), я бы использовал:

schedtool -a 0,2,4,6,8,10 -e run_group1 &
schedtool -a 1,3,5,7,9,11 -e run_group2 &

где run_group1 запускает все ваши потоки на одном ядре, а run_group2 запускает остальные. (посмотрите на 'man schedtool' (в разделе 8 для большего количества вариантов. Я поставил их обоих в фоновом режиме, чтобы обе группы работали одновременно.

Возможно, вам нужно быть пользователем root, чтобы установить сходство - не уверен.

Это решает ваш вопрос или я что-то не так понял?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .