Мне нужны некоторые советы о том, как добиться привязок ядра и памяти, которые я имею в виду, используя Open MPI 4.0.1.Это для одного вычислительного узла с 8 узлами NUMA и 64 ядрами, а именно 2x AMD Epyc 7551, SMT отключен.
Ядра в этой системе пронумерованы по следующей схеме:
Теперь я имею в виду 3 разные политики привязки, назовем их «закрыть», «распространить» и «разбросать».Я приведу 3 примера для каждого из 6,16 и 48 потоков, чтобы прояснить мою идею (надеюсь).Но мне нужны методы, которые работают с произвольным числом потоков MPI от 1 до 64.
1: «закрыть» Идея в том, чтобы держать потоки как можно ближе, то есть минимизировать ядро.задержка.
2: «спред» с идеей использованиявсей доступной пропускной способности памяти
3: "scatter " Идея заключается в том, что каждый узел NUMA снова делится на 2 группы по 4 ядра, где каждая группа имеет свой собственный кэш L3.По сравнению с «распространением» эта политика должна максимизировать объем кэша L3, доступный для каждого потока.
Какие аргументы мне нужно передать mpirun для достижения каждой из этих 3 политик?Или любой другой метод, если это не может быть достигнуто без помощи, например, машинных файлов.