computación heterogénea con opencl - amazon s3 · 2015-12-04 · introducción computacion...
TRANSCRIPT
![Page 1: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/1.jpg)
Computación Heterogénea con OpenCL
Flores, FacundoUNSAFac. Cs. Exactas
![Page 2: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/2.jpg)
Introducción OpenCL Ejemplo Conclusiones
COMPUTACION HETEROGENEA
![Page 3: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/3.jpg)
Introducción
COMPUTACION HETEROGENEA
● ¿Qué es?
OpenCL Ejemplo Conclusiones
![Page 4: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/4.jpg)
Introducción
COMPUTACION HETEROGENEA
● ¿Qué es?● Un poco de historia
OpenCL Ejemplo Conclusiones
![Page 5: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/5.jpg)
Introducción
COMPUTACION HETEROGENEA
● ¿Qué es?● Un poco de historia
– Inicios de las GPUs
OpenCL Ejemplo Conclusiones
![Page 6: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/6.jpg)
Introducción
COMPUTACION HETEROGENEA
● ¿Qué es?● Un poco de historia
– Inicios de las GPUs
– El futuro many-core
OpenCL Ejemplo Conclusiones
![Page 7: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/7.jpg)
Introducción
COMPUTACION HETEROGENEA
● ¿Qué es?● Un poco de historia
– Inicios de las GPUs
– El futuro many-core
– Plataformas Heterogéneas
OpenCL Ejemplo Conclusiones
![Page 8: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/8.jpg)
Introducción
COMPUTACION HETEROGENEA
● ¿Qué es?● Un poco de historia
– Inicios de las GPUs
– El futuro many-core
– Plataformas Heterogéneas
– Supercomputadoras
OpenCL Ejemplo Conclusiones
![Page 9: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/9.jpg)
Top 3 de las supercomputadoras del 2010(fuente: OpenCL in Action: How to AccelerateGraphics and Computations by Matthew
Scarpino. 2011)
Introducción OpenCL Ejemplo Conclusiones
![Page 10: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/10.jpg)
Introducción
INTRODUCCION A OPENCL
● Inicios de OpenCL
OpenCL Ejemplo Conclusiones
![Page 11: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/11.jpg)
Introducción
INTRODUCCION A OPENCL
● Inicios de OpenCL● ¿Por qué utilizar OpenCL?
OpenCL Ejemplo Conclusiones
![Page 12: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/12.jpg)
Introducción
INTRODUCCION A OPENCL
● Inicios de OpenCL● ¿Por qué utilizar OpenCL?
– Portabilidad
OpenCL Ejemplo Conclusiones
![Page 13: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/13.jpg)
Introducción
INTRODUCCION A OPENCL
● Inicios de OpenCL● ¿Por qué utilizar OpenCL?
– Portabilidad
– Procesamiento estandarizado de vectores
OpenCL Ejemplo Conclusiones
![Page 14: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/14.jpg)
Introducción
INTRODUCCION A OPENCL
● Inicios de OpenCL● ¿Por qué utilizar OpenCL?
– Portabilidad
– Procesamiento estandarizado de vectores
● Software en el mundo Many-Core– Paralelismo
OpenCL Ejemplo Conclusiones
![Page 15: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/15.jpg)
Introducción
INTRODUCCION A OPENCL
● Inicios de OpenCL● ¿Por qué utilizar OpenCL?
– Portabilidad
– Procesamiento estandarizado de vectores
● Software en el mundo Many-Core– Paralelismo
● Paralelismo de tareas● Paralelismo de datos
OpenCL Ejemplo Conclusiones
![Page 16: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/16.jpg)
Introducción
CONCEPTOS BASICOS DE OPENCL
● Descubrir los componentes de nuestro sistema heterogéneo.
● Determinar las características de las componentes del sistema, para que el software se adapte a los diferentes elementos de hardware.
● Crear los bloques de instrucciones que correrán en la plataforma.
● Configurar y manipular los objetos en memoria involucrados en la computación.
● Ejecutar los kernels en el órden correcto y sobre los dispositivos correctos del sistema.
● Recolectar los resultados finales.
OpenCL Ejemplo Conclusiones
![Page 17: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/17.jpg)
Introducción
GPUsOpenCL Ejemplo Conclusiones
Fuente: CUDA_C_Programming_Guide.pdf
![Page 18: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/18.jpg)
Introducción
CPUs/GPUs
● Intel Core i7-3770(Ivy Bridge)– 4 Cores
– 8 Threads(HT)
– 100GFLOPS
– Incluye una poderosa GPU
– ~1.3 GFLOP/Watt
● NVIDIA GeForce 680 (GK104)– 8 SMs
– 1536 Cores
– 2290 GFLOPS
– ~11.7 GFLOP/Watt
OpenCL Ejemplo Conclusiones
![Page 19: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/19.jpg)
Introducción
MODELO DE EJECUCION
● La aplicación consiste en dos partes:– Programa Host
– Kernels
OpenCL Ejemplo Conclusiones
![Page 20: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/20.jpg)
Introducción
MODELO DE EJECUCION
● La aplicación consiste en dos partes:– Programa Host
– Kernels
OpenCL Ejemplo Conclusiones
![Page 21: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/21.jpg)
Introducción
CONTEXTOOpenCL Ejemplo
● EL HOST:– Define el contexto para los kernels.
– Define el NDRange.
– Define las colas de control.
Conclusiones
![Page 22: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/22.jpg)
Introducción
CONTEXTOOpenCL Ejemplo
● Definimos el contexto a través de los siguientes términos:– Devices
– Kernels
– Program objects
– Memory objects
Conclusiones
![Page 23: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/23.jpg)
Introducción
COMMAND-QUEUESOpenCL Ejemplo
● Comandos:– Ejecución del kernel
– Memoria
– Sincronización
● Modos:– In-Order
– Out-of-order
Conclusiones
Fuente: OpenCL Programming Guide by AaftabMunshi, Benedict Gaster, Timothy G. Mattson andJames Fung. 2011
![Page 24: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/24.jpg)
Introducción
MODELO DE PLATAFORMA OPENCL
● Usuario E/S● CPU, GPU, DSP, etc● Caso
CPU/CUDA-GPU– Streaming
Multiprocessor
– Streaming Processor
OpenCL Ejemplo Conclusiones
Fuente: OpenCL Programming Guide by AaftabMunshi, Benedict Gaster, Timothy G. Mattson andJames Fung. 2011
![Page 25: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/25.jpg)
Introducción
Modelo de MemoriaOpenCL Ejemplo
● Host● Global● Constant● Local● Private
Conclusiones
Fuente: OpenCL Programming Guide by AaftabMunshi, Benedict Gaster, Timothy G. Mattson andJames Fung. 2011
![Page 26: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/26.jpg)
Introducción
Modelo de MemoriaOpenCL Ejemplo
●
Conclusiones
Fuente: OpenCL Programming Guide by AaftabMunshi, Benedict Gaster, Timothy G. Mattson andJames Fung. 2011
![Page 27: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/27.jpg)
Introduction
OpenCLOpenCL Ejemplo
● Buenas nuevas:– C/C++
Conclusiones
![Page 28: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/28.jpg)
Introduction
OpenCLOpenCL Ejemplo
● Malas noticias:– 6 nuevas estructuras de datos:
Conclusiones
![Page 29: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/29.jpg)
Introduction
OpenCLOpenCL Ejemplo
● Malas noticias:– 6 nuevas estructuras de datos:
● Platforms● Devices● Contexts● Programs● Command Queues
Conclusiones
![Page 30: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/30.jpg)
Introduction
Tipos de datos primitivosOpenCL Ejemplo Conclusiones
Fuente: OpenCL in Action: How to AccelerateGraphics and Computations by MatthewScarpino. 2011
![Page 31: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/31.jpg)
Introduction
PlatformsOpenCL Ejemplo
● cl_int clGetPlatformIDs
(
cl_uint num_entries,
cl_platform_id *platforms,
cl_uint *num_plaftorms
)
Conclusiones
![Page 32: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/32.jpg)
Introduction
PlatformsOpenCL Ejemplo
/* Definimos los tipos de datos */cl_platform_id *platforms;cl_uint num_platforms;
/* Conseguimos el numero de plataformas disponibles */
clGetPlatformIDs(5, NULL, &num_platforms);
/* Reservamos la memoria */platforms = (cl_platform_id *) malloc((sizeof(cl_platform_id) * num_platforms);
/* Obtenemos las plataformas */clGetPlatformIDs(num_platforms, platforms, NULL);
Conclusiones
![Page 33: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/33.jpg)
Introduction Discussion
DeviceOpenCL Ejemplo
● cl_int clGetDeviceIDs
(
cl_platform_id id_platform,
cl_device_type device_type,
cl_uint num_entries,
cl_device_id *devices,
cl_uint *num_devices
)
![Page 34: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/34.jpg)
Introduction
ContextsOpenCL Ejemplo
● cl_context clCreateContext
(
const cl_context_properties *properties,
cl_uint num_devices,
const cl_devices *devices,
void CL_CALLBACK *notify_func(...),
void *user_data,
cl_int *error
)
Conclusiones
![Page 35: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/35.jpg)
Introduction
ProgramsOpenCL Ejemplo
● clCreateProgramWithSource
(
cl_context context,
cl_uint src_num,
const char **src_strings,
const size_t *src_sizes,
cl_int *error_code
)
Conclusiones
![Page 36: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/36.jpg)
Introduction
Building ProgramsOpenCL Ejemplo
● clBuildProgram
(
cl_program program,
cl_uint num_devices,
const cl_device_id *devices,
const char *options,
void CL_CALLBACK *notify_func(...),
void *user_data
)
Conclusiones
![Page 37: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/37.jpg)
Introduction
Creando KernelsOpenCL Ejemplo
● clCreateKernelsInProgram
(
cl_program program,
cl_uint num_kernels,
cl_kernel *kernels,
cl_uint *num_kernels_ret
)
Conclusiones
![Page 38: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/38.jpg)
Introduction
Command QueuesOpenCL Ejemplo
● clCreateCommandQueue
(
cl_context context,
cl_device_id device,
cl_command_queue_properties properties,
cl_int *err
)
Conclusiones
![Page 39: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/39.jpg)
Introduction
Encolando kernelsOpenCL Ejemplo
● clEnqueueTask
(
cl_command_queue queue,
cl_kernel kernel,
cl_uint num_events,
const cl_event *wait_list,
cl_event *event
)
Conclusiones
![Page 40: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/40.jpg)
Introduction
KERNELSOpenCL Ejemplo
● Tranferencia de datos
Conclusiones
![Page 41: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/41.jpg)
Introduction
KERNELSOpenCL Ejemplo
● Tranferencia de datos
● Particionamiento
Conclusiones
![Page 42: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/42.jpg)
Introduction
Tranferencia de datosOpenCL Ejemplo
● clSetKernelArg
(
clSetKernel kernel,
cl_uint index,
size_t size,
const void *value
)
Conclusiones
![Page 43: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/43.jpg)
Introduction
Tranferencia de datosOpenCL Ejemplo
● clCreateBuffer
(
cl_context context,
cl_mem_flags options,
size_t size,
void *host_ptr,
cl_int *error
)
Conclusiones
![Page 44: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/44.jpg)
Introduction
Tranferencia de datosOpenCL Ejemplo
● clEnqueueReadBuffer(cl_command_queue context, cl_bool blocking, size_t offset, size_t data_size,
void *ptr, cl_uint num_events,
const cl_event *wait_list,
cl_event *event)
Conclusiones
![Page 45: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/45.jpg)
Introduction
Tranferencia de datosOpenCL Ejemplo
● clEnqueueWriteBuffer(cl_command_queue context, cl_mem buffer, cl_bool blocking, size_t offset,
size_t data_size, const void *ptr,
cl_uint num_events, const cl_event *wait_list, cl_event *event)
Conclusiones
![Page 46: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/46.jpg)
Introduction
Particionamiento de DatosOpenCL Ejemplo
● clEnqueueNDRangeKernel(cl_command_queue context, cl_kernel kernel, cl_uint work_dims, const size_t *global_work_offset, const size_t *global_work_size, const size_t *local_work_size, cl_uint num_events, const cl_event *wait_list, cl_event *event)
Conclusiones
![Page 47: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/47.jpg)
Introduction
Programación del KernelOpenCL Ejemplo
● Tipos de datos– Tipo de datos vector
● Espacios de dirección– __global
– __constant
– __local
– __private
Conclusiones
![Page 48: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/48.jpg)
Introduction
Programación del KernelOpenCL Ejemplo
● Funciones sobre work-items
Conclusiones
Fuente: OpenCL in Action: How to AccelerateGraphics and Computations by MatthewScarpino. 2011
![Page 49: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/49.jpg)
Introduction
Programación del KernelOpenCL Ejemplo
● Funciones sobre work-groups
Conclusiones
Fuente: OpenCL in Action: How to AccelerateGraphics and Computations by MatthewScarpino. 2011
![Page 50: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/50.jpg)
Introduction Methods
EjemploEjemplo Conclusiones
![Page 51: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/51.jpg)
Introduction Methods
Ejemplo: Caso ParticularEjemplo Conclusiones
![Page 52: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/52.jpg)
Introduction Methods
Ejemplo: Análisis de paralelizaciónEjemplo
● Posibilidad de producto punto
Conclusiones
![Page 53: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/53.jpg)
Introduction Methods Discussion
Ejemplo: Análisis de paralelizaciónEjemplo
__kernel void matrix_vector_mult(__global float4* matrix, __global float4 *vector, __global float *result){
int i = get_global_id(0);result[i] = dot(matrix[i],
vector[0]);}
![Page 54: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/54.jpg)
Introduction Methods
Ejemplo: Análisis de paralelizaciónEjemplo Conclusiones
![Page 55: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/55.jpg)
Introduction Methods
Ejemplo: Muestreo de AplicaciónEjemplo
● Matvec.c● Matvec.cl
Conclusiones
![Page 56: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/56.jpg)
Introduction Methods Results
ConclusionesConclusiones
![Page 57: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/57.jpg)
References
Heterogeneous Computing with OpenCL. Benedict Gaster , Lee Howes , David R. Kaeli , Perhaad Mistry, Dana Schaa. 2011
•OpenCL Programming Guide by Aaftab Munshi, Benedict Gaster, Timothy G. Mattson and James Fung. 2011
•OpenCL in Action: How to Accelerate Graphics and Computations by Matthew Scarpino. 2011
![Page 58: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/58.jpg)
Preguntas?
![Page 59: Computación Heterogénea con OpenCL - Amazon S3 · 2015-12-04 · Introducción COMPUTACION HETEROGENEA ¿Qué es? Un poco de historia – Inicios de las GPUs – El futuro many-core](https://reader033.vdocuments.net/reader033/viewer/2022050301/5f6a7844e7184d5c5f293d42/html5/thumbnails/59.jpg)
Muchas gracias!