Articulo de referencia

Memoria externa paralela

Modelo PEM En informática, un modelo de memoria externa paralela (PEM) es una máquina abstracta de memoria externa con capacidad de caché . [ 1 ] Es la analogía en computación p...

Modelo PEM

En informática, un modelo de memoria externa paralela (PEM) es una máquina abstracta de memoria externa con capacidad de caché . [ 1 ] Es la analogía en computación paralela del modelo de memoria externa (EM) de un solo procesador. De manera similar, es la analogía con capacidad de caché de la máquina de acceso aleatorio paralela (PRAM). El modelo PEM consta de varios procesadores, junto con sus respectivas cachés privadas y una memoria principal compartida.

Modelo

Definición

El modelo PEM [ 1 ] es una combinación del modelo EM y el modelo PRAM. El modelo PEM es un modelo de cálculo que consta dePAG{\displaystyle P}procesadores y una jerarquía de memoria de dos niveles . Esta jerarquía de memoria consta de una gran memoria externa (memoria principal) de tamañonorte{\displaystyle N}yPAG{\displaystyle P}pequeñas memorias internas (cachés) . Los procesadores comparten la memoria principal. Cada caché es exclusiva de un solo procesador. Un procesador no puede acceder a la caché de otro. Las cachés tienen un tamañoMETRO{\displaystyle M}que se divide en bloques de tamañoB{\displaystyle B}Los procesadores solo pueden realizar operaciones en los datos que se encuentran en su caché. Los datos se pueden transferir entre la memoria principal y la caché en bloques de tamañoB{\displaystyle B}.

complejidad de E/S

La medida de complejidad del modelo PEM es la complejidad de E/S, [ 1 ] que determina el número de transferencias de bloques paralelos entre la memoria principal y la caché. Durante una transferencia de bloque paralela, cada procesador puede transferir un bloque. Por lo tanto, siPAG{\displaystyle P}Los procesadores cargan en paralelo un bloque de datos de tamañoB{\displaystyle B}desde la memoria principal a sus cachés, se considera como una complejidad de E/S deO(1){\displaystyle O(1)}noO(PAG){\displaystyle O(P)}Un programa en el modelo PEM debe minimizar la transferencia de datos entre la memoria principal y las cachés, y operar en la medida de lo posible con los datos almacenados en las cachés.

Conflictos de lectura/escritura

En el modelo PEM, no existe una red de comunicación directa entre los procesadores P. Los procesadores deben comunicarse indirectamente a través de la memoria principal. Si varios procesadores intentan acceder al mismo bloque en la memoria principal simultáneamente, se producen conflictos de lectura/escritura [ 1 ] . Al igual que en el modelo PRAM, se consideran tres variaciones diferentes de este problema:

  • Lectura y escritura concurrentes (CRCW): El mismo bloque en la memoria principal puede ser leído y escrito por varios procesadores simultáneamente.
  • Lectura y escritura exclusivas concurrentes (CREW): Varios procesadores pueden leer simultáneamente el mismo bloque de memoria principal. Solo un procesador puede escribir en un bloque a la vez.
  • Lectura y escritura exclusivas (EREW): El mismo bloque en la memoria principal no puede ser leído ni escrito por varios procesadores simultáneamente. Solo un procesador puede acceder a un bloque a la vez.

Los siguientes dos algoritmos [ 1 ] resuelven el problema CREW y EREW siPAGB{\displaystyle P\leq B}Los procesadores escriben en el mismo bloque simultáneamente. Un primer enfoque es serializar las operaciones de escritura. Solo un procesador después del otro escribe en el bloque. Esto da como resultado un total dePAG{\displaystyle P}transferencias de bloques en paralelo. Se necesita un segundo enfoqueO(registro(PAG)){\displaystyle O(\log(P))}transferencias de bloques en paralelo y un bloque adicional para cada procesador. La idea principal es programar las operaciones de escritura en forma de árbol binario y combinar gradualmente los datos en un solo bloque. En la primera rondaPAG{\displaystyle P}Los procesadores combinan sus bloques enPAG/2{\displaystyle P/2}bloques. EntoncesPAG/2{\displaystyle P/2}Los procesadores combinan losPAG/2{\displaystyle P/2}bloques enPAG/4{\displaystyle P/4}Este procedimiento se continúa hasta que todos los datos se combinen en un solo bloque.

Comparación con otros modelos

Ejemplos

Particionamiento multidireccional

DejarMETRO={metro1,...,metrod1}{\displaystyle M=\{m_{1},...,m_{d-1}\}}Sea A un vector de d-1 pivotes ordenados en orden creciente. Sea A un conjunto no ordenado de N elementos. Una partición de d vías [ 1 ] de A es un conjuntoΠ={A1,...,Ad}{\displaystyle \Pi =\{A_{1},...,A_{d}\}}, dóndei=1dAi=A{\displaystyle \cup _{i=1}^{d}A_{i}=A}yAiAj={\displaystyle A_{i}\cap A_{j}=\emptyset }para1i<jd{\displaystyle 1\leq i<j\leq d}.Ai{\displaystyle A_{i}}se llama el i-ésimo cubo. El número de elementos enAi{\displaystyle A_{i}}es mayor quemetroi1{\displaystyle m_{i-1}}y más pequeño quemetroi2{\displaystyle m_{i}^{2}}. En el siguiente algoritmo [ 1 ] la entrada se divide en segmentos contiguos de tamaño N/PS1,...,SPAG{\displaystyle S_{1},...,S_{P}}en la memoria principal. El procesador i trabaja principalmente en el segmentoSi{\displaystyle S_{i}}El algoritmo de partición multiway ( PEM_DIST_SORT[ 1 ] ) utiliza un algoritmo de suma de prefijos PEM [ 1 ] para calcular la suma de prefijos con el óptimoO(nortePAGB+registroPAG){\displaystyle O\left({\frac {N}{PB}}+\log P\right)}Complejidad de E/S. Este algoritmo simula un algoritmo óptimo de suma de prefijos PRAM.

// Calcula en paralelo una partición de d vías en los segmentos de datos.Si{\displaystyle S_{i}}Para cada procesador i en paralelo, lea el vector de pivotes M en la caché. DividirSi{\displaystyle S_{i}}en d cubos y deje que vectorMETROi={j1i,...,jdi}{\displaystyle M_{i}=\{j_{1}^{i},...,j_{d}^{i}\}}sea ​​el número de artículos en cada cubo. fin para Ejecutar la suma de prefijos PEM en el conjunto de vectores{METRO1,...,METROPAG}{\displaystyle \{M_{1},...,M_{P}\}}simultáneamente. // Utilizar el vector de suma de prefijos para calcular la partición final. para cada procesador i en paralelo hacer Escribir elementosSi{\displaystyle S_{i}}en ubicaciones de memoria desplazadas adecuadamente porMETROi1{\displaystyle M_{i-1}}yMETROi{\displaystyle M_{i}}. fin para Utilizando las sumas de prefijo almacenadas enMETROPAG{\displaystyle M_{P}}El último procesador, P, calcula el vector B de tamaños de cubetas y lo devuelve.

Si el vector ded=O(METROB){\displaystyle d=O\left({\frac {M}{B}}\right)}Los pivotes M y el conjunto de entrada A se encuentran en memoria contigua, entonces el problema de partición de d vías se puede resolver en el modelo PEM conO(nortePAGB+dB>registro(PAG)+dregistro(B)){\displaystyle O\left({\frac {N}{PB}}+\left\lceil {\frac {d}{B}}\right\rceil >\log(P)+d\log(B)\right)}Complejidad de E/S. El contenido de los cubos finales debe ubicarse en memoria contigua.

Selección

El problema de selección consiste en encontrar el k-ésimo elemento más pequeño en una lista no ordenada A de tamaño N. El siguiente código [ 1 ] utiliza PRAMSORTun algoritmo de ordenación óptima PRAM que se ejecuta enO(registronorte){\displaystyle O(\log N)}y SELECT, que es un algoritmo de selección de procesador único óptimo para la caché.

sinortePAG{\displaystyle N\leq P}entoncesPRAMSORT(A,PAG){\displaystyle {\texttt {PRAMSORT}}(A,P)}devolverA[k]{\displaystyle A[k]}fin si //Calcular la mediana de cadaSi{\displaystyle S_{i}}para cada procesador i en paralelo hacermetroi=SELECCIONAR(Si,norte2PAG){\displaystyle m_{i}={\texttt {SELECT}}(S_{i},{\frac {N}{2P}})}fin para // Ordenar medianas PRAMSORT({metro1,,metro2},PAG){\displaystyle {\texttt {PRAMSORT}}(\lbrace m_{1},\dots ,m_{2}\rbrace ,P)} // Partición en torno a la mediana de las medianas t=PEMPARTICIÓN(A,metroPAG/2,PAG){\displaystyle t={\texttt {PEMPARTICIÓN}}(A,m_{P/2},P)}sikt{\displaystyle k\leq t}luego regresarPEMSELECT(A[1:t],PAG,k){\displaystyle {\texttt {PEMSELECT}}(A[1:t],P,k)}de lo contrario, regresaPEMSELECT(A[t+1:norte],PAG,kt){\displaystyle {\texttt {PEMSELECT}}(A[t+1:N],P,kt)}fin si

Bajo el supuesto de que la entrada se almacena en memoria contigua, PEMSELECTtiene una complejidad de E/S de:

O(nortePAGB+registro(PAGB)registro(nortePAG)){\displaystyle O\left({\frac {N}{PB}}+\log(PB)\cdot \log({\frac {N}{P}})\right)}

Clasificación por distribución

El algoritmo de ordenación por distribución divide una lista de entrada A de tamaño N en d grupos disjuntos de tamaño similar. Cada grupo se ordena recursivamente y los resultados se combinan en una lista completamente ordenada.

SiPAG=1{\displaystyle P=1}La tarea se delega a un algoritmo de ordenación de un solo procesador que optimiza el uso de la caché.

En caso contrario, se utiliza el siguiente algoritmo [ 1 ] :

// Muestra4norted{\displaystyle {\tfrac {4N}{\sqrt {d}}}}elementos de A para cada procesador i en paralelo hacer siMETRO<|Si|{\displaystyle M<|S_{i}|}entoncesd=METRO/B{\displaystyle d=M/B} CargaSi{\displaystyle S_{i}}en páginas de tamaño M y ordenar las páginas individualmente en caso contrariod=|Si|{\displaystyle d=|S_{i}|} Cargar y ordenarSi{\displaystyle S_{i}}como final de una sola página si elige cadad/4{\displaystyle {\sqrt {d}}/4}El elemento 'enésimo de cada página de memoria ordenada en un vector contiguoRi{\displaystyle R^{i}}de muestras finalizan paraen paralelo hacer Combinar vectoresR1RPAG{\displaystyle R^{1}\dots R^{P}}en un único vector contiguoR{\displaystyle {\mathcal {R}}} Hacerd{\displaystyle {\sqrt {d}}}copias deR{\displaystyle {\mathcal {R}}}:R1Rd{\displaystyle {\mathcal {R}}_{1}\dots {\mathcal {R}}_{\sqrt {d}}}fin hacer // Encontrard{\displaystyle {\sqrt {d}}}pivotesMETRO[j]{\displaystyle {\mathcal {M}}[j]}paraj=1{\displaystyle j=1}ad{\displaystyle {\sqrt {d}}}en paralelo hacerMETRO[j]=PEMSELECT(Ri,PAGd,j4norted){\displaystyle {\mathcal {M}}[j]={\texttt {PEMSELECT}}({\mathcal {R}}_{i},{\tfrac {P}{\sqrt {d}}},{\tfrac {j\cdot 4N}{d}})}fin para Empaqueta los pivotes en una matriz contiguaMETRO{\displaystyle {\mathcal {M}}} // La partición A se divide en cubos alrededor de los pivotes.B{\displaystyle {\mathcal {B}}}B=PEMMULIPARTICIÓN(A[1:norte],METRO,d,PAG){\displaystyle {\mathcal {B}}={\texttt {PEMMULTIPARTITION}}(A[1:N],{\mathcal {M}},{\sqrt {d}},P)} // Ordenar recursivamente los cubos paraj=1{\displaystyle j=1}ad+1{\displaystyle {\sqrt {d}}+1}en paralelo, realizar llamadas recursivasPEMDISTSORT{\displaystyle {\texttt {PEMDISTSORT}}}en el cubo j de tamañoB[j]{\displaystyle {\mathcal {B}}[j]} usandoO(B[j]norte/PAG){\displaystyle O\left(\left\lceil {\tfrac {{\mathcal {B}}[j]}{N/P}}\right\rceil \right)}procesadores responsables de los elementos en el cubo j fin para

La complejidad de E/S PEMDISTSORTes:

O(nortePAGB(registrodPAG+registroMETRO/BnortePAGB)+F(norte,PAG,d)registrodPAG){\displaystyle O\left(\left\lceil {\frac {N}{PB}}\right\rceil \left(\log _{d}P+\log _{M/B}{\frac {N}{PB}}\right)+f(N,P,d)\cdot \log _{d}P\right)}

dónde

F(norte,PAG,d)=O(registroPAGBdregistronortePAG+dBregistroPAG+dregistroB){\displaystyle f(N,P,d)=O\left(\log {\frac {PB}{\sqrt {d}}}\log {\frac {N}{P}}+\left\lceil {\frac {\sqrt {d}}{B}}\log P+{\sqrt {d}}\log B\right\rceil \right)}

Si se elige el número de procesadores queF(norte,PAG,d)=O(nortePAGB){\displaystyle f(N,P,d)=O\left(\left\lceil {\tfrac {N}{PB}}\right\rceil \right)}yMETRO<BO(1){\displaystyle M<B^{O(1)}}La complejidad de E/S es entonces:

O(nortePAGBregistroMETRO/BnorteB){\displaystyle O\left({\frac {N}{PB}}\log _{M/B}{\frac {N}{B}}\right)}

Otros algoritmos PEM

DóndeclasificarPAG(norte){\displaystyle {\textrm {sort}}_{P}(N)}es el tiempo que se tarda en clasificar N elementos con P procesadores en el modelo PEM.

Véase también

Referencias

  1. 1 2 3 4 5 6 7 8 9 10 11 12 Arge, Lars; Goodrich, Michael T.; Nelson, Michael; Sitchinava, Nodari (2008). «Algoritmos paralelos fundamentales para multiprocesadores de chips con caché privada». Actas del vigésimo simposio anual sobre paralelismo en algoritmos y arquitecturas . Nueva York, Nueva York, EE. UU.: ACM Press. págs. 197–206 . doi : 10.1145/1378533.1378573 . ISBN  9781595939739. S2CID 11067041 . 
  2. 1 2 3 4 Arge, Lars; Goodrich, Michael T.; Sitchinava, Nodari (2010). "Algoritmos gráficos de memoria externa paralela". Simposio Internacional IEEE de Procesamiento Paralelo y Distribuido (IPDPS) de 2010. IEEE. págs. 1–11 . doi : 10.1109/ipdps.2010.5470440 . ISBN  9781424464425. S2CID 587572 .