Nicolás Wolovick, $Date: 2012-04-25 00:42:45 -0300 (Wed, 25 Apr 2012) $, $Revision: 3439 $
Unidades de procesamiento independientes.
Veremos el impacto en la performance y sus límites.
donde, T1 tiempo secuencial, Tp tiempo paralelo para p procesadores.
Escalado perfecto: "N procesadores, tienen que ir N veces más rápido".
Típico gráfico balístico
(Hennessy, Patterson, CAAQA4, p.260)
(Hennessy, Patterson, CAAQA4, p.261)
Siempre necesitaremos buena preformance en 1 hilo!
(Wikipedia, Amdahl's Law)
0.25%
(Hennessy, Patterson, CAAQA4, p.202)
AGGGGGGGGGGGG!
La ley de Amdahl's pone límites muy fuertes en la paralelización.
Supone que el data-set aumenta linelmente con la cantidad de procesadores.
Although simply scaling the data size with processor count is rarely appropriate, assuming a fixed problem size for a much larger processor count is often inappropriate as well, since it is likely that users given a much larger multiprocessor would opt to run a larger or more detailed version of an application.
(Hennessy, Patterson, CAAQA4, p.259)
Even in server workloads, where there’s naturally a lot of independent processing, single-threaded latency still matters.
Urs Hölzle, Brawny cores still beat wimpy cores, most of the time, Google, 2010.
So why doesn’t everyone want wimpy-core systems? Because in many corners of the real world, they’re prohibited by law—Amdahl’s law. Even though many Internet services benefit from seemingly unbounded request- and data-level parallelism, such systems aren’t above the law. As the number of parallel threads increases, reducing serialization and communication overheads can become increasingly difficult. In a limit case, the amount of inherently serial work performed on behalf of a user request by slow single-threaded cores will dominate overall execution time.
Extraer paralelismo del programa que se está ejecutando tiene sus límites.
Cómo aprovechar toda la infraestructura de:
Un hilo es un mecanismo para marcar código que se puede ejecutar en paralelo.
Idea: si las unidades de ejecución están libres, hacer un interleaving de otro stream independiente de instrucciones.
(Glenn Hinton, Intel Fellow, Nehalem Lead Architect, Key Nehalem Choices, 2010.)
(Glenn Hinton, Intel Fellow, Nehalem Lead Architect, Key Nehalem Choices, 2010.)
(Wikipedia, Intel Processor Roadmap.)
Agner Fog, How good is hyperthreading?, blog entry, 2009.
Alguna vez nos dieron para probar un Intel® Xeon® Processor X7560 (8 cores, 16 threads), pero con Hyperthreading deshabilitado (citation needed).
(Hennessy, Patterson, CAAQA4, p.178)
(Hennessy, Patterson, CAAQA4, p.174)
Cada vez más complejo.
Más información:
Uniform memory access (UMA).
-- acá es donde CAAQA4 se queda viejo (sadface) --
Non-uniform memory access (NUMA).
(Frequently Asked Questions: NUMA, SMP and AMDs Direct Connect Architecture)
1 P1: write(X,d)
2 ...
3 P1: read(X) = d
Eventualmente se lee el valor nuevo. No se puede leer siempre un valor viejo.
1 P1: write(X,d)
2 ...
3 ... (suficientemente separados) ...
4 ...
5 P2: read(X) = d
1 P1: write(X,d)
2 ...
3 P2: write(X,e)
4 ...
5 P3: read(X) = e
Acá no hay un "eventualmente".
¿Cuándo se ve en los otros procesadores una escritura?
¿Cuán consistente es la visión de la memoria?
1 P1: A = 0 P2: B = 0
2 ... ...
3 A = 1 B = 1
4 L1: if (B == 0) ... L2: if (A == 0) ...
Dependiendo el modelo puede pasar o no que ambos lean 0
!
(el algoritmo de Dekker puede no funcionar)
Con este modelo no podemos poner el A = 1
en un write-buffer y continuar con la lectura.
Reduce la performance!
Orden sequencial, perserva el órden de read versus write, etc.:
R->W
, R->R
, W->R
, W->W
.
W->R
.W->W
.R->W
, R->R
.X86
implementa algo asi como total store ordering (TSO).
Modelos definidos en prosa y con ejemplos.
Difícil de formalizarlos, similar a TSO.
Se lo denomina X86-TSO
.
Una formalización:
Para forzar consistencia secuencial. Flush de memoria (load&stores), stores y loads.
MFENCE
, SFENCE
y LFENCE
.
_mm_mfence()
, _mm_sfence()
, _mm_lfence()
Pensar en los mensajes que se transmiten en la red:
Gran impacto en la performance.
lstopo
: lista la topología de memoria.numactl
: memory policies for NUMA system.Table of Contents | t |
---|---|
Exposé | ESC |
Full screen slides | e |
Presenter View | p |
Source Files | s |
Slide Numbers | n |
Toggle screen blanking | b |
Show/hide slide context | c |
Notes | 2 |
Help | h |