Предполагая использовать реализацию OpenMPI, чтобы сделать поэтому --bind-to none передается в mpirun (после того, как вы позаботились об отключении любых конфликтов сходства, которые могут возникнуть из-за SLURM или других сред выполнения). Это должно предоставить процессорный набор каждому потоку процесса MPI, где все ядра ЦП включены.
Затем в коде приложения выполняется вызов sched_setaffinity(), где каждый процесс MPI вычисляет свое ядро ЦП. .
Аффинити установлено следующим образом:
Код: Выделить всё
CPU_ZERO(&cpuset);
CPU_SET(cpu, &cpuset);
Проверка не удалась, что означает, что планировщик поместил каждый поток процесса MPI в другое ядро ЦП, а не то (ЕДИНСТВЕННОЕ), присутствующее в процессорном наборе, назначенном через sched_setaffinity.
Как так?
Подробнее здесь: https://stackoverflow.com/questions/791 ... -not-in-cp