Llegué a saber que la unidad de procesamiento gráfico tiene algo llamado fusión de memoria. Al leerlo, no tenía claro el tema. ¿Está relacionado de alguna manera con el paralelismo del nivel de memoria?
He buscado en Google pero no pude obtener una respuesta satisfactoria.
Sería útil si alguien da una explicación más completa y fácil de entender.
terminology
reference-request
computer-architecture
memory-management
sai kiran grandhi
fuente
fuente
Respuestas:
"Coalescente" también puede referirse a patrones de acceso de memoria coalescente . En este uso, la fusión se utiliza para asegurarse de que los subprocesos se ejecutan simultáneamente, intente acceder a la memoria que está cerca. Esto generalmente se debe a que:
Por lo tanto, es importante hacer programas que puedan usar patrones de memoria predecibles. Es aún más importante con un programa enhebrado, para que las solicitudes de memoria no salten por completo; de lo contrario, la unidad de procesamiento estará esperando que se llenen las solicitudes de memoria.
Diagramas inspirados en la Introducción a la programación en paralelo: Lección 2 Hardware de GPU y patrones de comunicación en paralelo :
Abajo: cuatro hilos, con acceso de memoria uniforme. El rectángulo punteado negro representa una solicitud de memoria de 4 palabras.
Los accesos a la memoria están cerca y se pueden recuperar de una vez / bloque (o el menor número de solicitudes).
Sin embargo, si aumentamos el " paso " del acceso entre los hilos, requerirá muchos más accesos a la memoria. Abajo: cuatro hilos más, con una zancada de dos.
Aquí puede ver que estos 4 subprocesos requieren 2 solicitudes de bloqueo de memoria. Cuanto más pequeño sea el paso, mejor. Cuanto más amplio sea el paso, más solicitudes serán potencialmente necesarias.
Por supuesto, peor que un gran paso de memoria es un patrón de acceso aleatorio a la memoria. Estos serán casi imposibles de canalizar, almacenar en caché o predecir.
Fuentes TikZ:
fuente
Creo que veo dos usos de la palabra "fusionarse" en la red, ambos relacionados con la memoria. Uno es fusionar asignaciones de memoria liberada , que es lo que se menciona en la página de Wikipedia vinculada en la pregunta.
Coalescentes asignaciones de memoria liberada
Al asignar memoria, a veces el administrador de memoria puede tener una situación en la que hay dos bloques de memoria adyacentes que se liberan. La combinación de estos los convertiría en un único bloque de memoria liberado; esto se denomina "fusión". Ejemplo:
Comenzando con 4 bloques asignados:
Más tarde, uno de ellos es liberado:
Y luego otro es liberado:
Ahora, ¿por qué tener dos bloques libres adyacentes? Fusionándolos:
La fusión puede ocurrir tan pronto como sea posible, o, por ejemplo, en un recolector de basura, cuando se ejecuta el recolector.
Fuentes TikZ:
fuente