59
Computación Heterogénea con OpenCL Flores, Facundo UNSA Fac. Cs. Exactas

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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Muchas gracias!