Si tengo una placa multiprocesador que tiene cache-coherentnon-uniform memory access (NUMA), es decir, "northbridges" separada con memoria RAM para cada procesador, ¿sabe algún compilador cómo distribuir automáticamente los datos entre los diferentes sistemas de memoria de manera que los procesos que trabajan en hilos locales se recuperen principalmente sus datos de la RAM asociada con el procesador en el que se está ejecutando el subproceso?¿Gcc, icc o el compilador C/C++ de Microsoft admiten o saben algo sobre NUMA?
Tengo una configuración donde 1 GB está conectado al procesador 0, 1 GB está conectado al procesador 1, et c. hasta 4 procesadores. En el coherent memory space, la memoria física de la RAM en el primer procesador es de 0 a 1 GB-1. Para el segundo procesador, es de 1 GB a 2 GB-1, y así sucesivamente.
¿Algún compilador, o quizás malloc
específicamente, asocia la memoria nueva asignada por un proceso en un núcleo específico a la RAM física asociada con ese núcleo?
Fuera de interés, ¿quién es el fabricante de la placa? –
He planteado la pregunta de esta manera, pero mi problema original tiene que ver con un número de núcleos en 1 dado y el costo de hacer un acceso de memoria para núcleos en diferentes partes del chip para diferentes regiones de memoria. –