grado en ingenierÍa de computadoresatc2.aut.uah.es/~frutos/areinco/pdf/p_datos.pdf · array de...
TRANSCRIPT
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.
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
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.
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
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.
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)
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
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
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.
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.
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
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
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
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.
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
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
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).
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
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
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