diapositivas curso opencl

52
7/23/2019 Diapositivas Curso OpenCL http://slidepdf.com/reader/full/diapositivas-curso-opencl 1/52 ¿Que es computo paralelo?

Upload: agustin-aboytes

Post on 18-Feb-2018

247 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 1/52

¿Que es computo

paralelo?

Page 2: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 2/52

Cómputo serial

Page 3: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 3/52

Cómputo paralelo

Page 4: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 4/52

CPU vs GPU

Page 5: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 5/52

Diferencia entre CPU y GPU

Page 6: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 6/52

Page 7: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 7/52

Page 8: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 8/52

CPU GPU

Page 9: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 9/52

OpenCL

Page 10: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 10/52

OpenCL (Open Computing Language)

OpenCL es el primer estándar libre y abierto para la

programación paralela de sistemas heterogeneos

Page 11: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 11/52

Page 12: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 12/52

Page 13: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 13/52

o!elo !e "#ecución !e OpenC

Las aplicaciones de OpenCL trabajan en un host queenvía tareas a los dispositivos de computo.

●Contexto: El ambiente donde los work-items se ejecutan.

Estos son los dispositios! memoria y colas de comandos.●Programa : Colección de "ernels y #unciones●Kernel: Codigo para un work-item.●Work tem: La unidad básica de trabajo en OpenCL

$análogo a hilos o procesos%.

Command !ueues" Ejecución en orden o #uera de orden.

Page 14: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 14/52

$or%&items● Los 'ernels son e#ecuta!os a#o un !ominio global !e $or%&item

Los $or%&items se agrupan en or%groups locales● Los $or%&items se pue!en configurar !e a cuer!o a las necesi!a!

algoritmo*

● Dimensiones Gloales+ ,-./0,-./

● Dimensiones Locales+ ,.10,.1

Page 15: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 15/52

o!elo !e emoria !e OpenC

El manejo de Memoria es explícito

Page 16: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 16/52

'ernels

"l con#unto !e uno o mas %ernels se llama prog● Compilación online y offline*

● OpenCL C Language (est2n!ar C33 con alguno

agrega!os)*

● Ca!a $or%&4tem e#ecuta una instancia !el %erne

Page 17: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 17/52

OpenCL en resumen

Page 18: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 18/52

emoria

"n OpenCL5 gran!es o#etos !e memoria principal !el 6ost o !el !i

(GPU5 7celera!or5 etc) necesita un tratamiento especial5 la primera

por9ue esta memoria es relativamente lenta5 la segun!a es por9ue a trav:s !el PC4&"0press toman tiempo*

Page 19: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 19/52

emoria

clCreateBuffer  ( y otras funciones e9uivalentesespecifican una serie !e an!eras 9ue !efinen

comportamiento y utili8ación !e los uffers !e

memoria*

Dic6as an!eras se pue!en clasificar en ; clas

Page 20: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 20/52

<an!eras !e acceso en el !ispos

=CL>">"7D>O@LA+ el %ernel solo pue!e leememoria5 la escritura est2 pro6ii!a*=CL>">$4B">O@LA+ el %ernel solo pue!e e

en la memoria5 la lectura est2 pro6ii!a*=CL>">"7D>$4B"+ el %ernel pue!e leer yen la memoria*

Page 21: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 21/52

<an!eras !e acceso en el 6o

=CL>">OB>$4B">O@LA+ "l 6ost solo pue!e leememoria*=CL>">OB>"7D>O@LA+ "l 6ost solo pue!e esc

la memoria*=CL>">OB>@O>7CC"+ e crea una región !e

memoria en el 6ost5 comparti!a entre !os o m2s %ernelsregión no se permite lectura o escritura por parte !el 6o

"stas an!eras no se pue!en cominar con+

CL>">$4B">O@LA E CL>">COPA>OB>"7D>O@LA

CL>">"7D>O@LA E CL>">COPA>OB>$4B">O@LA

Page 22: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 22/52

<an!eras !e memoria en el 6o

=<vacio> + Comportamiento normal5 escrituras y lecturas

e0plicitas (!e !ispositivo a 6ost y viceversa)*=C!MEM!C"P#!$"%&!P&'+ 7l momento !e crear el

copian los !atos !e memoria !el 6ost al !ispositivo*=C!MEM!("C!$"%&!P&'+ e reserva un espacio

memoria para el !ispositivo (en 7 o GPU) al 9ue el 6o

acceso*

=C!MEM!U%E!$"%&!P&'+ "l uffer !e memoria en e

!ispositivo es Fliga!o a una región !e memoria en el 6os

"stas an!eras no se pue!en cominar con C!MEM!C"P#!$"%&

Page 23: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 23/52

Pinne! emory

"ste tipo !e memoria es especial5 una región !e memori

6ost se liga con una región !e memoria en el !ispositivo5

las transferencias se le !an accesos e0clusivos a ca!a p

(ost y !ispositivo) para leer o escriir a trav:s !e D7

memory access)5 resultan!o en tiempos !e transferencia

menores*

"n OpenCL se 6ailita utili8an!o las an!erasC!MEM!U%E!$"%&!P&' y C!MEM!("C!$"%&

 #unto con las funciones+

=clEn*ueueMapBuffer =clEn*ueueUnmapMem"bject

ff

Page 24: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 24/52

cl"n9ueueap<uffer y

cl"n9ueueUnmapemO#ect

"stas funciones 6acen loc% y un unloc% en regiones !e memoria

=CL>7P>$4B"+ e pue!e escriir en el uffer5 se transferir2

!ispositivo por D7*=CL>7P>"7D+ e pue!e leer el uffer5 se transferir2n !atos

!ispositivo por D7*

=CL>7P>"7D E CL>7P>$4B"+ ar2 transferencias !uralectura y escritura !e la memoria*

Page 25: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 25/52

'ernel y $or%&4tems

Page 26: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 26/52

+or,-items son la unidad b.sica de trabajo en "penC/ estos s

ejecutan en grupos 0 de manera paralela1

os +or,-2tems dentro de un grupo pueden compartir datos 0

sincroni3arse1

$or%&4tems

Page 27: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 27/52

$or%&4tems

4or,!dim in!ica el numero !e

Hn!ices 9ue i!entifican a ca!a$or%&4tem*

global!4or,!si3e es el

nImero total !e $or%&4tems

por ca!a !imensión*

local!4or,!si3e es el nImero

!e $or%&4tems por ca!a

!imensión !e ca!a $or%&

Group*

' l

Page 28: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 28/52

'ernel

= El modelo de programaci5n paralela de

datos en "penC es de dos tipos6= Explícita6 "l programa!or especifica el numero

!e $or%&4tems 9ue e#ecutar2n el %ernel y !efine

la !ivisión !e $or%&4tems entre $or%&Groups*

= 2mplícita6 "l programa!or especifica el numero!e $or%&4tems 9ue e#ecutar2n el %ernel5 y

OpenCL !efinir2 la !ivisión !e $or%&4tems entre

$or%&Groups*

El 7ernel es la funci5n principal *ue se ejecutara en paralelo/ cada

2tem ejecuta una copia del ,ernel1

' l D fi i ió

Page 29: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 29/52

'ernel+ Definición

 >>%ernel voi! Jector7!!(>>gloal float Kvector,5 >>gloal float Kvector.5 >>gloal

uint in!e0 M get>gloal>i!(-)N

totalin!e0 M vector,in!e0 vector.in!e0N

R

voi! Jector7!!(float Kvector,5 float Kvector.5 float Ktotal)

for(int in!e0 M -N in!e0 S J"CBO>4T"N in!e0)

totalin!e0 M vector,in!e0 vector.in!e0N

R

8efin

8efi

' l D fi i ió ! i

Page 30: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 30/52

'ernel+ Definición !e memori

En "penC se debe especificar la regi5n de memoria donde s

los datos1

= !!private emoria e0clusiva !e ca!a $or%&4tem5 no es accesi

otros $or%&4tems*= !!local emoria !e cac6e accesile para to!os los $or%&4tems

!entro !e un $or%&Group5 no es accesile para otros $or%&4tem= !!constant emoria !e solo lectura5 es accesile para to!os los

$or%&4tems= !!global emoria general !e lectura y escritura5 es accesile pa

to!os los $or%&4tems

' l Bi ! D t

Page 31: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 31/52

="scalares= c6ar 5 uc6ar5 s6ort5 us6ort5 int5 uint5 long5 ulong5 float= ool5 intptr>t5 ptr!iff>t5 si8e>t5 uintptr>t5 voi!5 6alf 

=4m2genes= image.!>t5 image;!>t5 sampler>t

=Jectores= Bamaos !e Jector .5 /5 15 y ,V (c6ar.5 us6ort/5 int15 float,V5 !oule.5 W= Operaciones Jectori8a!as= Xunciones nativas

'ernel+ Bipos !e Datos

' l J t

Page 32: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 32/52

'ernel+ Jectores

Page 33: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 33/52

4m2genes

4 2

Page 34: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 34/52

4m2genes

OpenCL posee una serie !e funciones primitivas para la manipulaci

im2genes5 la utili8ación !e im2genes en lugar !e uffers !e !atos peneficioso en ciertos casos*

= Las im2genes se guar!an en el cac6e !e te0turas !el !ispositivo (

soporta)*

= "ste cac6e !e te0tura permite accesos m2s r2pi!os a los ytes*

= asta el est2n!ar ,*.5 las im2genes solo pue!en ser !e solo lectu

escritura*= La creación !e estos uffers es !iferente !el la!o !el 6ost

= "l acceso a los !atos !e la imagen es !iferente !el la!o !el 'erne

4m2genes (ost)

Page 35: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 35/52

4m2genes (ost)

La creación !e uffers !e imagen !es!e el 6ost5 se 6ace a trav:s !e

funciones+

= clCreate2mage98+ crea un uffer !e imagen !e !os !imensiones*

= clCreate2mage:8+ crea un uffer !e imagen !e tres !imensiones*

= clCreate2mage+ crea un uffer !e imagen !e cual9uier tipo*

"stas funciones son an2logas a clCreateBuffer *clCreate2mage98 y clCreate2mage:8 son funciones elimina!as !e

est2n!ar 

,*. y reempla8a!as con clCreate2mage*

4m2genes (ost)

Page 36: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 36/52

4m2genes (ost)

La escritura y lectura !e im2genes es an2loga a la escritura y lectura

= clEn*ueue+rite2mage+ "scrie !atos a una imagen !es!e un apun

6ost*

= clEn*ueue'ead2mage+ Lee los !atos !e una imagen en el !isposit

escriirlos en un apunta!or en el 6ost*

"stas funciones son pareci!as a clEn*ueue+riteBuffer  y clEn*ueu

4m2genes ('ernel)

Page 37: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 37/52

4m2genes ('ernel)

Los tipos !e im2gen 9ue son soporta!os por el %ernel*

= image.!>t+ Una im2gen .D*

= image;!>t+ Una im2gen ;D*

= image.!>array>t+ Un arreglo !e im2genes .D*

= image,!>t+ Una imagen ,D

= image,!>uffer>t+ Una imagen ,D crea!a !es!e uffer 

= image,!>array>t+ Un arreglo !e im2genes !e ,D*

"stos tipos van prece!i!os por los Califica!ores !e acceso+

= >>rea!>only+ olo lectura*

= >>rite>only+ olo escritura*

4m2genes+ Lectura y escritura

Page 38: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 38/52

4m2genes+ Lectura y escritura

"l acceso a los ytes !e las im2genes es a trav:s !e las funciones+

; read!image+ egresa un pi0el en una coor!ena!a estaleci!a*

; 4rite!image+ "scrie un pi0el en una coor!ena!a estaleci!a*

 7!em2s5 read!image re9uiere !e un sampler!t 9ue !efine como se

los pi0eles*

; normali3ed coords

; address mode

; filter mode

Page 39: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 39/52

$or%&groups y incroni8ac

$or% groups y sincroni8ación

Page 40: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 40/52

$or%&groups y sincroni8ación

Un aspecto esencial !el mo!elo !e e#ecución !e OpenCL es la !ef

un 4D Inico gloal y una serie !e 4D Inicos locales para los $or%&4

"stos 4DYs nos permiten i!entificar5 !on!e resi!e ca!a instancia pa'ernel en el espacio !e los Hn!ices*

$or% groups y sincroni8ación

Page 41: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 41/52

$or%&groups y sincroni8ación

Los or%&items se e#ecutan en grupos5 !entro !e estos grupos5 los o

comparten algunos recursos y pue!en sincroni8arse entre ellos*

La sincroni8ación viene a trav:s !e las funciones mem!fence y barr

= mem!fence6 Bo!os los or%&items !entro !el or%&group !een te

lectura o escritura a memoria al pasar esta función5 recie como pa

cual9uiera !e estas !os constantes o cominación +

C7!"C(!MEM!E)CE/ C7!G"B(!MEM!E)CE1

= barrier6 Ca!a or%&items !entro !el or%&group !ee esperar en e

función 6asta 9ue el resto !e los or%&items lleguen5 recie como p

cual9uiera !e estas !os constantes o cominación+

C7!"C(!MEM!E)CE/ C7!G"B(!MEM!E)CE

$or%&groups+ emoria Local

Page 42: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 42/52

$or%&groups+ emoria Local

La memoria local es un cac6e !e latencia muy a#a5 este cac6e es

reparti!o entre to!as las uni!a!es !e computo y es accesile por tlos or%&items !entro !e un or%&group*

"sta memoria es utili8a!a para compartir !atos entre or%&items y

acelerar algunos procesamientos*

Por ser una memoria muy rapi!a5 el tamao !e este cac6e es muy

pe9ueo*

"n el 'ernel5 esta memoria se !eclara con el califica!or !!local

ina0

Page 43: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 43/52

ina0

"l algoritmo !e Is9ue!a !el menor y mayor nImero en un vector

algoritmo iterativo 9ue no se pue!e paraleli8ar con la simple t:cnic!ato por or%&item*

ina0+ paralelo

Page 44: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 44/52

ina0+ paralelo

= Divi!ir el vector en @ su&vectores !e tamao especHfico*=  7signar un su&vector a ca!a or%&group*

= Ca!a or%&item copiara un !ato !el su&vector a un uffer local= "l or%&item - uscar2 el mHnimo y m20imo en el uffer local !e

manera iterativa*= "l resulta!o parcial se guar!ara en una índice especifico !e el v

!e resulta!os5 el or%&item - !e ca!a or%&group incrementa

atómicamente este Hn!ice*

= Cuan!o to!os los or%&items - 6allan termina!o !e encontrar emHnimo y m20imo5 un Iltimo or%&item uscara el mHnimo y m20

final !entro !el vector !e resulta!os*

Page 45: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 45/52

4nteroperaili!a! entreOpenCL y OpenGL

4nteroperaili!a!

Page 46: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 46/52

4nteroperaili!a!

OpenCL y OpenGL son !os 7P4 con una eficiente interoperaili!a!

un la!o OpenCL esta !isea!o para computo paralelo para !iferen

plataformas5 mientras 9ue OpenGL es una popular 7P4 gr2fica*

"sta interoperaili!a! rin!a algunas venta#as+

= La programación !e %ernels en OpenCL es mas sencillo 9ue uti

lengua#e !e somrea!o !e OpenGL (GLL)*= "l cómputo !e %ernels es asHncrono al sistema !e ren!er !e Op= OpenCL funciona en otros !ispositivos a!em2s !e las GPUYs*= @o 6ay necesi!a! !e transferencias por el PC4e*

4nteroperaili!a!

Page 47: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 47/52

4nteroperaili!a!

"sta interoperaili!a! se logra crean!o un conte0to comparti!o en

OpenCL y OpenGL*

4nteroperaili!a!

Page 48: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 48/52

4nteroperaili!a!

ailitar esta interoperaili!a! se 6ace a trav:s !e la función clCreateContext

primer par2metro !e la función !efine las propie!a!es !el conte0to*

"stas propie!a!es !epen!en !el sistema operativo+

  7 trav:s !e un Conte0to ' en Linu0 y $in!os+= Linu0

= gl=GetCurrentContext= gl=GetCurrent8ispla0

= $in!os= 4glGetCurrentContext

= 4glGetCurrent8C

A a trav:s !e un 6aregroup en ac+

= CGGetCurrentContext= CGGet%areGroup

4nteroperaili!a!+ anipulación !e Be0tu

Page 49: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 49/52

e ope a !a! a pu ac ó !e e u

OpenCL crea un uffer !e memoria !es!e una Be0tura OpenGL

e0istente*

"ste uffer se crea con la función clCreateromG&exture*

Las Be0turas OpenGL son interpreta!as como im2genes en Ope

manipulan en el %ernel con las funciones 4rite!image5 read!im

anipulación !e Be0turas5 pasos

Page 50: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 50/52

p 5 p

= Crear la te0tura OpenGL con la función gl&ex2mage98 (!ee

uffer @ULL)*

= Crear el uffer !e memoria en OpenCL con clCreateromGesta función recie el 4D !e la te0tura OpenGL*

 7ntes !e !iu#ar la escena+

= <lo9uear la te0tura con clEn*ueue(c*uireG"bjects para

OpenGL no interfiera*= "#ecutar el %ernel 9ue manipula la te0tura*= Lierar la te0tura con clEn*ueue'eleaseG"bjects para 9u

OpenGL pue!a !iu#arla*

4nteroperaili!a!+ anipulación !e <uffe

Page 51: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 51/52

p p

OpenCL es capa8 !e acce!er a otros tipos !e uffer !e OpenG

como Jertices5 @ormales5 Colores5 "lementos5 etc*

"stos uffers5 a !iferencia !e las te0turas5 se pue!en utili8ar co

y escritura a la ve8*

Las variales !e acceso a estos uffers !e OpenGL se 6acen a

la función clCreateromGBuffer *

anipulación !e <uffer5 pasos

Page 52: Diapositivas Curso OpenCL

7/23/2019 Diapositivas Curso OpenCL

http://slidepdf.com/reader/full/diapositivas-curso-opencl 52/52

p 5 p

= Crear los uffers OpenGL con la función glGenBuffers= Crear el uffer !e memoria en OpenCL con clCreateromG

esta función recie el 4D !el uffer OpenGL*

 7ntes !e !iu#ar la escena+

= <lo9uear los uffers con clEn*ueue(c*uireG"bjects para

OpenGL no interfiera*

= "#ecutar el %ernel 9ue manipula los uffers*= Lierar los uffers con clEn*ueue'eleaseG"bjects para 9

OpenGL pue!a !iu#arlos*