Top Banner
1 Prof. Dr. José Antonio de Frutos Redondo Curso 2013-2014 GRADO EN INGENIERÍA DE COMPUTADORES Arquitectura e Ingeniería de Computadores PARALELISMO A NIVEL DE DATOS © J. A. de Frutos Redondo 2013 Arquitectura e Ingeniería de Computadores Paralelismo de datos 2 Computadores vectoriales Paralelismo de datos. Computadores vectoriales. Procesamiento vectorial. Arquitectura de computadores vectoriales. Organización de los vectores. Computadores vectoriales significativos. Sistemas de memoria. GPU. Nociones. Arquitectura.
20

GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

Sep 18, 2018

Download

Documents

habao
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

1

Prof. Dr. José Antonio de Frutos Redondo Curso 2013-2014

GRADO EN INGENIERÍA DE COMPUTADORES Arquitectura e Ingeniería de Computadores

Departamento de Automática

PARALELISMO A NIVEL DE DATOS

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 2

Computadores vectoriales

n  Paralelismo de datos. n  Computadores vectoriales.

n  Procesamiento vectorial. n  Arquitectura de computadores vectoriales. n  Organización de los vectores. n  Computadores vectoriales significativos. n  Sistemas de memoria.

n  GPU. n  Nociones. n  Arquitectura.

Page 2: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

2

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 3

Modelo de programación: n  Las operaciones se ejecutan en paralelo en

cada elemento de la estructura. n  Una hebra de control, ejecución paralela.

n  Un procesador asociado a cada elemento.

Paralelismo de Datos

Modelo arquitectónico: n  Array de muchos procesadores simples, baratos y con poca

memoria. n  Asociados a un procesador de control que emite las

instrucciones. n  Fácil sincronización de comunicaciones.

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 4

EVOLUCION n  Rígida estructura de control (SIMD en la taxonomía de Flynn) n  Populares cuando el coste ahorrado con la centralización era

alto. n  En los 60, cuando la CPU era un armario. n  Aparición de los vectoriales a mediados de los 70.

n  Más flexibles y fáciles de manejar n  Revivido en los 80 cuando aparecen 32-bit datapath slices. n  Aniquilados por los modernos microprocesadores.

n  Más razones para su desaparición: n  Las aplicaciones regulares son fáciles de ejecutar por su

localidad en otro tipo de procesadores. n  MIMD son eficaces y más generales en el paralelismo de datos.

n  Resurgimiento con la programación en GPUs.

Paralelismo de Datos

Page 3: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

3

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 5

Procesamiento vectorial

n  Nociones sobre procesamiento vectorial

n  Computadores vectoriales: n  máquinas segmentadas con unidades de ejecución vectoriales; n  especialmente diseñadas para optimizar las operaciones con

estructuras vectoriales. n  Vector

n  Conjunto de datos escalares del mismo tipo almacenados en memoria.

n  Procesamiento vectorial n  Aplicaciones de procesos sobre vectores.

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 6

Procesamiento vectorial

n  Operaciones vectoriales: n  repetición de la misma operación sobre un conjunto de datos.

n  Estas operaciones se especifican por: n  Código de operación

n  selecciona la unidad funcional o reconfigura el cauce en cauces dinámicos para la operación solicitada.

n  Dirección base de los operadores fuente y destino o los registros vectoriales implicados en la operación.

n  Incrementos de dirección entre elementos; n  en la mayoría de los casos este incremento tendrá valor 1.

n  Longitud de los vectores con los que se va a operar.

Page 4: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

4

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 7

Ejemplo de programa vectorial

Bucle DO de FORTRAN en un procesador escalar convencional:

DO 100 I=1,N A(I) = B(I) + C(I)

100 B(I) = 2 * A(I+1)

TEMP(1:N)= A(2:N+1) A(1:N) = B(1:N)+C(1:N) B(1:N) = 2*TEMP(1:N)

Procesamiento vectorial

INITIALIZE I=1 10 READ B(I) READ C(I) ADD B(I) + C(I) STORE A(I) <= B(I)+C(I) READ A(I+1) MULTIPLY 2*A(I+1) STORE B(I) <= 2*A(I+1) INCREMENT I <= I+1 IF I .LE. N GO TO 10 STOP

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 8

Ejemplo de programación vectorial DLXV

Ej.: calcular Y = a*X + Y

ld f0,a addi r4,rx,#512

loop: ld f2,0(rx) multd f2,f0,f2 ld f4,0(ry) addd f4,f2,f4 sd f4,0(ry) addi rx,rx,#8 addi ry,ry,#8 sub r20,r4,rx bnz r20,loop

ld f0,a lv v1,rx multsv v2,f0,v1 lv v3,ry addv v4,v2,v3 sv ry,v4

escalar vectorial

Procesamiento vectorial

Page 5: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

5

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 9

memoria

carga/almac.

suma/resta en CF

división en CF

multiplicación en CF

enteros

lógicas

registros vectoriales

registros escalares

unidades de ejecución

Arquitectura básica de un computador vectorial

Arquitectura de procesadores vectoriales

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 10

Arquitectura de procesadores vectoriales

Elementos de la arquitectura

n  Registros vectoriales: n  Contienen los operandos vectoriales en máquinas de registros. n  No existen si la máquina es memoria-memoria. n  Valores típicos de componentes son 64 o 128. n  Deben tener al menos 2 puertos de lectura y uno de escritura.

n  Unidades funcionales vectoriales: n  Ejecutan las operaciones vectoriales. n  Están segmentadas y suelen tener latencia 1. n  Una unidad de control vigila las dependencias.

Page 6: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

6

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 11

Arquitectura de procesadores vectoriales

Elementos de la arquitectura (II) n  Unidad de carga y almacenamiento:

n  Gestiona transferencias de vectores desde/a memoria. n  Puede estar segmentada. n  También puede ocuparse de los datos escalares.

n  Registros escalares: n  Contienen los operandos escalares. n  Se usan en operaciones vectoriales y para calcular direcciones. n  Se necesitan varios puertos de lectura y escritura.

n  Unidades funcionales escalares: n  Pueden existir para operaciones específicamente escalares. n  Pueden no existir si para operaciones escalares se usan las

unidades vectoriales

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 12

Organización de los vectores

La longitud del vector en la aplicación no tiene por qué coincidir con el tamaño de los registros (generalmente no lo hace)

Solución: se añade un registro escalar llamado VLR (vector

length register, registro de longitud).

n  Este registro contiene el número de elementos de los registros que se utilizan en cada operación

n  Si un cálculo necesita vectores mayores que los que caben en un registro, se divide en bloques y se hace un bucle (strip-mining)

Page 7: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

7

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 13

Ejemplo de strip-mining:

inicio = 1 VL = (n mod MVL) do 1 j=0,(n/MVL)

do 10 i=inicio,inicio+VL-1 Y(i) = a*X(i)+Y(i) 10 continue inicio = inicio + VL VL = MVL

1 continue

do 10 i=1,n 10 Y(i) = a*X(i) + Y(i)

Organización de los vectores

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 14

Ejecución del bucle con strip-mining:

rango de j (índice del bucle externo)

rango de i para cada valor de j (el nº de ejecuciones del bucle interno es m la

primera vez y MVL el resto de veces)

0 1 2 3 … n/MVL

1=>m m + 1=> m + MVL

... ... ... n − MVL + 1 => n

donde: m = n mod MVL

Organización de los vectores

Page 8: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

8

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 15

⎥⎥⎥⎥

⎢⎢⎢⎢

nnnn

n

n

aaa

aaaaaa

...............

...

...

21

22221

11211

Organización de los vectores

El espaciado (‘stride’) de un vector en memoria no tiene por qué ser 1 (es decir, los elementos de un vector pueden no estar contiguos en memoria).

Ejemplo: almacenamiento de una matriz en memoria (por filas)

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 16

a11 a12 a13 ... a1n a21 a22 a23 ... a2n ... an1 an2 an3 ... ann

Elementos de un vector fila. Tienen espaciado = 1 componente

a11 a12 a13 ... a1n a21 a22 a23 ... a2n ... an1 an2 an3 ... ann

Elementos de un vector columna. Tienen espaciado = n componentes (1 fila)

Organización de los vectores

Page 9: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

9

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 17

Organización de los vectores

n  Solución: se indica el espaciado con un registro específico o con un registro de datos. Se pueden incluir instrucciones específicas para acceso a vectores espaciados, o hacer que las instrucciones de carga y almacenamiento de vectores siempre trabajen con espaciado.

n  Ejemplo: en DLX, versión vectorial, existen las instrucciones: n  LVWS V1,R1,R2: carga desde la dirección en R1 con el

espaciado que indica R2 en V1

n  SVWS R1,R2,V1: almacena V1 a partir de la dirección en R1 con el espaciado que indica R2

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 18

Computadores vectoriales significativos

n  CRAY 1 (1975)

n  En 1979 aparece una versión mejorada CRAY 1S. n  Primer computador basado en lógica ECL. n  Periodo de reloj 12.5 ns (80 MHz). n  Posee 10 cauces funcionales. Dos para direcciones. n  Software COS (Cray Operating System) y Fortran 77 n  133 megaflops.

Page 10: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

10

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 19

Ejecución

01

23

00

17Memoria

de instrucciones

NIP CIP

LIP

Registros vectoriales

V0

V1V2

V3V4

V5V6

V7

Cal. inver.Mutiplic.

Suma

UnidadesFuncio-nales

de comaflotante

Desplaz.Lógica

Suma

UnidadesFuncio-nales

vectoriales

Controlvectorial

VM

RTC

00

77

((A0)+(Ak)

Vj

Vk

Vl

Sl

Vj

Vk

VlSj

Sk

Sl

Sj

Sj

S0S0

S2S3

S4S5

S6S7

Desplaz.LógicaSuma

UnidadesFuncio-nales

escalares

Pobl/17Registros escalares

Sj

Sl

Sk

Sj

Tjk

T00

T77

hasta

(AO)

((Ahj + jkm)

((Ahj + jkm)

A0A0A2A3A4A5A6A7

Registros

Aj

Al

Ak

Aj

Bjk

B00

B77

hasta(AO)

de direcciones

Multipli.

Suma

UnidadesFuncio-nales

direcciónde

Ak

AlXAXL

Control deintercambio

controlvectorial

PI

Controlde E/S

memoria

Arquitectura del CRAY 1

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 20

Computadores vectoriales significativos

n  X-MP (1982)

n  4 CPUs equivalentes a un CRAY 1 con memoria compartida. n  Contiene un conjunto de registros compartidos para acelerar las comunicaciones entre CPUs. n  Período de reloj de 8.5 ns. (120 MHz.) n  840 Mflops. n  UNIX, UNICOS.

Page 11: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

11

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 21

n  CRAY Y-MP n  Se introduce en 1988 n  8 procesadores n  6 ns de ciclo de reloj.

(160 MHz.) n  128 Mwords de memoria

compartida hasta 1Gwords de SSD.

n  En 1990 aparece la versión C 90 con un ciclo de reloj de 4.2 ns

Computadores vectoriales significativos

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 22

CRAY SX-6

Page 12: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

12

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 23

n  CPU procesador vectorial de 9 Gflops n  Hasta 8 CPUs y 128 GB por nodo de memoria compartida

SMP n  Ancho de banda de memoria 36 GB/S n  Ampliable hasta 128 nodos (1024 CPUs, 9.2 Tflops, 16 TB) n  Red de alto rendimiento de barras cruzadas entre nodos (8

GB/s bidireccional) n  Arquitectura de I/O ampliable con procesadores I/O

independientes n  SUPER-UX sistema operativo basado en UNIX con

características especificas para supercomputación. n  Entorno de programación paralelo con compiladores capaces

de vectorizar y optimizar Fortran 95 y C/C++. n  Modelos de memoria distribuida y herramientas de

optimización y depuración.

CRAY SX-6

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 24

NEC SX-8

Page 13: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

13

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 25

NEC SX-8

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 26

FUJITSU VPP5000

Page 14: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

14

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 27

FUJITSU VPP5000

n  Tipo de máquina: Multiprocesador vectorial de memoria distribuida. n  Sistema operativo: UXP/V (una variante de Unix basada en la V5.4). n  Estructura conectiva: Barras cruzadas. n  Compiladores: Fortran 90/VP (compilador vectorial de Fortran 90),

Fortran 90/VPP (compilador vectorial paralelo de Fortran 90), C/VP (compilador vectorial de C), C, C++.

n  Ciclo de reloj: 3.3 ns n  Rendimiento pico teórico:

n  9.6 Gflop/s por procesador (64 bits). n  1.22 Tflop/s máximo (64 bits).

n  Memoria principal n  Memoria/nodo 16 GB n  Memoria máxima 2 TB n  Número de procesadores 4-128

n  Ancho de banda de memoria 38.4 GB/s n  Ancho de banda de comunicaciones 1.6 GB/s

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 28

Sistemas de memoria

n  En una máquina vectorial, los accesos no son a datos individuales, sino a colecciones de ellos (vectores).

n  La distribución de estos datos en memoria sigue una ecuación generalmente sencilla. Por ejemplo, en una matriz almacenada n  por filas:

n  leer un vector-fila es leer posiciones de memoria consecutivas,

n  leer un vector-columna es leer posiciones distanciadas en n, donde n es el número de elementos de una fila.

n  El sistema de memoria se diseña de forma que: n  se puedan realizar accesos a varios elementos a la vez, n  el tiempo de inicio del acceso sea sólo para el primer

elemento.

Page 15: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

15

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 29

Sistemas de memoria

n  Se utilizan principalmente dos opciones: n  Memoria entrelazada (generalmente de orden inferior, con factor

de entrelazado palabra). n  Bancos de memoria independientes.

n  La memoria entrelazada tiene un diseño más sencillo y menos costoso, pero menos flexible.

n  La memoria en bancos independientes es más costosa (cada banco necesita su bus), pero es más flexible.

n  Se puede pensar en soluciones intermedias: memoria en bancos independientes con un bus compartido por todos los bancos.

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 30

1

2

3

4

contro- lador

de me-

moria

CPU

Memoria entrelazada

Memoria multi-banco

CPU controlador de memoria

1 2 3 4

Sistemas de memoria

Page 16: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

16

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 31

Ejemplo de funcionamiento: acceso al vector de 8 dobles palabras (8*64b) con dirección 136 (88h)

Memoria entrelazada

000 001 010 palabra del banco nº banco

dir acceso dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato

Banco 0 Banco 1 Banco 2 Banco 3 Banco 4 Banco 5 Banco 6 Banco 7

136 144 152 160 168 176 184

(192)

Sistemas de memoria

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 32

dir acceso dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato

Banco 0 Banco 1 Banco 2 Banco 3 Banco 4 Banco 5 Banco 6 Banco 7

136 144 152 160 168 176 184

192 dato

Memoria multibanco (bus dedicado)

Ej.: el mismo acceso

Sistemas de memoria

Page 17: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

17

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 33

dir acceso dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato

136 144 152 160 168 176 184

192 dato

Ej.: el mismo acceso

Memoria multibanco (bus de datos compartido)

Sistemas de memoria

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 34

Sistemas de memoria

n  Efecto sobre el sistema de memoria: n  Si el espaciado es 1, una memoria entrelazada, o un diseño por

bancos independientes, proporcionan el mejor rendimiento. n  Sin embargo, con espaciado no unidad, puede no alcanzarse el

rendimiento óptimo. Ejemplo: si el espaciado es 8, y hay 8 bancos, todos los accesos van al mismo banco (=>secuencialización).

n  Por esto, es interesante que el espaciado y el número de bancos sean primos entre sí.

n  Como el espaciado es una característica del problema, el compilador puede intervenir si ocurre una coincidencia como la del ejemplo (por ejemplo, añadiendo una columna “hueca” en la matriz).

Page 18: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

18

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 35

GPU

n  ¿Como aplicar la tecnología desarrollada en tarjetas gráficas a computación científica?

n  Ideas básicas: n  Modelo de ejecución heterogéneo:

n  CPU es el host, GPU es el dispositivo n  Desarrollo de lenguaje de programación para la GPU similar la

lenguaje C. n  Modelo de programación SIMD.

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 36

GPUs

AT I S T R E A M C O M P U T I N G

1-2 Chapter 1: OpenCL Architecture and the ATI Stream Computing SystemCopyright © 2010 Advanced Micro Devices, Inc. All rights reserved.

1.1.3 Synchronization

The two domains of synchronization in OpenCL are work-items in a single work-group and command-queue(s) in a single context. Work-group barriers enable synchronization of work-items in a work-group. Each work-item in work-group must first execute the barrier before executing any beyond the work-group barrier. Either all of, or none of, the work-items in a work-group must encounter the barrier. As currently defined in the OpenCL Specification, global synchronization is not allowed.

There are two types of synchronization between commands in a command-queue:

x command-queue barrier - enforces ordering within a single queue. Any resulting changes to memory are available to the following commands in the queue.

x events - enforces ordering between or within queues. Enqueued commands in OpenCL return an event identifying the command as well as the memory object updated by it. This ensures that following commands waiting on that event see the updated memory objects before they execute.

1.2 Hardware OverviewFigure 1.1 shows a simplified block diagram of a generalized GPU compute device.

Figure 1.1 Generalized GPU Compute Device Structure

Figure 1.2 is a simplified diagram of an ATI Stream GPU compute device. Different GPU compute devices have different characteristics (such as the number of compute units), but follow a similar design pattern.

GPU compute devices comprise groups of compute units (see Figure 1.1). Each compute unit contains numerous stream cores, which are responsible for executing kernels, each operating on an independent data stream. Stream cores,

GPU

ComputeUnit

. . .

. . .Stream Cores

. . .Processing Elements

GPU

ComputeUnit

ComputeUnit

Compute Device Compute Device

Diagrama de bloques de una GPU

Page 19: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

19

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 37

AT I S T R E A M C O M P U T I N G

1.2 Hardware Overview 1-3Copyright © 2010 Advanced Micro Devices, Inc. All rights reserved.

in turn, contain numerous processing elements, which are the fundamental, programmable computational units that perform integer, single-precision floating-point, double-precision floating-point, and transcendental operations. All stream cores within a compute unit execute the same instruction sequence; different compute units can execute different instructions.

Figure 1.2 Simplified Block Diagram of the GPU Compute Device1

1. Much of this is transparent to the programmer.

General-Purpose Registers

BranchExecutionUnit

ProcessingElement

T-Processing Element

Instructionand ControlFlowStream Core

Ultra-Threaded Dispatch Processor

ComputeUnit

ComputeUnit

ComputeUnit

ComputeUnit

ATI Stream GPU

GPUs

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 38

n  Arquitectura Fermi Nvidia

Page 20: GRADO EN INGENIERÍA DE COMPUTADORESatc2.aut.uah.es/~frutos/areinco/pdf/P_DATOS.pdf · Array de muchos procesadores simples, baratos y con poca memoria. ! ... Pueden no existir si

20

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 39

AT I S T R E A M C O M P U T I N G

1-4 Chapter 1: OpenCL Architecture and the ATI Stream Computing SystemCopyright © 2010 Advanced Micro Devices, Inc. All rights reserved.

A stream core is arranged as a five-way very long instruction word (VLIW)

processor (see bottom of Figure 1.2). Up to five scalar operations can be co-issued in a VLIW instruction, each of which are executed on one of the corresponding five processing elements. Processing elements can execute single-precision floating point or integer operations. One of the five processing elements also can perform transcendental operations (sine, cosine, logarithm, etc.)1. Double-precision floating point operations are processed by connecting two or four of the processing elements (excluding the transcendental core) to perform a single double-precision operation. The stream core also contains one branch execution unit to handle branch instructions.

Different GPU compute devices have different numbers of stream cores. For example, the ATI Radeon™ HD 5870 GPU has 20 compute units, each with 16 stream cores, and each stream core contains five processing elements; this yields 1600 physical processing elements.

1.3 The ATI Stream Computing Implementation of OpenCL

ATI Stream Computing harnesses the tremendous processing power of GPUs for high-performance, data-parallel computing in a wide range of applications. The ATI Stream Computing system includes a software stack and the ATI Stream GPUs. Figure 1.3 illustrates the relationship of the ATI Stream Computing components.

Figure 1.3 ATI Stream Software Ecosystem

The ATI Stream Computing software stack provides end-users and developers with a complete, flexible suite of tools to leverage the processing power in ATI Stream GPUs. ATI software embraces open-systems, open-platform standards.

1. For a more detailed explanation of operations, see the ATI Compute Abstraction Layer (CAL) Pro-gramming Guide.

Stream Applications

Libraries Third-Party Tools

MulticoreCPUs

OpenCL Runtime

Compute Abstraction Layer

ATI StreamGPUs

GPUs

Modelo de capas OpenCL

© J. A. de Frutos Redondo 2013

Arq

uite

ctur

a e

Inge

nier

ía d

e C

ompu

tado

res

Paralelismo de datos 40

AT I S T R E A M C O M P U T I N G

1-18 Chapter 1: OpenCL Architecture and the ATI Stream Computing SystemCopyright © 2010 Advanced Micro Devices, Inc. All rights reserved.

parallel programming such as memory fence operations and barriers. Figure 1.11 illustrates this model with queues of commands, reading/writing data, and executing kernels for specific devices.

Figure 1.11 OpenCL Programming Model

The devices are capable of running data- and task-parallel work. A kernel can be executed as a function of multi-dimensional domains of indices. Each element is called a work-item; the total number of indices is defined as the global work-size. The global work-size can be divided into sub-domains, called work-groups, and individual work-items within a group can communicate through global or locally shared memory. Work-items are synchronized through barrier or fence operations. Figure 1.11 is a representation of the host/device architecture with a single platform, consisting of a GPU and a CPU.

An OpenCL application is built by first querying the runtime to determine which platforms are present. There can be any number of different OpenCL implementations installed on a single system. The next step is to create a context. As shown in Figure 1.11, an OpenCL context has associated with it a number of compute devices (for example, CPU or GPU devices),. Within a context, OpenCL guarantees a relaxed consistency between these devices. This means that memory objects, such as buffers or images, are allocated per context; but changes made by one device are only guaranteed to be visible by another device at well-defined synchronization points. For this, OpenCL provides events, with the ability to synchronize on a given event to enforce the correct order of execution.

Many operations are performed with respect to a given context; there also are many operations that are specific to a device. For example, program compilation and kernel execution are done on a per-device basis. Performing work with a device, such as executing kernels or moving data to and from the device’s local

Modelo de programación de OpenCL

GPUs