SlideShare una empresa de Scribd logo
1 de 110
Descargar para leer sin conexión


























Ciclo Conferencia Grupo ArTeCS, UCM 

Madrid, 22 Febrero 2018
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
R. Doallo
Introducción
Diferentes estrategias de diseño para algoritmos Parallel-Prefix
sobre GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito:
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
42 67
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
Introducción
Arquitectura GPU
Programabilidad
Algoritmos
Diferentes estrategias de diseño para algoritmos Parallel-Prefix
sobre GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito:
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
42 67
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
Comparativa CPU-GPU
Comparativa CPU-GPU
Presencia GPUs en TOP500
Presencia GPUs en TOP500
GPU: razones altas prestaciones?
Interleaved Multithreading
Single Inst. Multiple Thread (SIMT)
Single Inst. Multiple Thread (SIMT)
Núcleos sencillos (muchos)
Arquitectura
(Nvidia)
Número de cores
Maxwell 1024 - 4098
Pascal 2560 - 3584
Volta 5120
Organización básica GPU
•  Jerarquía de memoria
•  Streaming Multiprocessor (SM)
.
„ Los threads de un mismo
bloque se pueden comunicar
usando la memoria compartida.
„ Los threads de distintos
bloques necesitan recurrir a la
memoria global, mucho más
lenta.
„ La memoria local en realidad
es memoria global, aunque
según la arquitectura puede ser
cacheada.
Organización básica GPU: Jerarquía de Memoria
5 67
Organización básica GPU: SMs
Roadmap GPUs de Nvidia
Streaming Multiprocessor: Kepler
Arquitectura Kepler .
Paso evolutivo: incrementa los recursos y mejora la eficiencia energética.
Añade algunas características como instrucciones shuffle o memoria unificada.
Las tarjetas con capacidades 3.5 también soportan paralelismo dinámico e
Hyper-Q.
Maxwell Multiprocessor (SMM)
ArquitecturaMaxwell .
Mayor eficiencia energética (performance/watt) que Kepler.
Incrementa la memoria compartida a 64 KB por SMM (aunque cada bloque seguirá
usando como máximo 48 KB). Incrementa la L2.
Mejora las atomics en shared memory con soporte nativo en 32-bits.
Streaming Multiprocessor: Pascal
Arquitectura Pascal .
Incrementa el número de cores de doble precisión.
Cambia memoria GDDR5 por HBM2 (incrementando muchísimo el ancho de banda). Vuelve a
incrementar L2.
Introduce soporte para FP16 (deep learning).
Introduce NVLINK para high-speed interconexiones entre GPU-GPU y GPU-CPU.
Streaming Multiprocessor: Volta
Arquitectura Maxwell .
Muy enfocadas para Deep Learning: introduce tensor cores.
Mejora ancho de banda HBM2, mejora ancho de banda NVLINK.
Hasta 2048 threads activos. Independent thread schedulling (cada thread tiene su propio
contador de programa).
Introduce cooperative groups: grupos de threads a granularidades sub-block o multi-block.
Introducción
Arquitectura GPU
Programabilidad
Algoritmos
Diferentes estrategias de diseño para algoritmos Parallel-Prefix
sobre GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito:
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
42 67
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
21
GPU Programmability
o  Directives
n  Such as hiCuda or OpenACC
n  To have some GPU expertise
22
GPU Programmability
o  Directives
n  Such as hiCuda or OpenACC
n  To have some GPU expertise
23
GPU Programmability
o  Directives
n  Such as hiCuda or OpenACC
n  Have some GPU expertise
o  Automatic Compilers
n  Such as Bones or Par4all
n  Systematic code translations lead to
reduce performance
24
GPU Programmability
o  Directives
n  Such as hiCuda or OpenACC
n  Have some GPU expertise
o  Automatic Compilers
n  Such as Bones or Par4all
n  Systematic code translations lead to
reduce performance
25
GPU Programmability
o  Directives
n  Such as hiCuda or OpenACC
n  Have some GPU expertise
o  Automatic Compilers
n  Such as Bones or Par4all
n  Systematic code translations lead to
reduce performance
o  Accelerated Libraries
n  Such as SkePU or SkeCL
n  HPC through simple routines without
knowledge
GPU Programmability
o  Directives
n  Such as hiCuda or OpenACC
n  Have some GPU expertise
o  Automatic Compilers
n  Such as Bones or Par4all
n  Systematic code translations lead to
reduce performance
o  Accelerated Libraries
n  Such as SkePU, SkeCL, BPLG
n  HPC through simple routines without
knowledge
Introducción
Arquitectura GPU
Programabilidad
Algoritmos
Diferentes estrategias de diseño para algoritmos Parallel-Prefix
sobre GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito:
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
42 67
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
28
Parallel Prefix Algorithms
o  Definition:
n  Solves a problem of size N in k steps, depicted by a directed acyclic
oriented graph called prefix circuit
n  Computations performed by the Node operator (small circles
below), and communication patterns regular and known at
compile-time.
n  Regular algorithms which match well
to GPU architectures
n  Access pattern does not
depend on execution, it can be
expressed as a linear function of each
element index
n  Each resulting element is the
combination of previous results of
other elements.
o  Algorithm examples:
n  FFT, DCT, Scan, Sorting, Tridiagonal System Solvers, ...
Index-Digit Algorithms
o  Subset of Parallel Prefix Algorithms
n  Can be represented and modeled according to permutations of
each element position's digits
Data item x(t), being is represented as
x(6) => [0110]
n  Constant number of Node operators throughout the steps
n  Elements that take part in one Node operator are not used by
another Node operator in the same step
Index-Digit: FFT pattern Parallel Prefix: scan pattern
12
1
22 tttt n
n +⋅++⋅= −
…
€
tn …t2t1[ ]
o  La transformada de Fourier es usada para procesar señales en
muchas aplicaciones reales
n  Procesado de audio, reconocimiento de patrones, tratamiento de imágenes o
manipulación de números largos…
o  Existen múltiples implementaciones para CPU y GPU.
n  Para CPU: FFTW, Spiral, IPP de Intel…
n  Las más comunes en GPU son: CUFFT de NVIDIA, clMath de AMD.
Fast Fourier Transform (FFT)
Sistemas Tridiagonales (I)
7x + y + 3z – 4w = 6
4x – 9y – z + 2w = 5
x + 8y – 2z – 3w = 0
8x – 5y + 4z - w = 1
7 1 3 -4
4 -9 -1 2
1 8 -2 -3
8 -5 4 -1
x
y
Z
w
=
6
5
0
1
·
7x + y + 3z – 4w = 6
4x – 9y – z + 2w = 5
x + 8y – 2z – 3w = 0
8x – 5y + 4z - w = 1
x
y
Z
w
=
6
5
0
1
·
Sistema de ecuaciones convencional .
Sistema de ecuaciones tridiagonal .
7 1 3 -4
4 -9 -1 2
1 8 -2 -3
8 -5 4 -1
•  Surgen de forma natural en aplicaciones científicas como la simulación de líquidos o en la
propagación del calor.
Sistemas Tridiagonales (II)
b1 c1
a2 b2 c2
a3 b3 c3
a4 b4 c4
aN-1 bN-1 cN-1
aN bN
0
Ei: aixi-1 + bixi + cixi+1 = di
Sistema de ecuaciones tridiagonal .
0
Uso y algoritmos de resolución .
•  Los S.T. aparecen en aplicaciones como la simulación de fluidos o la difusión del
calor.
•  Existen múltiples algoritmos de resolución tanto secuenciales como paralelos.
•  En CUDA son conocidos la librería CUSPARSE de NVIDIA y la CUDPP.
Forma general de la ecuación Ei
11 67
33
Primitive Scan
Taking a binary associative operator , with identity I, and
an array of n elements
returns:
Example with adding:
Example with multiplication:
3,1, 7,1, 4
a0,
a1,
a2,
... ,an 1
0,3,4,11,12
3,1, 7,1, 4 1,3,3,21,21
Primitiva Scan
Cada elemento es el resultado de aplicar un operando binario (+) sobre él mismo
y el elemento anterior.
•  Ampliamente utilizado en bases de datos, procesado de imágenes, análisis
léxico, evaluación de polinomios, etc..
Introducción
Diferentes estrategias de diseño para algoritmos Parallel-
Prefix sobre GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito:
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
Estrategias de diseño para algoritmos
Parallel-Prefix sobre (CUDA) GPUs
o  BPLG: Butterfly Processing Library for GPU architectures
o  Jacobo Lobeiras, Margarita Amor, Ramon Doallo. BPLG: A Tuned Butterfly Processing Library for GPU Architectures. International
Journal of Parallel Programming (2015)
o  Clasification depending on problem size
n  Case 1: Problem data fit in shared memory.
o  Methodology for Index-Digit Algorithms
o  Each problem is assigned to one CUDA block
n  J.Lobeiras, M. Amor, R. Doallo. Designing Efficient Index-Digit Algorithms for CUDA GPU Architectures.
IEEE Trans. Parallel Distrib. Syst. (2016)
o  New strategy for Parallel-Prefix algorithms
n  A. Pérez, M. Amor, R. Doallo. Parallel-Prefix Operations on GPU: Tridiagonal System Solvers and Scan
Operators. J. Parallel and Distributed Computing (under review).
n  Case 2: Data larger than SHM but fit into GM
o  Methodology for Index-Digit Algorithms
o  Each problem is distributed among several blocks
o  Global synchronization needed
n  A. Pérez, M. Amor, J. Lobeiras, R. Doallo. Solving Large Problem Sizes of Index-Digit Algorithms on GPU:
FFT and Tridiagonal System Solvers. IEEE Trans. Computers (2018)
n  Case 3: Data larger than single GPU GM
o  New strategy for Parallel-Prefix algorithms
o  Each problem is distributed among several GPUs
n  A. Pérez, M. Amor, R. Doallo, A. Nukada, S. Matsuoka. Efficient Solving of Scan Primitive on Multi-GPU
Systems. IPDPS 2018 (in press).
Introducción
Diferentes estrategias de diseño para algoritmos Parallel-Prefix
sobre GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito:
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
o  La arquitectura especial de la GPU hace que la programación de
librerías eficiente sea una tarea más complicada.
Limitaciones de memoria
compartida y registros
Problemas de
coalescencia
Ancho de banda y
latencia del bus PCI-E
S M S MS M
Bajo rendimiento en
código secuencial o
ejecución divergente
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Butterfly Processing Library for GPU architectures (BPLG)
Diseño de librerías GPU: Dificultades
•  Puede haber decisiones dependientes del hardware y la evolución
rápida podría hacer que la mejor opción cambie entre generaciones.
o  Las templates de C++ son una herramienta de programación potente
y flexible que permite generar múltiples versiones de un algoritmo.
Único código para múltiples arquitecturas
template< int N, int D, int R, int S >
__global__ void SPLG_DCT(float* src, int size) {
…
__shared__ float* shm[S];
…
if(D < 0) scale<R, N/2>(reg);
…
radix<R, D>(reg, angle);
Diseño de librerías GPU: Parametrización
•  Las templates pueden usarse para ajustar la librería a la arquitectura,
optimizando en tiempo de compilación códigos parametrizados.
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
o  Composed by high-level optimized building blocks (skeletons)
o  Each block performs a small part of the whole work
o  The body of the kernel remains almost costant along
algorithms, just changing the Node Operator's building block
implementation
Implementation on CUDA
BPLG : Butterfly Processing Library for GPUs
o  BPLG Features
n  The use of templates, enabling Generic Programming and
Template Metaprogramming.
n  Knowing additional info. at compile-time (number of
threads, shared memory, ...) enables many optimizations
like loop unrolling or data reordering using register
renaming.
n  All building blocks were designed to operate in any GPU
memory space.
n  Avoids non-uniform access
n  Hybrid communication strategy inside the block
n  Uses customized CUDA data types as float4, int4, ...
BPLG : Butterfly Processing Library for GPUs
Bloques constructivos básicos
Creación de algoritmos basada en bloques .
Los algoritmos son construidos en base a una serie de bloques constructivos básicos.
Cada bloque está formado por una o más plantillas y realiza solo una parte del trabajo.
Las funciones se clasifican en dos categorías: operaciones y manipulación de datos.
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Por ejemplo, estos son tres de las templates usadas en los algoritmos:
-  Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’
a otro buffer ‘Y’ con un stride opcional ‘ss’.
-  BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un
stride opcional ‘ss’, de tal forma que el resultado está en orden de bit
inverso.
-  Butterfly: Realiza la etapa de computación principal de cada paso radix,
permite un stride opcional y las operaciones pueden variar con el algoritmo.
Diseño de los bloques constructivos
Ejemplos de templates usadas en los algoritmos .
Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’ a otro
buffer ‘Y’ con un stride opcional ‘ss’.
BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un stride
opcional ‘ss’, de tal forma que el resultado está en orden de bit inverso.
Butterfly: Realiza la etapa de computación principal de cada paso radix permitiendo
un stride opcional. Las operaciones pueden variar con el algoritmo.
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Por ejemplo, estos son tres de las templates usadas en los algoritmos:
-  Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’
a otro buffer ‘Y’ con un stride opcional ‘ss’.
-  BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un
stride opcional ‘ss’, de tal forma que el resultado está en orden de bit
inverso.
-  Butterfly: Realiza la etapa de computación principal de cada paso radix,
permite un stride opcional y las operaciones pueden variar con el algoritmo.
Diseño de los bloques constructivos
Ejemplos de templates usadas en los algoritmos .
Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’ a otro
buffer ‘Y’ con un stride opcional ‘ss’.
BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un stride
opcional ‘ss’, de tal forma que el resultado está en orden de bit inverso.
Butterfly: Realiza la etapa de computación principal de cada paso radix permitiendo
un stride opcional. Las operaciones pueden variar con el algoritmo.
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Por ejemplo, estos son tres de las templates usadas en los algoritmos:
-  Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’
a otro buffer ‘Y’ con un stride opcional ‘ss’.
-  BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un
stride opcional ‘ss’, de tal forma que el resultado está en orden de bit
inverso.
-  Butterfly: Realiza la etapa de computación principal de cada paso radix,
permite un stride opcional y las operaciones pueden variar con el algoritmo.
Diseño de los bloques constructivos
Ejemplos de templates usadas en los algoritmos .
Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’ a otro
buffer ‘Y’ con un stride opcional ‘ss’.
BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un stride
opcional ‘ss’, de tal forma que el resultado está en orden de bit inverso.
Butterfly: Realiza la etapa de computación principal de cada paso radix permitiendo
un stride opcional. Las operaciones pueden variar con el algoritmo.
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Cada bloque resuelve problemas de tamaño ‘N’,
trabajando sobre ‘S’ elementos. Si ‘S / N > 1’
varios problemas son procesados en batch.
El tamaño del radix es seleccionado por ‘R’ y
la dirección de la transformada por ‘D’.
Algunos algoritmos como la DCT requieren una
pequeña etapa auxiliar. En el resto, los datos se
cargan de memoria global a registros.
El primer paso es siempre un operador opcional
de escalado, seguido de una etapa mixed-radix.
A continuación, un bucle reordena los datos
y computa las etapas radix-R restantes.
Ejemplo de algoritmo: DCT (I)
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Cada iteración está compuesta por:
1. Etapa de reordenamiento
- Se realiza en memoria compartida con dos
operadores copy variando los offsets y strides.
- Se requieren sincronizaciones para mantener
el orden de ejecución.
2. Etapa de computación
- Primero se obtiene el twiddle en función de
la etapa y del identificador de thread.
- A continuación se llama el operador radix-R
sobre los datos en registros.
Dependiendo del algoritmo deseado, la
etapa de postprocesado puede ser
necesaria.
Finalmente, los resultados se copian a
memoria global.
Ejemplo de algoritmo: DCT (II)
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
N R Rt L1 L2 L1x2 SB BSM TSM Ocup.
4 2 14 2 64 128 2048 16 2048 1.00
8 2 18 4 32 128 2048 16 2048 1.00
16 2 18 8 16 128 2048 16 2048 1.00
32 2 18 16 8 128 2048 16 2048 1.00
64 4 28 16 8 128 4096 12 1536 0.75
128 4 28 32 4 128 4096 12 1536 0.75
256 4 27 64 2 128 4096 12 1536 0.75
512 4 28 128 1 128 4096 12 1536 0.75
1024 4 27 256 1 256 8192 6 1536 0.75
2048 8 37 256 1 256 16384 3 768 0.38
4096 8 36 512 1 512 32768 1 512 0.25
N Tamaño de problema L1 Threads por problema SB Mem. Shared / bloque
R Tamaño de radix L2 Threads en batch BSM Bloques por SM
Rt Registros por thread L1x2 Threads por bloque TSM Threads por SM
Tabla de parámetros (para una FFT compleja en Kepler)
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
•  Los datos residen en la memoria de la GPU, no se realizan
transferencias durante las pruebas.
•  El rendimiento de señales se mide en GFLOPS usando las expresiones:
Datos complejos (ℂ):
“5N log2(N)·b·10-9 / t”
Datos reales (ℝ):
“2.5N log2(N)·b·10-9 / t”
•  El rendimiento de sistemas tridiagonales se mide en MRows/s.
•  El rendimiento de la primitiva scan se mide en MData/s.
Análisis de Rendimiento: metodología de pruebas
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Análisis de rendimiento: BPLG-cFFT
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Análisis de rendimiento: BPLG-rFFT
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Análisis de rendimiento: BPLG-TS
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Introducción
Diferentes estrategias de diseño para algoritmos Parallel-Prefix
sobre GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito
Caso 1: SM>=N
Caso 2: SM<=N<=GM
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
42 67
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
Metodología en 2 fases
Metodología para Algoritmos Índice-Dígito
Recursos compartidos
Nivel de paralelismo
Coalescencia
Conflictos de banco
Tuning mapping vector
Cadenas de operadores
Fase 2 - .. .Operator string manipulation
Fase 1 -. . .Análisis de recursos GPU: obtener resource factors
Parametrización para asignación de datos a recursos GPU
Metodología para Algoritmos Índice-Dígito
o  GPU resources utilization analysis phase
Problem size where r is the radix and n the
number of problem steps
N = 16 =
16 elements
radix – 2
steps - 4
Acyclic graph -> prefix circuit
Data dependences among steps
n
rN =
4
2
Node
Step 1 Step 2 Step 3 Step 4
Metodología para Algoritmos Índice-Dígito
o  GPU resources utilization analysis phase
Index-Digit representation:
Data item x(t) being t,
is represented as:
For instance: x(6) is written as [0110]
12
1
22 tttt n
n +⋅++⋅= −
…
€
tn …t2t1[ ]
Metodología para Algoritmos Índice-Dígito
o  GPU resources utilization analysis phase
Kernel data are divided among:
n  blocks, each one executes threads.
n  A thread performs data stored in private registers.
n  Threads within a block have access to data in shared
memory
n  Mapping of data can be represented with a 5-tuple of the
form (n,p,s,l,b) in our methodology
n  Furthermore, problems are simultaneously
executed in a batch mode.
b
rB =
l
rL =
€
P = rp
€
S = rs
batches
rG =
Metodología para Algoritmos Índice-Dígito
o  GPU resources utilization analysis phase
n  CUDA programming ->
n  Also with threads
n  In our methodology, all threads in a block within the
same threadIdx.y work in the same problem
n  Equations:
),( yx bbb =
€
l = (lx,ly )
lps += ylbatchesb −=nsly −=
Metodología para Algoritmos Índice-Dígito
o  GPU resources utilization analysis phase
Example: { p=2, l=(6,1), b=(8,0) }
n  4 elements per thread stored in registers p=2
n  128 threads per block. 64 threads in dimX and 2
threads in dimY
n  s=p+l so 512 elements in shared memory
n  therefore 256 elements per problem
n  256 blocks
n  thus 512 problems simultaneously.
ylsn −=
ylbatchesb −=
Metodología para Algoritmos Índice-Dígito
o  GPU resources utilization analysis phase
We define the following premises:
Premise 1: Balance warp and block parallelism.
o  Warp parallelism: As many actives warps per SM as possible.
o  Block parallelism: As many actives blocks per SM as possible. Even
good performance at low warp occupancy (high ILP). Better usage of
shared memory. Less synchronization penalty.
Premise 2: Increase computational workload per thread.
o  Increasing radix r implies reducing steps, that means,
synchronization barriers and loop iterations
o  Be careful with registers, high register usage implies less warp
parallelism and/or register spilling.
Metodología para Algoritmos Índice-Dígito
Mapping Vector (I)
Ejemplo:
local space
shared space
private space
signal size
block space
n:
p:
s:
l:
b:
Mapping Vector Parameters .
• Cada kernel procesará simultáneamente rbatch señales con N = rn datos en una sola
invocación, donde r depende del radix elegido.
• La ejecución se expresa con una 5-tupla:
(n, p, s, l, b)
• Si se considera s = p + l para simplificar los intercambios y b = batch – (s – n)
=> 3 parámetros independientes: (n, p, s)
Se representaría como la 5-tupla: (3, 4, 9, 5, 3)
La notación se puede simplificar a: (3, 4, 9)
Metodología para Algoritmos Índice-Dígito
Mapping Vector (II)
1 0 0 0 0 0 1 1 1 1 1
Elemento 1055:
b = [ 0 0 ]
b = [ 0 1 ]
b = [ 1 0 ]
l = [ 0 0 0 0 0 ] l = [ 0 0 0 0 1 ] l = [ 1 1 1 1 1 ]
p =
Metodología para Algoritmos Índice-Dígito
Fase 1: Análisis de recursos. Obtención de Resource Factors (I)
Obtención Resource Factors .
El rendimiento depende en el balance correcto entre el gran número de threads y el uso
eficiente de los recursos compartidos en el hardware.
Dos principales niveles de paralelismo:
- SM warp parallelism
- SM block parallelism
Metodología para Algoritmos Índice-Dígito
Fase 1: Análisis de recursos. Obtención de Resource Factors (II)
Recursos compartidos .
Los registros y la memoria compartida reservada pueden limitar el nivel de paralelismo.
En lo posible, intentaremos favorecer el máximo número de bloques por SM.
Metodología para Algoritmos Índice-Dígito
Fase 1: Análisis de recursos. Obtención de Resource Factors (II)
Recursos compartidos .
Los registros y la memoria compartida reservada pueden limitar el nivel de paralelismo.
En lo posible, intentaremos favorecer el máximo número de bloques por SM.
Metodología para Algoritmos Índice-Dígito
Fase 1: Análisis de recursos. Obtención de Resource Factors (III)
Ajuste de parámetros .
Los parámetros p,s,l pueden ser ajustados en base a las características del hardware.
El tamaño del radix será determinado por p, siendo a lo sumo radix-2p.
El objetivo es elegir los parámetros p,s,l óptimos para maximizar el rendimiento.
Las cadenas de operadores se diseñan en base a los parámetros elegidos.
Registers per thread → p
Shared mem. bytes/thread → s
Warps per block → l
Metodología para Algoritmos Índice-Dígito
Fase 1: Análisis de recursos. Obtención de Resource Factors (IV)
y Diseño Eficiente de Algoritmos Índice-Dígito para GPUs
Ajuste de parámetros .
Dos configuraciones posibles:
l = 5 ⇒ p = s – l = 9 – 5 = 4
l = 6 ⇒ p = s – l = 9 – 6 = 3
Para resolver problemas hasta N = 4096 en un único kernel extendemos l, cambiando
paralelismo de bloque por paralelismo de thread. Las configuraciones finales serían:
(p, s, l) = { (4, 9, 5) (3, 9, 6) (4, 12, 8) }
s = 9
Fase 1: Análisis de recursos. Obtención de Resource Factors (V)
Ajuste de parámetros .
Para optimizar todos los casos creamos cuatro versiones del algoritmo.
Para algunos tamaños existen dos configuraciones posibles.
En igualdad de condiciones, se elige la que tenga el mayor paralelismo a nivel de warp.
Metodología para Algoritmos Índice-Dígito
o  Operators string manipulation phase
Using the mapping vector and the
computation/permutation operators is
possible to model any ID-algorithm
Metodología para Algoritmos Índice-Dígito
o  Operators string manipulation phase
Mapping Vector: A compact representation of data
distribution on the system memory hierarchy.
At the beginning and at the end, data reside in
global memory. During execution, data are
moved among different GPU resources.
[ ]111 tttttt ppssbatchn !!! +++
b l p
s
Metodología para Algoritmos Índice-Dígito
o  Operators string manipulation phase
Example: { p=2, l=(6,1), b=(8,0) }
4 elements per thread, 128 threads per block,
512 elements in shared memory,
256 elements per problem, 256 blocks,
2 problems per block, 512 problems simultaneously.
[ ]12391017 tttttt !!!
b p
s
l
Metodología para Algoritmos Índice-Dígito
o  Operators string manipulation phase
Example: { p=2, l=(6,1), b=(8,0) }
6th element within third problem is located at:
TreadIdx=(1,0) ; register[1] of its thread ;
6th element in shared memory ; BlockIdx=(1,0)
s
[ ]00001010000000100
b pl
Metodología para Algoritmos Índice-Dígito
o  Operators string manipulation phase
Two types of operators: computation and permutation.
n  Node operator (computation): with
reads sets of r data whose position differs in
their i-digit and writes r results.
0: 00000 Each algorithm defines its own
1: 00001 node operator behavior:
2: 00010 Addition, Gauss reduction,
3: 00011 sorting, ...
r
iΨ
2
1Ψ
ni ≤≤1
Metodología para Algoritmos Índice-Dígito
o  Operators string manipulation phase
n  Perfect unshuffle operator (permutation):
performs a cyclic shift to the right between the i
and j-th digits
We also define a generalization performing m
consecutive shift operations. For example:
ji ≥ji,Γ
[ ] [ ]11111, ttttttttt jjijinnji !!!! −++=Γ
ji
m
,Γ
[ ] [ ]14567238123456782,7
2
tttttttttttttttt =Γ
Metodología para Algoritmos Índice-Dígito
o  Operators string manipulation phase
n  General unshuffle operator (permutation):
performs a cyclic shift to the right between two
digits subfields {i..j} and {k..l}
For example:
€
Γi, j,k,l
[ ] [ ]11111111,,, tttttttttttttt llkjkjjilinnlkji !!!!!! −++−++=Γ
[ ] [ ]26345781123456781,2,6,8 tttttttttttttttt =Γ
Metodología para Algoritmos Índice-Dígito
Fase 2: Cadenas optimizadas, ID-FFT
Transformada de Fourier .. .
• Expresión general:
Mapping vectorRango
n ≤ p (4, 9, 5)
p < n ≤ 2p (4, 9, 5)
2p < n ≤ 3p (4, 12, 8)
2p < n ≤ 3p (3, 9, 6)
Parámetros (p, s, l ) Expresión particular
Metodología para Algoritmos Índice-Dígito
Análisis de Rendimiento: ID-cFFT
GeForce 580
Max: 492 GFlops
Promedio: +5.9%
GeForce Titan
Max: 803 GFlops
Promedio: +0.8%
Metodología para Algoritmos Índice-Dígito
Análisis de Rendimiento: ID-TS
GeForce 580
Max: 4105 MRows
Promedio: +238%
GeForce Titan
Max: 9643 MRows
Promedio: +447%
Metodología para Algoritmos Índice-Dígito
BPLG-cFFT vs ID-cFFT
GeForce 580
Promedio: +22.8%
GeForce Titan
Promedio: +11.3%
Comparación Índice-Dígito vs. BPLG
BPLG-TS vs ID-TS
GeForce 580
Promedio: +3.6%
GeForce Titan
Promedio: +11.5%
Comparación Índice-Dígito vs. BPLG
Introducción a la Programación de Propósito General en GPUs
Diferentes estrategias de diseño para algoritmos Parallel-Prefix
sobre GPUs
Metodología para Algoritmos Índice-Dígito:
Caso 1: SM>=N
Caso 2: SM<=N<=GM
Nueva estrategia para Algoritmos Parallel-Prefix
Trabajo Futuro
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
The problem is larger than shared memory but still can
be stored in global memory
Data distributed among several blocks. Each block
computes a portion of the solution.
It is necessary a synchronizing mechanism for
exchanging partial results among blocks
Nowadays, there is not any global synchronization
barrier for CUDA
Metodología para Algoritmos Índice-Dígito (caso 2)
But there are some strategies:
o  Multi-Stage strategy. Using several kernels (hence forth
stages). It uses global memory as information exchanging
mechanism.
o  CUDA Dynamic Parallelism. A kernel from GPU launches other
kernels. Generated code runs slower: Relocatable device code
+ local memory as stack.
o  Persistent threads. As many blocks as the device can
simultaneously run (otherwise deadlock). Each block sets a
flag, sleeps and waits for the flag reset. A master block will
wait for all blocks, doing a flag reset.
Metodología para Algoritmos Índice-Dígito (caso 2)
Metodología para Algoritmos Índice-Dígito (caso 2)
Multi-Stage strategy: tridiagonal solver
Metodología para Algoritmos Índice-Dígito (caso 2)
Multi-Stage strategy: FFT
o  Using more than 1 stage forces to introduce a new
parameter in our methodology: m
o  This parameter represents the number of stages:
o  Also introduces a new Premise:
n  Premise 3: The minimization of m. Global memory data exchanges
are slower than using other memories. Furthermore, each kernel
invocation implies an overhead.
o  Thus, s must be as greater as possible.
[ ]111 ttttttt ppssnbatchn !!!! +++
b l p
s
⎥
⎥
⎤
⎢
⎢
⎡
=
s
n
m
Metodología para Algoritmos Índice-Dígito (caso 2)
o  Combining all premises is not easy:
n  Large s sizes implies good warp parallelism but reduces
the number of active blocks, decreasing block
parallelism.
n  Large p values reduces the number of steps per stage
but also can generate register spilling and decreases
the warp parallelism.
n  Raising s in order to minimize m implies reducing block
parallelism.
Metodología para Algoritmos Índice-Dígito (caso 2)
89
o  Wang&Mou TS Solver.
Adjancecy property can be applied in
Stage 1 but not in Stage 2.
In Stage 2 is necessary to store the
whole triad:
n  Stage 1 elements are equations
float4 type -> 16 bytes
n  Other Stage elements are triad
of equations 3xfloat4 type -> 48 bytes
n  n is splitted in
instead of
21 )1( sms ⋅−+
Case 2 Example: TS Solver
sm⋅
o  The first kernel's shared memory
can hold much more elements than
the shared memory of other stages.
o  It is better to process as many steps
as possible in stage 1, it is cheaper.
Case 2 Example: TS Solver
Case 2 Experimental Results
Case 2: TS Solver
Case 2 Example: FFT
Introducción
Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre
GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
o  GPU Resource Utilization Analysis
o  CUDA Kernel Optimization
o  Performance Parameter Tuning
Estrategia (general) para Algoritmos Parallel-Prefix
o  Tuning Parameters
Estrategia (general) para Algoritmos Parallel-Prefix
o  CUDA Kernel Optimization: uses BPLG skeletons (building blocks)
n  CUDA features for improving skeleton implementations:
o  Efficient-Index calculation avoiding non-uniform access
o  Hybrid communication strategy inside a block
o  Specialized skeletons
Estrategia (general) para Algoritmos Parallel-Prefix
o  Performance parameter tuning
n  Maximizing number of warps and blocks per SM
Estrategia (general) para Algoritmos Parallel-Prefix
o  Performance results:tridiagonal solver
n  BPLG-LF-TS: based en Ladner-Fischer pattern
Kepler Maxwell
Estrategia (general) para Algoritmos Parallel-Prefix
o  Performance results: scan primitive
n  BPLG-LF-SC: based en Ladner-Fischer pattern
n  BPLG-KS-SC: based en Kogge-Stone pattern
Kepler Maxwell
Estrategia (general) para Algoritmos Parallel-Prefix
Introducción
Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre
GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
Mobile devices
Aplicaciones
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
Mobile devices: Nvidia ARM SoCs
Tegra X1(Erista) SoC: CPU
Tegra X1(Erista) SoC: GPU
Tegra X2(Parker) SoC
Xavier SoC
Introducción
Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre
GPUs
BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
Metodología para Algoritmos Índice-Dígito
Nueva estrategia (general) para Algoritmos Parallel-Prefix
Trabajo Futuro
Mobile devices
Aplicaciones:
Multiplicación grandes números, Face detection
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
Aplicaciones: Multiplicación grandes enteros
•  Multiplicación Polinómica basada en FFT: algoritmo de Strassen
•  Máximo interés en criptografía clave pública
•  Algunos resultados preliminares utilizando FFT-ID (BPLG en figura):
Aplicaciones: Detección de caras
•  Utilizan método Integral Image Generation => scan en dos
dimensiones (filas y columnas)
•  Algunas implementaciones (poco eficientes) sobre GPUs en bibliografía basadas en
filtros Haar
Primitiva scan paralela a nivel de warp (vector de entrada x de 32 elementos)


























Ciclo Conferencia Grupo ArTeCS, UCM 

Madrid, 22 Febrero 2018
Diseño eficiente de algoritmos 

Parallel Prefix sobre GPUs
GRACIAS!!

Más contenido relacionado

Similar a Diseño eficiente de algoritmos Parallel Prefix sobre GPUs

Actividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos ParalelosActividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos ParalelosCarlosHung9
 
tema7-algoritmos-2010.pptx
tema7-algoritmos-2010.pptxtema7-algoritmos-2010.pptx
tema7-algoritmos-2010.pptxGuilleWm
 
Que es la supercomputacion una explicacion orientada al mundo empresarial
Que es la supercomputacion   una explicacion orientada al mundo empresarialQue es la supercomputacion   una explicacion orientada al mundo empresarial
Que es la supercomputacion una explicacion orientada al mundo empresarialCein
 
Grupo #2 - Asignación sobre Algoritmos Paralelos
Grupo #2 - Asignación sobre Algoritmos ParalelosGrupo #2 - Asignación sobre Algoritmos Paralelos
Grupo #2 - Asignación sobre Algoritmos ParalelosEmilMoquete2
 
Computación paralela con gp us cuda
Computación paralela con gp us cudaComputación paralela con gp us cuda
Computación paralela con gp us cudaJavier Zarco
 
Rendimiento y consumo energético con python
Rendimiento y consumo energético con pythonRendimiento y consumo energético con python
Rendimiento y consumo energético con pythonpythoncanarias
 
SIMD Single Instruction Multiple Data
SIMD Single Instruction Multiple DataSIMD Single Instruction Multiple Data
SIMD Single Instruction Multiple DataDan Huerta
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxyadhirafelizfajardo
 
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoComputación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoUnai Lopez-Novoa
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Manual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosManual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosJuan Timoteo Cori
 
Incremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-VectorIncremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-VectorSotero Ordones
 
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdfAlgoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdfdarosario3d
 

Similar a Diseño eficiente de algoritmos Parallel Prefix sobre GPUs (20)

Act 14_Analis de algoritmos.pdf
Act 14_Analis de algoritmos.pdfAct 14_Analis de algoritmos.pdf
Act 14_Analis de algoritmos.pdf
 
Actividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos ParalelosActividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos Paralelos
 
tema7-algoritmos-2010.pptx
tema7-algoritmos-2010.pptxtema7-algoritmos-2010.pptx
tema7-algoritmos-2010.pptx
 
Que es la supercomputacion una explicacion orientada al mundo empresarial
Que es la supercomputacion   una explicacion orientada al mundo empresarialQue es la supercomputacion   una explicacion orientada al mundo empresarial
Que es la supercomputacion una explicacion orientada al mundo empresarial
 
Grupo #2 - Asignación sobre Algoritmos Paralelos
Grupo #2 - Asignación sobre Algoritmos ParalelosGrupo #2 - Asignación sobre Algoritmos Paralelos
Grupo #2 - Asignación sobre Algoritmos Paralelos
 
Computación paralela con gp us cuda
Computación paralela con gp us cudaComputación paralela con gp us cuda
Computación paralela con gp us cuda
 
Ricardo - Meetup Python Madrid marzo 2023.pptx
Ricardo - Meetup Python Madrid marzo 2023.pptxRicardo - Meetup Python Madrid marzo 2023.pptx
Ricardo - Meetup Python Madrid marzo 2023.pptx
 
Rendimiento y consumo energético con python
Rendimiento y consumo energético con pythonRendimiento y consumo energético con python
Rendimiento y consumo energético con python
 
SIMD Single Instruction Multiple Data
SIMD Single Instruction Multiple DataSIMD Single Instruction Multiple Data
SIMD Single Instruction Multiple Data
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
 
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoComputación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
 
Equipo 2 gpus
Equipo 2 gpusEquipo 2 gpus
Equipo 2 gpus
 
_Algoritmos.ppt
_Algoritmos.ppt_Algoritmos.ppt
_Algoritmos.ppt
 
Arquitectura isa 1
Arquitectura isa 1Arquitectura isa 1
Arquitectura isa 1
 
Intro Mpi
Intro MpiIntro Mpi
Intro Mpi
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
Manual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosManual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datos
 
Incremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-VectorIncremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-Vector
 
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdfAlgoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
 
Manual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_gManual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_g
 

Más de Facultad de Informática UCM

¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?Facultad de Informática UCM
 
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...Facultad de Informática UCM
 
DRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation ComputersDRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation ComputersFacultad de Informática UCM
 
Tendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmTendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmFacultad de Informática UCM
 
Introduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented ComputingIntroduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented ComputingFacultad de Informática UCM
 
Inteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuroInteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuroFacultad de Informática UCM
 
Design Automation Approaches for Real-Time Edge Computing for Science Applic...
 Design Automation Approaches for Real-Time Edge Computing for Science Applic... Design Automation Approaches for Real-Time Edge Computing for Science Applic...
Design Automation Approaches for Real-Time Edge Computing for Science Applic...Facultad de Informática UCM
 
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...Facultad de Informática UCM
 
Fault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error CorrectionFault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error CorrectionFacultad de Informática UCM
 
Cómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intentoCómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intentoFacultad de Informática UCM
 
Automatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCAutomatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCFacultad de Informática UCM
 
Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...Facultad de Informática UCM
 
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...Facultad de Informática UCM
 
Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.Facultad de Informática UCM
 
Challenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore windChallenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore windFacultad de Informática UCM
 

Más de Facultad de Informática UCM (20)

¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?
 
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
 
DRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation ComputersDRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation Computers
 
uElectronics ongoing activities at ESA
uElectronics ongoing activities at ESAuElectronics ongoing activities at ESA
uElectronics ongoing activities at ESA
 
Tendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmTendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura Arm
 
Formalizing Mathematics in Lean
Formalizing Mathematics in LeanFormalizing Mathematics in Lean
Formalizing Mathematics in Lean
 
Introduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented ComputingIntroduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented Computing
 
Computer Design Concepts for Machine Learning
Computer Design Concepts for Machine LearningComputer Design Concepts for Machine Learning
Computer Design Concepts for Machine Learning
 
Inteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuroInteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuro
 
Design Automation Approaches for Real-Time Edge Computing for Science Applic...
 Design Automation Approaches for Real-Time Edge Computing for Science Applic... Design Automation Approaches for Real-Time Edge Computing for Science Applic...
Design Automation Approaches for Real-Time Edge Computing for Science Applic...
 
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
 
Fault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error CorrectionFault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error Correction
 
Cómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intentoCómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intento
 
Automatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCAutomatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPC
 
Type and proof structures for concurrency
Type and proof structures for concurrencyType and proof structures for concurrency
Type and proof structures for concurrency
 
Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...
 
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
 
Do you trust your artificial intelligence system?
Do you trust your artificial intelligence system?Do you trust your artificial intelligence system?
Do you trust your artificial intelligence system?
 
Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.
 
Challenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore windChallenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore wind
 

Último

CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxvalenciaespinozadavi1
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfIvanRetambay
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxBrayanJavierCalle2
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLdanilojaviersantiago
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesMIGUELANGEL2658
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 

Último (20)

CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdf
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 

Diseño eficiente de algoritmos Parallel Prefix sobre GPUs

  • 1. 
 
 
 
 
 
 
 
 
 
 
 
 
 Ciclo Conferencia Grupo ArTeCS, UCM 
 Madrid, 22 Febrero 2018 Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs R. Doallo
  • 2. Introducción Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito: Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro 42 67 Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 3. Introducción Arquitectura GPU Programabilidad Algoritmos Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito: Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro 42 67 Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 8. GPU: razones altas prestaciones?
  • 10. Single Inst. Multiple Thread (SIMT)
  • 11. Single Inst. Multiple Thread (SIMT)
  • 12. Núcleos sencillos (muchos) Arquitectura (Nvidia) Número de cores Maxwell 1024 - 4098 Pascal 2560 - 3584 Volta 5120
  • 13. Organización básica GPU •  Jerarquía de memoria •  Streaming Multiprocessor (SM)
  • 14. . „ Los threads de un mismo bloque se pueden comunicar usando la memoria compartida. „ Los threads de distintos bloques necesitan recurrir a la memoria global, mucho más lenta. „ La memoria local en realidad es memoria global, aunque según la arquitectura puede ser cacheada. Organización básica GPU: Jerarquía de Memoria 5 67
  • 15. Organización básica GPU: SMs Roadmap GPUs de Nvidia
  • 16. Streaming Multiprocessor: Kepler Arquitectura Kepler . Paso evolutivo: incrementa los recursos y mejora la eficiencia energética. Añade algunas características como instrucciones shuffle o memoria unificada. Las tarjetas con capacidades 3.5 también soportan paralelismo dinámico e Hyper-Q.
  • 17. Maxwell Multiprocessor (SMM) ArquitecturaMaxwell . Mayor eficiencia energética (performance/watt) que Kepler. Incrementa la memoria compartida a 64 KB por SMM (aunque cada bloque seguirá usando como máximo 48 KB). Incrementa la L2. Mejora las atomics en shared memory con soporte nativo en 32-bits.
  • 18. Streaming Multiprocessor: Pascal Arquitectura Pascal . Incrementa el número de cores de doble precisión. Cambia memoria GDDR5 por HBM2 (incrementando muchísimo el ancho de banda). Vuelve a incrementar L2. Introduce soporte para FP16 (deep learning). Introduce NVLINK para high-speed interconexiones entre GPU-GPU y GPU-CPU.
  • 19. Streaming Multiprocessor: Volta Arquitectura Maxwell . Muy enfocadas para Deep Learning: introduce tensor cores. Mejora ancho de banda HBM2, mejora ancho de banda NVLINK. Hasta 2048 threads activos. Independent thread schedulling (cada thread tiene su propio contador de programa). Introduce cooperative groups: grupos de threads a granularidades sub-block o multi-block.
  • 20. Introducción Arquitectura GPU Programabilidad Algoritmos Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito: Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro 42 67 Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 21. 21 GPU Programmability o  Directives n  Such as hiCuda or OpenACC n  To have some GPU expertise
  • 22. 22 GPU Programmability o  Directives n  Such as hiCuda or OpenACC n  To have some GPU expertise
  • 23. 23 GPU Programmability o  Directives n  Such as hiCuda or OpenACC n  Have some GPU expertise o  Automatic Compilers n  Such as Bones or Par4all n  Systematic code translations lead to reduce performance
  • 24. 24 GPU Programmability o  Directives n  Such as hiCuda or OpenACC n  Have some GPU expertise o  Automatic Compilers n  Such as Bones or Par4all n  Systematic code translations lead to reduce performance
  • 25. 25 GPU Programmability o  Directives n  Such as hiCuda or OpenACC n  Have some GPU expertise o  Automatic Compilers n  Such as Bones or Par4all n  Systematic code translations lead to reduce performance o  Accelerated Libraries n  Such as SkePU or SkeCL n  HPC through simple routines without knowledge
  • 26. GPU Programmability o  Directives n  Such as hiCuda or OpenACC n  Have some GPU expertise o  Automatic Compilers n  Such as Bones or Par4all n  Systematic code translations lead to reduce performance o  Accelerated Libraries n  Such as SkePU, SkeCL, BPLG n  HPC through simple routines without knowledge
  • 27. Introducción Arquitectura GPU Programabilidad Algoritmos Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito: Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro 42 67 Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 28. 28 Parallel Prefix Algorithms o  Definition: n  Solves a problem of size N in k steps, depicted by a directed acyclic oriented graph called prefix circuit n  Computations performed by the Node operator (small circles below), and communication patterns regular and known at compile-time. n  Regular algorithms which match well to GPU architectures n  Access pattern does not depend on execution, it can be expressed as a linear function of each element index n  Each resulting element is the combination of previous results of other elements. o  Algorithm examples: n  FFT, DCT, Scan, Sorting, Tridiagonal System Solvers, ...
  • 29. Index-Digit Algorithms o  Subset of Parallel Prefix Algorithms n  Can be represented and modeled according to permutations of each element position's digits Data item x(t), being is represented as x(6) => [0110] n  Constant number of Node operators throughout the steps n  Elements that take part in one Node operator are not used by another Node operator in the same step Index-Digit: FFT pattern Parallel Prefix: scan pattern 12 1 22 tttt n n +⋅++⋅= − … € tn …t2t1[ ]
  • 30. o  La transformada de Fourier es usada para procesar señales en muchas aplicaciones reales n  Procesado de audio, reconocimiento de patrones, tratamiento de imágenes o manipulación de números largos… o  Existen múltiples implementaciones para CPU y GPU. n  Para CPU: FFTW, Spiral, IPP de Intel… n  Las más comunes en GPU son: CUFFT de NVIDIA, clMath de AMD. Fast Fourier Transform (FFT)
  • 31. Sistemas Tridiagonales (I) 7x + y + 3z – 4w = 6 4x – 9y – z + 2w = 5 x + 8y – 2z – 3w = 0 8x – 5y + 4z - w = 1 7 1 3 -4 4 -9 -1 2 1 8 -2 -3 8 -5 4 -1 x y Z w = 6 5 0 1 · 7x + y + 3z – 4w = 6 4x – 9y – z + 2w = 5 x + 8y – 2z – 3w = 0 8x – 5y + 4z - w = 1 x y Z w = 6 5 0 1 · Sistema de ecuaciones convencional . Sistema de ecuaciones tridiagonal . 7 1 3 -4 4 -9 -1 2 1 8 -2 -3 8 -5 4 -1 •  Surgen de forma natural en aplicaciones científicas como la simulación de líquidos o en la propagación del calor.
  • 32. Sistemas Tridiagonales (II) b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 aN-1 bN-1 cN-1 aN bN 0 Ei: aixi-1 + bixi + cixi+1 = di Sistema de ecuaciones tridiagonal . 0 Uso y algoritmos de resolución . •  Los S.T. aparecen en aplicaciones como la simulación de fluidos o la difusión del calor. •  Existen múltiples algoritmos de resolución tanto secuenciales como paralelos. •  En CUDA son conocidos la librería CUSPARSE de NVIDIA y la CUDPP. Forma general de la ecuación Ei 11 67
  • 33. 33 Primitive Scan Taking a binary associative operator , with identity I, and an array of n elements returns: Example with adding: Example with multiplication: 3,1, 7,1, 4 a0, a1, a2, ... ,an 1 0,3,4,11,12 3,1, 7,1, 4 1,3,3,21,21
  • 34. Primitiva Scan Cada elemento es el resultado de aplicar un operando binario (+) sobre él mismo y el elemento anterior. •  Ampliamente utilizado en bases de datos, procesado de imágenes, análisis léxico, evaluación de polinomios, etc..
  • 35. Introducción Diferentes estrategias de diseño para algoritmos Parallel- Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito: Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 36. Estrategias de diseño para algoritmos Parallel-Prefix sobre (CUDA) GPUs o  BPLG: Butterfly Processing Library for GPU architectures o  Jacobo Lobeiras, Margarita Amor, Ramon Doallo. BPLG: A Tuned Butterfly Processing Library for GPU Architectures. International Journal of Parallel Programming (2015) o  Clasification depending on problem size n  Case 1: Problem data fit in shared memory. o  Methodology for Index-Digit Algorithms o  Each problem is assigned to one CUDA block n  J.Lobeiras, M. Amor, R. Doallo. Designing Efficient Index-Digit Algorithms for CUDA GPU Architectures. IEEE Trans. Parallel Distrib. Syst. (2016) o  New strategy for Parallel-Prefix algorithms n  A. Pérez, M. Amor, R. Doallo. Parallel-Prefix Operations on GPU: Tridiagonal System Solvers and Scan Operators. J. Parallel and Distributed Computing (under review). n  Case 2: Data larger than SHM but fit into GM o  Methodology for Index-Digit Algorithms o  Each problem is distributed among several blocks o  Global synchronization needed n  A. Pérez, M. Amor, J. Lobeiras, R. Doallo. Solving Large Problem Sizes of Index-Digit Algorithms on GPU: FFT and Tridiagonal System Solvers. IEEE Trans. Computers (2018) n  Case 3: Data larger than single GPU GM o  New strategy for Parallel-Prefix algorithms o  Each problem is distributed among several GPUs n  A. Pérez, M. Amor, R. Doallo, A. Nukada, S. Matsuoka. Efficient Solving of Scan Primitive on Multi-GPU Systems. IPDPS 2018 (in press).
  • 37. Introducción Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito: Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 38. o  La arquitectura especial de la GPU hace que la programación de librerías eficiente sea una tarea más complicada. Limitaciones de memoria compartida y registros Problemas de coalescencia Ancho de banda y latencia del bus PCI-E S M S MS M Bajo rendimiento en código secuencial o ejecución divergente BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Butterfly Processing Library for GPU architectures (BPLG) Diseño de librerías GPU: Dificultades •  Puede haber decisiones dependientes del hardware y la evolución rápida podría hacer que la mejor opción cambie entre generaciones.
  • 39. o  Las templates de C++ son una herramienta de programación potente y flexible que permite generar múltiples versiones de un algoritmo. Único código para múltiples arquitecturas template< int N, int D, int R, int S > __global__ void SPLG_DCT(float* src, int size) { … __shared__ float* shm[S]; … if(D < 0) scale<R, N/2>(reg); … radix<R, D>(reg, angle); Diseño de librerías GPU: Parametrización •  Las templates pueden usarse para ajustar la librería a la arquitectura, optimizando en tiempo de compilación códigos parametrizados. BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 40. o  Composed by high-level optimized building blocks (skeletons) o  Each block performs a small part of the whole work o  The body of the kernel remains almost costant along algorithms, just changing the Node Operator's building block implementation Implementation on CUDA BPLG : Butterfly Processing Library for GPUs
  • 41. o  BPLG Features n  The use of templates, enabling Generic Programming and Template Metaprogramming. n  Knowing additional info. at compile-time (number of threads, shared memory, ...) enables many optimizations like loop unrolling or data reordering using register renaming. n  All building blocks were designed to operate in any GPU memory space. n  Avoids non-uniform access n  Hybrid communication strategy inside the block n  Uses customized CUDA data types as float4, int4, ... BPLG : Butterfly Processing Library for GPUs
  • 42. Bloques constructivos básicos Creación de algoritmos basada en bloques . Los algoritmos son construidos en base a una serie de bloques constructivos básicos. Cada bloque está formado por una o más plantillas y realiza solo una parte del trabajo. Las funciones se clasifican en dos categorías: operaciones y manipulación de datos. BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 43. Por ejemplo, estos son tres de las templates usadas en los algoritmos: -  Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’ a otro buffer ‘Y’ con un stride opcional ‘ss’. -  BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un stride opcional ‘ss’, de tal forma que el resultado está en orden de bit inverso. -  Butterfly: Realiza la etapa de computación principal de cada paso radix, permite un stride opcional y las operaciones pueden variar con el algoritmo. Diseño de los bloques constructivos Ejemplos de templates usadas en los algoritmos . Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’ a otro buffer ‘Y’ con un stride opcional ‘ss’. BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un stride opcional ‘ss’, de tal forma que el resultado está en orden de bit inverso. Butterfly: Realiza la etapa de computación principal de cada paso radix permitiendo un stride opcional. Las operaciones pueden variar con el algoritmo. BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 44. Por ejemplo, estos son tres de las templates usadas en los algoritmos: -  Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’ a otro buffer ‘Y’ con un stride opcional ‘ss’. -  BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un stride opcional ‘ss’, de tal forma que el resultado está en orden de bit inverso. -  Butterfly: Realiza la etapa de computación principal de cada paso radix, permite un stride opcional y las operaciones pueden variar con el algoritmo. Diseño de los bloques constructivos Ejemplos de templates usadas en los algoritmos . Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’ a otro buffer ‘Y’ con un stride opcional ‘ss’. BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un stride opcional ‘ss’, de tal forma que el resultado está en orden de bit inverso. Butterfly: Realiza la etapa de computación principal de cada paso radix permitiendo un stride opcional. Las operaciones pueden variar con el algoritmo. BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 45. Por ejemplo, estos son tres de las templates usadas en los algoritmos: -  Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’ a otro buffer ‘Y’ con un stride opcional ‘ss’. -  BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un stride opcional ‘ss’, de tal forma que el resultado está en orden de bit inverso. -  Butterfly: Realiza la etapa de computación principal de cada paso radix, permite un stride opcional y las operaciones pueden variar con el algoritmo. Diseño de los bloques constructivos Ejemplos de templates usadas en los algoritmos . Copy: Transfiere ‘N’ elementos desde un buffer ‘X’ con un stride opcional ‘sd’ a otro buffer ‘Y’ con un stride opcional ‘ss’. BitReverse: Reorganiza los elementos de un buffer ‘X’ de tamaño ‘N’ con un stride opcional ‘ss’, de tal forma que el resultado está en orden de bit inverso. Butterfly: Realiza la etapa de computación principal de cada paso radix permitiendo un stride opcional. Las operaciones pueden variar con el algoritmo. BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 46. Cada bloque resuelve problemas de tamaño ‘N’, trabajando sobre ‘S’ elementos. Si ‘S / N > 1’ varios problemas son procesados en batch. El tamaño del radix es seleccionado por ‘R’ y la dirección de la transformada por ‘D’. Algunos algoritmos como la DCT requieren una pequeña etapa auxiliar. En el resto, los datos se cargan de memoria global a registros. El primer paso es siempre un operador opcional de escalado, seguido de una etapa mixed-radix. A continuación, un bucle reordena los datos y computa las etapas radix-R restantes. Ejemplo de algoritmo: DCT (I) BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 47. Cada iteración está compuesta por: 1. Etapa de reordenamiento - Se realiza en memoria compartida con dos operadores copy variando los offsets y strides. - Se requieren sincronizaciones para mantener el orden de ejecución. 2. Etapa de computación - Primero se obtiene el twiddle en función de la etapa y del identificador de thread. - A continuación se llama el operador radix-R sobre los datos en registros. Dependiendo del algoritmo deseado, la etapa de postprocesado puede ser necesaria. Finalmente, los resultados se copian a memoria global. Ejemplo de algoritmo: DCT (II) BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 48. N R Rt L1 L2 L1x2 SB BSM TSM Ocup. 4 2 14 2 64 128 2048 16 2048 1.00 8 2 18 4 32 128 2048 16 2048 1.00 16 2 18 8 16 128 2048 16 2048 1.00 32 2 18 16 8 128 2048 16 2048 1.00 64 4 28 16 8 128 4096 12 1536 0.75 128 4 28 32 4 128 4096 12 1536 0.75 256 4 27 64 2 128 4096 12 1536 0.75 512 4 28 128 1 128 4096 12 1536 0.75 1024 4 27 256 1 256 8192 6 1536 0.75 2048 8 37 256 1 256 16384 3 768 0.38 4096 8 36 512 1 512 32768 1 512 0.25 N Tamaño de problema L1 Threads por problema SB Mem. Shared / bloque R Tamaño de radix L2 Threads en batch BSM Bloques por SM Rt Registros por thread L1x2 Threads por bloque TSM Threads por SM Tabla de parámetros (para una FFT compleja en Kepler) BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 49. •  Los datos residen en la memoria de la GPU, no se realizan transferencias durante las pruebas. •  El rendimiento de señales se mide en GFLOPS usando las expresiones: Datos complejos (ℂ): “5N log2(N)·b·10-9 / t” Datos reales (ℝ): “2.5N log2(N)·b·10-9 / t” •  El rendimiento de sistemas tridiagonales se mide en MRows/s. •  El rendimiento de la primitiva scan se mide en MData/s. Análisis de Rendimiento: metodología de pruebas BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 50. Análisis de rendimiento: BPLG-cFFT BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 51. Análisis de rendimiento: BPLG-rFFT BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 52. Análisis de rendimiento: BPLG-TS BPLG: Una Librería Configurable para Algoritmos tipo Mariposa
  • 53. Introducción Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito Caso 1: SM>=N Caso 2: SM<=N<=GM Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro 42 67 Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 54. Metodología en 2 fases Metodología para Algoritmos Índice-Dígito Recursos compartidos Nivel de paralelismo Coalescencia Conflictos de banco Tuning mapping vector Cadenas de operadores Fase 2 - .. .Operator string manipulation Fase 1 -. . .Análisis de recursos GPU: obtener resource factors
  • 55. Parametrización para asignación de datos a recursos GPU Metodología para Algoritmos Índice-Dígito
  • 56. o  GPU resources utilization analysis phase Problem size where r is the radix and n the number of problem steps N = 16 = 16 elements radix – 2 steps - 4 Acyclic graph -> prefix circuit Data dependences among steps n rN = 4 2 Node Step 1 Step 2 Step 3 Step 4 Metodología para Algoritmos Índice-Dígito
  • 57. o  GPU resources utilization analysis phase Index-Digit representation: Data item x(t) being t, is represented as: For instance: x(6) is written as [0110] 12 1 22 tttt n n +⋅++⋅= − … € tn …t2t1[ ] Metodología para Algoritmos Índice-Dígito
  • 58. o  GPU resources utilization analysis phase Kernel data are divided among: n  blocks, each one executes threads. n  A thread performs data stored in private registers. n  Threads within a block have access to data in shared memory n  Mapping of data can be represented with a 5-tuple of the form (n,p,s,l,b) in our methodology n  Furthermore, problems are simultaneously executed in a batch mode. b rB = l rL = € P = rp € S = rs batches rG = Metodología para Algoritmos Índice-Dígito
  • 59. o  GPU resources utilization analysis phase n  CUDA programming -> n  Also with threads n  In our methodology, all threads in a block within the same threadIdx.y work in the same problem n  Equations: ),( yx bbb = € l = (lx,ly ) lps += ylbatchesb −=nsly −= Metodología para Algoritmos Índice-Dígito
  • 60. o  GPU resources utilization analysis phase Example: { p=2, l=(6,1), b=(8,0) } n  4 elements per thread stored in registers p=2 n  128 threads per block. 64 threads in dimX and 2 threads in dimY n  s=p+l so 512 elements in shared memory n  therefore 256 elements per problem n  256 blocks n  thus 512 problems simultaneously. ylsn −= ylbatchesb −= Metodología para Algoritmos Índice-Dígito
  • 61. o  GPU resources utilization analysis phase We define the following premises: Premise 1: Balance warp and block parallelism. o  Warp parallelism: As many actives warps per SM as possible. o  Block parallelism: As many actives blocks per SM as possible. Even good performance at low warp occupancy (high ILP). Better usage of shared memory. Less synchronization penalty. Premise 2: Increase computational workload per thread. o  Increasing radix r implies reducing steps, that means, synchronization barriers and loop iterations o  Be careful with registers, high register usage implies less warp parallelism and/or register spilling. Metodología para Algoritmos Índice-Dígito
  • 62. Mapping Vector (I) Ejemplo: local space shared space private space signal size block space n: p: s: l: b: Mapping Vector Parameters . • Cada kernel procesará simultáneamente rbatch señales con N = rn datos en una sola invocación, donde r depende del radix elegido. • La ejecución se expresa con una 5-tupla: (n, p, s, l, b) • Si se considera s = p + l para simplificar los intercambios y b = batch – (s – n) => 3 parámetros independientes: (n, p, s) Se representaría como la 5-tupla: (3, 4, 9, 5, 3) La notación se puede simplificar a: (3, 4, 9) Metodología para Algoritmos Índice-Dígito
  • 63. Mapping Vector (II) 1 0 0 0 0 0 1 1 1 1 1 Elemento 1055: b = [ 0 0 ] b = [ 0 1 ] b = [ 1 0 ] l = [ 0 0 0 0 0 ] l = [ 0 0 0 0 1 ] l = [ 1 1 1 1 1 ] p = Metodología para Algoritmos Índice-Dígito
  • 64. Fase 1: Análisis de recursos. Obtención de Resource Factors (I) Obtención Resource Factors . El rendimiento depende en el balance correcto entre el gran número de threads y el uso eficiente de los recursos compartidos en el hardware. Dos principales niveles de paralelismo: - SM warp parallelism - SM block parallelism Metodología para Algoritmos Índice-Dígito
  • 65. Fase 1: Análisis de recursos. Obtención de Resource Factors (II) Recursos compartidos . Los registros y la memoria compartida reservada pueden limitar el nivel de paralelismo. En lo posible, intentaremos favorecer el máximo número de bloques por SM. Metodología para Algoritmos Índice-Dígito
  • 66. Fase 1: Análisis de recursos. Obtención de Resource Factors (II) Recursos compartidos . Los registros y la memoria compartida reservada pueden limitar el nivel de paralelismo. En lo posible, intentaremos favorecer el máximo número de bloques por SM. Metodología para Algoritmos Índice-Dígito
  • 67. Fase 1: Análisis de recursos. Obtención de Resource Factors (III) Ajuste de parámetros . Los parámetros p,s,l pueden ser ajustados en base a las características del hardware. El tamaño del radix será determinado por p, siendo a lo sumo radix-2p. El objetivo es elegir los parámetros p,s,l óptimos para maximizar el rendimiento. Las cadenas de operadores se diseñan en base a los parámetros elegidos. Registers per thread → p Shared mem. bytes/thread → s Warps per block → l Metodología para Algoritmos Índice-Dígito
  • 68. Fase 1: Análisis de recursos. Obtención de Resource Factors (IV) y Diseño Eficiente de Algoritmos Índice-Dígito para GPUs Ajuste de parámetros . Dos configuraciones posibles: l = 5 ⇒ p = s – l = 9 – 5 = 4 l = 6 ⇒ p = s – l = 9 – 6 = 3 Para resolver problemas hasta N = 4096 en un único kernel extendemos l, cambiando paralelismo de bloque por paralelismo de thread. Las configuraciones finales serían: (p, s, l) = { (4, 9, 5) (3, 9, 6) (4, 12, 8) } s = 9
  • 69. Fase 1: Análisis de recursos. Obtención de Resource Factors (V) Ajuste de parámetros . Para optimizar todos los casos creamos cuatro versiones del algoritmo. Para algunos tamaños existen dos configuraciones posibles. En igualdad de condiciones, se elige la que tenga el mayor paralelismo a nivel de warp. Metodología para Algoritmos Índice-Dígito
  • 70. o  Operators string manipulation phase Using the mapping vector and the computation/permutation operators is possible to model any ID-algorithm Metodología para Algoritmos Índice-Dígito
  • 71. o  Operators string manipulation phase Mapping Vector: A compact representation of data distribution on the system memory hierarchy. At the beginning and at the end, data reside in global memory. During execution, data are moved among different GPU resources. [ ]111 tttttt ppssbatchn !!! +++ b l p s Metodología para Algoritmos Índice-Dígito
  • 72. o  Operators string manipulation phase Example: { p=2, l=(6,1), b=(8,0) } 4 elements per thread, 128 threads per block, 512 elements in shared memory, 256 elements per problem, 256 blocks, 2 problems per block, 512 problems simultaneously. [ ]12391017 tttttt !!! b p s l Metodología para Algoritmos Índice-Dígito
  • 73. o  Operators string manipulation phase Example: { p=2, l=(6,1), b=(8,0) } 6th element within third problem is located at: TreadIdx=(1,0) ; register[1] of its thread ; 6th element in shared memory ; BlockIdx=(1,0) s [ ]00001010000000100 b pl Metodología para Algoritmos Índice-Dígito
  • 74. o  Operators string manipulation phase Two types of operators: computation and permutation. n  Node operator (computation): with reads sets of r data whose position differs in their i-digit and writes r results. 0: 00000 Each algorithm defines its own 1: 00001 node operator behavior: 2: 00010 Addition, Gauss reduction, 3: 00011 sorting, ... r iΨ 2 1Ψ ni ≤≤1 Metodología para Algoritmos Índice-Dígito
  • 75. o  Operators string manipulation phase n  Perfect unshuffle operator (permutation): performs a cyclic shift to the right between the i and j-th digits We also define a generalization performing m consecutive shift operations. For example: ji ≥ji,Γ [ ] [ ]11111, ttttttttt jjijinnji !!!! −++=Γ ji m ,Γ [ ] [ ]14567238123456782,7 2 tttttttttttttttt =Γ Metodología para Algoritmos Índice-Dígito
  • 76. o  Operators string manipulation phase n  General unshuffle operator (permutation): performs a cyclic shift to the right between two digits subfields {i..j} and {k..l} For example: € Γi, j,k,l [ ] [ ]11111111,,, tttttttttttttt llkjkjjilinnlkji !!!!!! −++−++=Γ [ ] [ ]26345781123456781,2,6,8 tttttttttttttttt =Γ Metodología para Algoritmos Índice-Dígito
  • 77. Fase 2: Cadenas optimizadas, ID-FFT Transformada de Fourier .. . • Expresión general: Mapping vectorRango n ≤ p (4, 9, 5) p < n ≤ 2p (4, 9, 5) 2p < n ≤ 3p (4, 12, 8) 2p < n ≤ 3p (3, 9, 6) Parámetros (p, s, l ) Expresión particular Metodología para Algoritmos Índice-Dígito
  • 78. Análisis de Rendimiento: ID-cFFT GeForce 580 Max: 492 GFlops Promedio: +5.9% GeForce Titan Max: 803 GFlops Promedio: +0.8% Metodología para Algoritmos Índice-Dígito
  • 79. Análisis de Rendimiento: ID-TS GeForce 580 Max: 4105 MRows Promedio: +238% GeForce Titan Max: 9643 MRows Promedio: +447% Metodología para Algoritmos Índice-Dígito
  • 80. BPLG-cFFT vs ID-cFFT GeForce 580 Promedio: +22.8% GeForce Titan Promedio: +11.3% Comparación Índice-Dígito vs. BPLG
  • 81. BPLG-TS vs ID-TS GeForce 580 Promedio: +3.6% GeForce Titan Promedio: +11.5% Comparación Índice-Dígito vs. BPLG
  • 82. Introducción a la Programación de Propósito General en GPUs Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs Metodología para Algoritmos Índice-Dígito: Caso 1: SM>=N Caso 2: SM<=N<=GM Nueva estrategia para Algoritmos Parallel-Prefix Trabajo Futuro Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 83. The problem is larger than shared memory but still can be stored in global memory Data distributed among several blocks. Each block computes a portion of the solution. It is necessary a synchronizing mechanism for exchanging partial results among blocks Nowadays, there is not any global synchronization barrier for CUDA Metodología para Algoritmos Índice-Dígito (caso 2)
  • 84. But there are some strategies: o  Multi-Stage strategy. Using several kernels (hence forth stages). It uses global memory as information exchanging mechanism. o  CUDA Dynamic Parallelism. A kernel from GPU launches other kernels. Generated code runs slower: Relocatable device code + local memory as stack. o  Persistent threads. As many blocks as the device can simultaneously run (otherwise deadlock). Each block sets a flag, sleeps and waits for the flag reset. A master block will wait for all blocks, doing a flag reset. Metodología para Algoritmos Índice-Dígito (caso 2)
  • 85. Metodología para Algoritmos Índice-Dígito (caso 2) Multi-Stage strategy: tridiagonal solver
  • 86. Metodología para Algoritmos Índice-Dígito (caso 2) Multi-Stage strategy: FFT
  • 87. o  Using more than 1 stage forces to introduce a new parameter in our methodology: m o  This parameter represents the number of stages: o  Also introduces a new Premise: n  Premise 3: The minimization of m. Global memory data exchanges are slower than using other memories. Furthermore, each kernel invocation implies an overhead. o  Thus, s must be as greater as possible. [ ]111 ttttttt ppssnbatchn !!!! +++ b l p s ⎥ ⎥ ⎤ ⎢ ⎢ ⎡ = s n m Metodología para Algoritmos Índice-Dígito (caso 2)
  • 88. o  Combining all premises is not easy: n  Large s sizes implies good warp parallelism but reduces the number of active blocks, decreasing block parallelism. n  Large p values reduces the number of steps per stage but also can generate register spilling and decreases the warp parallelism. n  Raising s in order to minimize m implies reducing block parallelism. Metodología para Algoritmos Índice-Dígito (caso 2)
  • 89. 89 o  Wang&Mou TS Solver. Adjancecy property can be applied in Stage 1 but not in Stage 2. In Stage 2 is necessary to store the whole triad: n  Stage 1 elements are equations float4 type -> 16 bytes n  Other Stage elements are triad of equations 3xfloat4 type -> 48 bytes n  n is splitted in instead of 21 )1( sms ⋅−+ Case 2 Example: TS Solver sm⋅
  • 90. o  The first kernel's shared memory can hold much more elements than the shared memory of other stages. o  It is better to process as many steps as possible in stage 1, it is cheaper. Case 2 Example: TS Solver
  • 92. Case 2: TS Solver
  • 94. Introducción Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 95. o  GPU Resource Utilization Analysis o  CUDA Kernel Optimization o  Performance Parameter Tuning Estrategia (general) para Algoritmos Parallel-Prefix
  • 96. o  Tuning Parameters Estrategia (general) para Algoritmos Parallel-Prefix
  • 97. o  CUDA Kernel Optimization: uses BPLG skeletons (building blocks) n  CUDA features for improving skeleton implementations: o  Efficient-Index calculation avoiding non-uniform access o  Hybrid communication strategy inside a block o  Specialized skeletons Estrategia (general) para Algoritmos Parallel-Prefix
  • 98. o  Performance parameter tuning n  Maximizing number of warps and blocks per SM Estrategia (general) para Algoritmos Parallel-Prefix
  • 99. o  Performance results:tridiagonal solver n  BPLG-LF-TS: based en Ladner-Fischer pattern Kepler Maxwell Estrategia (general) para Algoritmos Parallel-Prefix
  • 100. o  Performance results: scan primitive n  BPLG-LF-SC: based en Ladner-Fischer pattern n  BPLG-KS-SC: based en Kogge-Stone pattern Kepler Maxwell Estrategia (general) para Algoritmos Parallel-Prefix
  • 101. Introducción Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro Mobile devices Aplicaciones Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 107. Introducción Diferentes estrategias de diseño para algoritmos Parallel-Prefix sobre GPUs BPLG: Una Librería Configurable para Algoritmos tipo Mariposa Metodología para Algoritmos Índice-Dígito Nueva estrategia (general) para Algoritmos Parallel-Prefix Trabajo Futuro Mobile devices Aplicaciones: Multiplicación grandes números, Face detection Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs
  • 108. Aplicaciones: Multiplicación grandes enteros •  Multiplicación Polinómica basada en FFT: algoritmo de Strassen •  Máximo interés en criptografía clave pública •  Algunos resultados preliminares utilizando FFT-ID (BPLG en figura):
  • 109. Aplicaciones: Detección de caras •  Utilizan método Integral Image Generation => scan en dos dimensiones (filas y columnas) •  Algunas implementaciones (poco eficientes) sobre GPUs en bibliografía basadas en filtros Haar Primitiva scan paralela a nivel de warp (vector de entrada x de 32 elementos)
  • 110. 
 
 
 
 
 
 
 
 
 
 
 
 
 Ciclo Conferencia Grupo ArTeCS, UCM 
 Madrid, 22 Febrero 2018 Diseño eficiente de algoritmos 
 Parallel Prefix sobre GPUs GRACIAS!!