Связывание процессов MPI на втором сокете ЦП с помощью MVAPICH2.2
Я использую вычислительные узлы NUMA, где сеть (Mellanox InfiniBand HCA) подключена ко второму сокету процессора (и узлу NUMA). Существует ли какая-либо переменная среды, которая просто связывает все процессы MPI со вторым сокетом ЦП с помощью MVAPICH2.2?
MV2_CPU_BINDING_LEVEL=socket MV2_CPU_BINDING_POLICY=bunch
Комбинация не работает, так как она начинает перегруппировку процессов на первом сокете процессора.
Я обычно заканчиваю тем, что использую что-то вроде: -genv MV2_CPU_MAPPING 10:11:12:13:14:15:16:17:18:19:30:31:32:33:34:35:36:37:38:39
(используйте все SMT второго 10-ядерного сокета процессора), но это некрасиво и зависит от количества ядер.
1 ответ
Это не переменная среды, но если вы можете изменить /etc/default/grub
в ваших системах вы можете изолировать ядра пакета 0 от планировщика. Пример для ваших 10-ядерных (гиперпоточных) процессоров:
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT isolcpus=0-19"