У меня есть матрица, распределенная по четырем локальным ячейкам памяти NUMA Теперь я хочу открыть 4 потока, каждый на ЦП, соответствующий отдельному NUMA-узлу, чтобы каждый поток мог как можно быстрее получить доступ к своей части матрицы. OpenMP имеет опцию «proc_bind (spread)», но он размещает потоки на том же NUMA-узле, но на сильно разнесенных процессорах.
Как заставить потоки связываться с различными узлами NUMA?
Или, если это невозможно: когда я использую все ядра на всех узлах (всего 256 потоков), я знаю, как получить идентификатор узла NUMA, но я не могу контролировать, какой поток получает какие индексы, например. в цикле. Как я мог эффективно распределить свою рабочую нагрузку в соответствии с конфигурацией NUMA?