You are on page 1of 16

2

2curso
curso // 2
2 cuatr.
cuatr.
Arquitectura de Computadores
Grado
Grado enen
Ing.Informtica
Ing. Informtica Tema 1

Arquitecturas Paralelas: Clasificacin y


Prestaciones
Lecciones
AC

Leccin 1. Clasificacin del paralelismo implcito en una


aplicacin
Leccin 2. Clasificacin de arquitecturas paralelas
Leccin 3. Evaluacin de prestaciones

2 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega


Objetivos Leccin 1
AC

Conocer las clasificaciones usuales del paralelismo


implcito en una aplicacin. Distinguir entre paralelismo
de tareas y paralelismo de datos.
Distinguir entre dependencias RAW, WAW, WAR.
Distinguir entre thread y proceso.
Relacionar el paralelismo implcito en una aplicacin con
el nivel en el que se hace explcito para que se pueda
utilizar (instruccin, thread, proceso) y con las
arquitecturas paralelas que lo aprovechan.

3 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega


Bibliografa
AC

Fundamental
Seccin 7.1. J. Ortega, M. Anguita, A. Prieto. Arquitectura de
Computadores, Thomson, 2005. ESIIT/C.1 ORT arq
Complementaria
Secciones 3.7.1, 3.7.2. T. Rauber, G. Rnder. Parallel
Programming: for Multicore and Cluster Systems. Springer
2010. Disponible en lnea (biblioteca UGR):
http://dx.doi.org/10.1007/978-3-642-04818-0

4 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega


Criterios de clasificaciones del paralelismo
implcito en una aplicacin
AC

Niveles de
paralelismo implcito
en un cdigo que
resuelve la aplicacin

Clasificacin
del
paralelismo
Paralelismo de
tareas
implcito
Granularidad
paralelismo de
datos

5 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega


Niveles de paralelismo implcito en una
aplicacin
AC
Niveles: Granularidad:
Programas Programa1 Programa2 Grano Grueso

Func1() { Func2() { Func3() {


Funciones ... ... ... Grano
} } } Medio

for ( ){ while( ){
Bucle (bloques) Grano
... ...
} } Medio-Fino

Operaciones * + / Grano Fino

6 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega


Dependencias de datos
AC

Condiciones que se deben cumplir para que el bloque de


cdigo B2 presente dependencia de datos con respecto a B1:
Deben hacer referencia a una misma posicin de memoria M
(variable). B1
B1 aparece en la secuencia de cdigo antes que B2 B2
Tipos de dependencias de datos (de B2 respecto a B1 ):
RAW (Read After Write) o dependencia verdadera
WAW (Write After Write) o dependencia de salida
WAR (Write After Read) o antidependencia
... ... ...
a=b+c a=b+c b=a+1
d=a+c ... ...
... a=d+e a=d+e
... ...
7 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega
Paralelismo implcito en una aplicacin
AC

Paralelismo de tareas (task parallelism o TLP -Task Level Par.)


Se encuentra extrayendo la estructura lgica de funciones de una
aplicacin.
Est relacionado con el paralelismo a nivel de funcin
Paralelismo de datos (data parallelism o DLP-Data Level
Par.)
Se encuentra implcito en las operaciones con estructuras de
datos (vectores y matrices)
Por ejemplo, la operacin vectorial V1=V2+V3 engloba mltiples sumas
de escalares.
Se puede extraer de la representacin matemtica de la
aplicacin.
Est relacionado principalmente con el paralelismo a nivel de
bucle

8 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega


Estructura de funciones lgica de una
aplicacin. Ej.: decodificador JPEG
AC

Imagen
dividida en
bloques de 8x8
pxeles

coseno inversa
Descodificador

Cuantificacin

Transformada
de entropa

Conversin

inversa

a RGB
Secuencia de Secuencia de
Bloques de 8x8 Bloques de 8x8
pxeles pxeles
comprimidos descomprimidos
9 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega
Paralelismo de datos y paralelismo de
tareas en OpenMP (Prcticas 1, 2 y 3)
AC
Func1() {}
Programa Func2() {
#pragma omp parallel for
for (i=0;i<N;i=++){
Func1() Func2() Func3() cdigo para i
}
{ { {
}
... ... ... Func3() {}
} } } Main () {

#pragma omp parallel sections
while( ){ for( ){ { #pragma omp section
... ... Func1();
} } #pragma omp section
Func2();
#pragma omp section
Func3();
}
}
10 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega
Paralelismo implcito (nivel de deteccin),
explcito y arquitecturas paralelas
AC

TLP
(Multicomputador Programa1 Programa2
Multiprocesador, Procesos
Multithread)

Func1() { Func2() { Func3() {


TLP ... ... ...
(Multiprocesador } } }
Thread
Multithread)

DLP (SIMD,
for ( ){ while( ){ IntraInstr.
GPU)
... ...
} }

ILP (segmentadas,
superescalares, VLIW) Instrucciones
* + /
11 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega
Nivel de paralelismo explcito.
Unidades en ejecucin en un computador
AC

Instrucciones
La unidad de control de un core o procesador gestiona la
ejecucin de instrucciones por la unidad de procesamiento
Thread o light process (concepto del SO)
Es la menor unidad de ejecucin que gestiona el SO
Menor secuencia de instrucciones que se pueden ejecutar
en paralelo o concurrentemente
Proceso o process (concepto del SO)
Mayor unidad de ejecucin que gestiona el SO
Un proceso consta de uno o varios thread

12 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega


Nivel de paralelismo explcito.
Threads versus procesos I
AC

Rn Cdigo Cdigo
Rn Heap
Heap Var. globales
R1 Var. globales Pila y estticas
IP
IP y estticas
thread Ficheros
Ficheros
Rn Tablas-

Tablas- Pila pginas
Pila pginas IP
thread
Proceso: comprende el cdigo del programa Un proceso puede constar de mltiples
y todo lo que hace falta para su ejecucin: flujos de control, llamados threads o
Datos en pila, segmentos (variables globales y procesos ligeros. Cada thread tiene:
estticas) y en heap Su propia pila
Contenido de los registros Contenido de los registros, en particular el
Tabla de pginas contador de programa o instruction pointer y
Tabla de ficheros abiertos el puntero de pila o stack pointer
Para comunicar procesos hay que usar Para comunicar threads de un proceso se
llamadas al SO usa la memoria que comparten
13 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega
Nivel de paralelismo explcito.
Threads versus procesos II
AC

Destruccin Conmutacin
de threads en en menor
menor tiempo tiempo

Creacin de Comunicacin
threads en en menor
menor tiempo Menor tiempo
granularidad
para threads

14 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega


Deteccin, utilizacin, implementacin y
extraccin del paralelismo
AC

DETECTABLE a
Programas Funciones Bucle (Bloques) Operaciones
nivel de
IntraInstr.
UTILIZADO Instrucciones
(explcito) a nivel
de threads
Procesos
Paralelismo

SIMD

IMPLEMENTADO ILP
por arquitecturas Multithread
(aprovechado) Multiprocesador
Multicomputador

EXTRAIDO Arquitectura
por Herramienta de programacin
Implcito-> Explcito
Usuario - Programador
15 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega
Para ampliar
AC

Pginas Web:
http://en.wikipedia.org/wiki/Instruction-level_parallelism
http://en.wikipedia.org/wiki/Task_parallelism

http://en.wikipedia.org/wiki/Data_parallelism

16 Tema 1. Arquitecturas paralelas: clasificacin y prestaciones M. Anguita, J. Ortega

You might also like