¿Qué es la "fusión de memoria"?

16

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.

sai kiran grandhi
fuente
Paralelismo de nivel de memoria (MLP) es la capacidad de realizar múltiples transacciones de memoria a la vez. En muchas arquitecturas, esto se manifiesta como la capacidad de realizar tanto una operación de lectura como de escritura a la vez, aunque también existe comúnmente como la capacidad de realizar múltiples lecturas a la vez. Es raro realizar múltiples operaciones de escritura a la vez, debido al riesgo de posibles conflictos (tratando de escribir dos valores diferentes en la misma ubicación). Tenga en cuenta que esto no es lo mismo que las operaciones de memoria vectorizada, como leer 4 valores de 8 bits separados pero contiguos en una sola lectura de 32 bits.
sai kiran grandhi

Respuestas:

11

"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:

  • La memoria generalmente se recupera en bloques grandes de la RAM.
  • Algunas unidades de procesamiento intentarán predecir futuros accesos de memoria y caché por delante, mientras que aún procesan partes más antiguas de la memoria.
  • La memoria se almacena en caché en una jerarquía de cachés sucesivamente más grandes pero más lentos.

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.

ingrese la descripción de la imagen aquí

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.

4 hilos fusionados en memoria y 4 hilos con una zancada de 2

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:

Ensalada Realz
fuente
2
Varios subprocesos también pueden acceder al mismo elemento de datos (no solo un elemento dentro del mismo fragmento más grande), algo similar a (pero más genérico que) las operaciones SPLAT en arquitecturas SIMD. Como procesadores de rendimiento tolerantes a la latencia, las GPU pueden permitirse aumentar la latencia de acceso cuando esto permita un mayor ancho de banda efectivo.
Paul A. Clayton
El enlace dado está roto.
Daniel Soutar
3

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:

4 bloques asignados

Más tarde, uno de ellos es liberado:

Ahora 1 bloque libre

Y luego otro es liberado:

Ahora 2 bloques libres adyacentes

Ahora, ¿por qué tener dos bloques libres adyacentes? Fusionándolos:

Fusionando los bloques liberados, ahora 2 bloques asignados, 1 liberado

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:

Ensalada Realz
fuente
Creo que esta respuesta no se ajusta a lo que quiero. La fusión de la memoria es leer bloques contiguos de memoria como proporcionó en otra respuesta. Si es posible, elimine esta respuesta y el enlace en cuestión que editó
sai kiran grandhi
@saikirangrandhi Guardaré la respuesta como referencia. Puede revisar / deshacer la edición de su pregunta como lo desee; puedes presionar "editar" debajo de la pregunta.
Realz Slaw