У меня есть несколько небольших общих вычислительных рабочих станций, используемых для исследовательской работы с очень большими вычислительными нагрузками, и я пытаюсь максимизировать производительность вычислений при использовании в кластере SLURM. Каждая из этих машин оснащена процессором Intel(R) Core(TM) i9-12900K 12-го поколения с асимметричными ядрами, 8 ядрами производительности (P-Cores), поддерживающими Hyperthread, и 8 ядрами эффективности (E-Cores), которые медленнее.
Я хочу ограничить очередь/раздел/ таким образом, чтобы в очереди SLURM могли использоваться только логические ядра Cpu0–Cpu16, поскольку все эти ядра имеют одинаковую скорость, когда они работают без потоков и когда все они используют гиперпотоки. Смешение одного медленного ядра снижает производительность параллельного выполнения.
Когда я устанавливаю NodeName=node0 CPUs=16 RealMemory=64000 State=UNKNOWN в файле slurm.conf, физические ядра равны 0, 2,4,6,8,10,12,14,16 + некоторые гиперпотоки 1–7 + E-Cores 17–24 отображаются как используемые (через верхнюю часть) при выполнении 16 основных заданий. Я хочу, чтобы были доступны только ядра 0–16. Есть ли где-нибудь настройка сходства для управления этим?
Я думаю, что это возможно с помощью numactl --cpunodebind, но я не смог в этом разобраться.
Было бы неплохо, но не обязательно, если бы я мог добавить 8 более медленных E-ядер в другой раздел/очередь, чтобы их можно было использовать, но никогда не смешивая P-Core и E. -Cores.
Вывод сверху во время двух 8-ядерных заданий SLURM
Подробнее здесь: https://stackoverflow.com/questions/784 ... cific-node