Если у меня есть многопроцессорная плата с cache-coherent неоднородный доступ к памяти ( NUMA ), т.е. отдельный "северные мосты" с отдельной оперативной памятью для каждого процессора, знает ли какой-нибудь компилятор, как автоматически распределять данные по разным системам памяти, чтобы процессы, работающие в локальных потоках, в основном извлечение их данных из ОЗУ, связанного с процессором, на котором работает поток?
У меня есть установка, в которой 1 ГБ подключен к процессору 0, 1 ГБ подключен к процессору 1 и т. д. до 4 процессоров. В когерентном пространстве памяти физическая память для ОЗУ на 1-м процессоре имеет адреса от 0 до 1 ГБ. 1. Для второго процессора это от 1ГБ до 2ГБ-1 и так далее.
Будут ли какие-либо компиляторы или, возможно, malloc
в частности, связывать новую память, выделенную процессом на определенном ядре, с физической оперативной памятью, связанной с этим ядром?