Actualizado el 29 de Julio del 2018 (Publicado el 27 de Mayo del 2018)
822 visualizaciones desde el 27 de Mayo del 2018
495,9 KB
27 paginas
Creado hace 9a (14/10/2015)
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Computación en Manycores
Metodología de la Programación Paralela
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Contenidos
1 Sistemas
2 GPGPU
3
Intel Xeon Phi
4 Prácticas
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
GPU: Graphic Processing Units
Inicialmente para procesamiento de gráficos.
También se puede hacer GPGPU: General Processing GPU
MIC: Many Integrated Cores
Alternativa de Intel a GPU: Xeon Phi.
Programación más cercana a la paralela estándar.
FPGA: Field Programmable Gate Array
Bloques lógicos reprogramables.
Son similares a circuitos integrados pero de propósito general.
DSP: digital signal processor
Hardware y software especializados para hacer operaciones
numéricas a gran velocidad.
Para procesado de señales.
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
GPU: Graphic Processing Units
Inicialmente para procesamiento de gráficos.
También se puede hacer GPGPU: General Processing GPU
MIC: Many Integrated Cores
Alternativa de Intel a GPU: Xeon Phi.
Programación más cercana a la paralela estándar.
FPGA: Field Programmable Gate Array
Bloques lógicos reprogramables.
Son similares a circuitos integrados pero de propósito general.
DSP: digital signal processor
Hardware y software especializados para hacer operaciones
numéricas a gran velocidad.
Para procesado de señales.
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
GPU: Graphic Processing Units
Inicialmente para procesamiento de gráficos.
También se puede hacer GPGPU: General Processing GPU
MIC: Many Integrated Cores
Alternativa de Intel a GPU: Xeon Phi.
Programación más cercana a la paralela estándar.
FPGA: Field Programmable Gate Array
Bloques lógicos reprogramables.
Son similares a circuitos integrados pero de propósito general.
DSP: digital signal processor
Hardware y software especializados para hacer operaciones
numéricas a gran velocidad.
Para procesado de señales.
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
GPU: Graphic Processing Units
Inicialmente para procesamiento de gráficos.
También se puede hacer GPGPU: General Processing GPU
MIC: Many Integrated Cores
Alternativa de Intel a GPU: Xeon Phi.
Programación más cercana a la paralela estándar.
FPGA: Field Programmable Gate Array
Bloques lógicos reprogramables.
Son similares a circuitos integrados pero de propósito general.
DSP: digital signal processor
Hardware y software especializados para hacer operaciones
numéricas a gran velocidad.
Para procesado de señales.
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
General-Purpose Computation on Graphics Processing
Units
Procesadores gráficos en todos los sistemas computacionales.
Muchas veces para juegos, pero también se pueden usar para
computación.
Disponen de muchos cores pequeños.
Son baratos, y se puede conseguir mayores aceleraciones a un
coste bajo.
Pero la programación es más compleja.
En algunos centros de supercomputación se incluyen GPU en
los sistemas (consultar TOP 500).
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Software para GPU
2006: NVIDIA introduce la arquitectura unificada (CUDA)
con la presentación de la NVIDIA GeForce 8800.
GPUs de NVIDIA compatibles con CUDA
Modelos: GeForce, Tesla, Quadro
2009: OpenCL, GPGPU para plataformas gráficas
Intenta convertirse en un estándar.
Hay disponibles librerías optimizadas para GPU (álgebra
lineal, ordenación, transformada de Fourier...)
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
CUDA
Arquitectura hardware y software:
Uso de GPU, construida a partir de la replicación de un bloque
constructivo básico, como acelerador con memoria integrada
Estructura jerárquica de threads mapeada sobre el hardware
Gestión de memoria explícita
Creación, planificación y ejecución transparente de miles de
threads de manera concurrente
Extensiones del lenguaje C/C++ junto con CUDA Runtime
API
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Arquitectura Hardware y Software
GPU = N * Streaming Multiprocessors (SMs)
SM = 8 * Streaming Processors (SPs)
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Arquitectura Hardware y Software
Los procesadores (SPs)
Realizan operaciones escalares sobre enteros/reales 32 bits
Ejecutan threads independientes pero todos deberían ejecutar
la instrucción leída por la Instruction Unit (IU) en cada
instante:
Single Instruction Multiple Thread (SIMT), explotación de
paralelismo de datos y, en menor medida, de tareas
Los threads son gestionados por el hardware en cada SM:
Creación y cambios de contexto con coste despreciable
Se libera al programador de realizar estas tareas
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Arquitectura Hardware y Software
Las partes del código paralelizadas para ejecutarse en la GPU
se denominan kernels
Un kernel descompone un problema en un conjunto de
subproblemas y lo mapea sobre un grid
Grid: vector 1D o 2D de thread blocks. Cada thread block
tiene su BID (X,Y) dentro del grid
Thread blocks: vector 1D, 2D o 3D de threads. Cada thread
tiene su TID (X,Y,Z) dentro de su thread block
Los threads utilizan su BID y TID para determinar el trabajo
que tienen que hacer (SPMD)
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Arquitectura Hardware y Software
Las partes del código paralelizadas para ejecutarse en la GPU
se denominan kernels
Un kernel descompone un problema en un conjunto de
subproblemas y lo mapea sobre un grid
Grid: vector 1D o 2D de thread blocks. Cada thread block
tiene su BID (X,Y) dentro del grid
Thread blocks: vector 1D, 2D o 3D de threads. Cada thread
tiene su TID (X,Y,Z) dentro de su thread block
Los threads utilizan su BID y TID para determinar el trabajo
que tienen que hacer (SPMD)
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Modelo de memoria
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Ejemplo
Cálculo de y = αx + y (saxpy):
void saxpy serial(int n,float *y,float alpha,float *x) {
for(int i=0;i<n;i++)
y[i]=alpha*x[i]+y[i];
}
/* Llamada código secuencial */
saxpy serial(n,y,2.0,x);
global
/* Código GPU */
void saxpy parallel(int n,float *y,float alpha,float *x) {
int i=blockIdx.x*blockDim.x+threadIdx.x;
if (i<n) y[i]=alpha*x[i]+y[i];
}
/* Llamada código paralelo desde código CPU */
int nblocks=(n+255)/256;
saxpy parallel<<<nblocks,256>>>(n,y,2.0,x);
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Ejecución
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Resultados experimentales
En http://dis.um.es/~domingo/investigacion.html:
Murilo Boratto, Pedro Alonso, Domingo Giménez: Using
Experimental Data to Improve Performance Modelling of the
Matrix Polynomials on Multicore and Multi-GPU, International
Conference on Computational and Mathematical Methods in
Science and Engineering, Rota, Cádiz, July 6-10, 2015.
Gregorio Bernabé, Javier Cuenca, Luis-Pedro García, Domingo
Giménez: Auto-tuning Techniques for Linear Algebra Routines
on Hybrid Platforms, extension of the paper in ICCS 2014,
Journal of Computational Science, published on-line April
2015.
Gregorio Bernabé, Javier Cuenca, Domingo Giménez: An
Autotuning Engine for the 3D Fast Wavelet Transform on
Clusters with Hybrid CPU+GPU Platforms, International
Journal of Parallel Programming, published online 15 October
2014.
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Resultados experimentales
En http://luna.inf.um.es/grupo investigacion:
Proyectos de Tomás Ramírez y Carlos Pérez, sobre cálculo de
funciones de Green, 2011 y 2012.
Tesis de Máster de Baldomero Imbernón, Técnicas heurísticas
paralelas en acoplamiento de compuestos bioactivos, UMU,
2015.
Tesis doctoral de Murilo do Carmo Boratto, Modelos paralelos
para la resolución de problemas de ingeniería agrícola, UPV,
2015.
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Características
Hasta 61 cores (1.0/1.3
GHz), basados en x86
(Pentium) direccionamiento
de 64 bits.
Cores con una VPU con 32
registros de 512 bits
(SIMD).
Cada core soporta 4 threads
por hardware.
Interconexión de bus en
anillo bidireccional.
Hasta 6 GBytes GDDR5.
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Software
Intel MPSS (Manycore Platform Software Stack):
permite que los programas se ejecuten y se comuniquen con el
coprocesador Intel Xeon Phi.
Compiladores Offload: Intel C/C++ y Fortran 2013
Capaces de generar código que se ejecuta sólo en el host o en
el coprocesador,
o parejas de binarios que se ejecutan tanto en el host como en
el coprocesador y se comunican entre ellos.
Entornos de programación paralela,
los mismos que en el host: Intel Threading Building Blocks,
Pthreads, OpenMP, MPI.
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Funcionamiento
El coprocesador tiene memoria flash y SMC para almacenar la
BIOS, el bootloader, el firmware y un pequeño kernel
embebido para el coprocesador.
El coprocesador ejecuta un microkernel de Linux.
El kernel embebido se carga desde la flash cuando el
coprocesador se inicializa.
El microkernel de Linux se carga desde el host cuando el
coprocesador se arranca.
El coprocesador no dispone de acceso a un sistema de
archivos permanente. Los sistemas de archivos son RAM
(residente en la memoria del coprocesador) o sistemas de
archivos en red (montado vía NFS desde el host).
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Ejecución
Modos de ejecución:
Código offload:
Ejecución en el host y lanza trabajos al coprocesador.
No se necesita que el usuario esté dado de alta en el
coprocesador.
Código nativo:
Se lanza la ejecución desde el coprocesador.
En OpenMP código idéntico al de multicore.
Sistemas
GPGPU
Intel Xeon Phi
Prácticas
Ejemplo de código offload
Secuencial:
double reduction(double *data, int size) {
double ret = 0.0;
#pragma offload target(mic) in(data:length(size))
for (int i = 0; i < size; i++) {
ret += data[i];
}
return ret;
}
En OpenMP:
double omp_reduction(double *data, int size) {
double ret = 0.0;
#pragma offload target(mic) in(data:length(size)) {
#pragma omp parallel for reduction(+:ret)
Comentarios de: Computación en Manycores (0)
No hay comentarios