Como usted menciona específicamente muchos hilos, supongo que tiene al menos un sistema de enchufes múltiples. Normalmente, los bancos de memoria están asociados a sockets de procesador. Es decir, un procesador está "más cercano" a sus propios bancos de memoria y necesita comunicarse con los demás controladores de memorandos del procesador para acceder a los datos de otros bancos. (Procesador aquí significa lo físico en el zócalo)
Al asignar datos, normalmente se usa una política de primera escritura para determinar en qué bancos de memoria se asignarán sus datos, lo que significa que puede acceder a él más rápido que el otro procesadores.
Por lo tanto, al menos para múltiples procesadores (no solo para varios núcleos) debería haber una mejora en el rendimiento desde la asignación de una copia al menos para cada procesador. Asegúrese de asignar/copiar los datos con cada procesador/hilo y no desde un hilo maestro (para explotar la política de primera escritura). También debe asegurarse de que los hilos no migrarán entre los procesadores, ya que es probable que pierda la conexión cercana a su memoria.
No estoy seguro de cómo copiar los datos de cada hilo en un único procesador podría afectar el rendimiento, pero creo que no copiar podría mejorar la capacidad de compartir los contenidos de los cachés de nivel superior, que se comparten entre los núcleos.
En cualquier caso, comparta y decida en base a las mediciones reales.
¿La máquina es NUMA? – Mysticial
La pregunta obvia es: ¿esta memoria es constante mientras se lee o está sujeta a cambios? –
@Mysticial, uno esperaría que todas las arquitecturas manejen de manera eficiente los datos de lectura múltiple, no solo un sistema NUMA. –