48
OpenCL modul – 2. óra: Első rész

OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

  • Upload
    leque

  • View
    233

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

OpenCL modul – 2. óra: Első rész

Page 2: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

OpenCL API – fontos eljárások 3 Példaprojekt

Üres

Lekérdezések

OpenGL / OpenCL együttműködés

Page 3: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL
Page 4: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

Hasznos linkek

http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/ Webes specifikáció

http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf PDF formátumú specifikáció

https://code.google.com/p/opencl-book-samples/ Az OpenCL Programming Guide könyv példakódjai

Page 5: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL
Page 6: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clGetPlatformIDs( cl_int num_entries,cl_platform_id *platforms,cl_uint *num_platforms);

num_entries: lekérdezendő elemek száma platforms: platform-azonosítók num_platforms: platformok száma

C++ vector<Platform> platforms;

Platform::get(&platforms);

Page 7: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clGetPlatformInfo(cl_platform_id platform,cl_platform_info param_name,size_t param_value_size,void *param_value,size_t *param_value_size_ret);

platform: a kiválasztott platform azonosítója param_name: a lekérdezendő információ param_value_size: információ max mérete (byte) param_value: az információ tárolója param_value_size_ret: a visszaadott információ mérete

Page 8: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

param_name: a lekérdezendő információ

cl_platform_info CL_PLATFORM_PROFILE CL_PLATFORM_VERSION CL_PLATFORM_NAME CL_PLATFORM_VENDOR CL_PLATFORM_EXTENSIONS

Használat C

▪ ret = clGetPlatformInfo(platform_id, CL_PLATFORM_NAME, sizeof(string), string, NULL);

C++▪ try {

platform.getInfo<CL_PLATFORM_NAME >();} catch(Error error) { … }

Page 9: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clGetDeviceIDs(cl_platform_id platform,cl_device_type device_type,cl_uint num_entries,cl_device_id *devices,cl_uint *num_devices)

device_type: a lekérdezendő eszközök típusa

cl_device_type CL_DEVICE_TYPE_CPU CL_DEVICE_TYPE_GPU CL_DEVICE_TYPE_ACCELERATOR CL_DEVICE_TYPE_DEFAULT CL_DEVICE_TYPE_ALL

C++ vector<Device> devices; platform.getDevices(CL_DEVICE_TYPE_DEFAULT, &devices);

Page 10: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

01_Empty

Feladat 1:Listázd ki minden platform nevét!

Feladat 2:Listázd ki mindegyik platformhoz, hogy hány eszközt tartalmaz!

Page 11: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL
Page 12: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clGetDeviceInfo(cl_device_id device,cl_device_info param_name,size_t param_value_size,void *param_value,size_t *param_value_size_ret)

C++ string name =

device.getInfo<CL_DEVICE_NAME>();

Page 13: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

CL_DEVICE_TYPE CL_DEVICE_COMPILER_AVAILABLE CL_DEVICE_NAME CL_DEVICE_VENDOR CL_DEVICE_VERSION CL_DEVICE_EXTENSIONS

cl_device_info

C++string name = device.getInfo<CL_DEVICE_NAME>();

Page 14: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

CL_DEVICE_MAX_COMPUTE_UNITS CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS CL_DEVICE_MAX_WORK_ITEM_SIZES CL_DEVICE_MAX_WORK_GROUP_SIZE CL_DEVICE_AVAILABLE

cl_device_info

Page 15: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

CL_DEVICE_MAX_PARAMETER_SIZE CL_DEVICE_MAX_MEM_ALLOC_SIZE CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE CL_DEVICE_MAX_CONSTANT_ARGS CL_DEVICE_GLOBAL_MEM_SIZE CL_DEVICE_LOCAL_MEM_SIZE CL_DEVICE_IMAGE_SUPPORT

cl_device_info

Page 16: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

01_Empty

Feladat3:Listázd ki mindegyik eszköz nevét és globális memóriájának méretét!

02_Queries

Page 17: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL
Page 18: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_context clCreateContext(const cl_context_properties *props,cl_uint num_devices,const cl_device_id *devices,void (*pfn_notify)(...),void *user_data,cl_int *errcode_ret);

props: tulajdonság – érték lista CL_CONTEXT_PLATFORM – cl_platform_id

num_devices: a kontextushoz tartozó eszközök száma device: a kontextushoz tartozó eszközök listája pfn_notify: callback függvény a hibakezeléshez user_data: felhasználói információ

a pfn_notify függvény kapja meg errcode_ret: hiba információ

Page 19: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_context clCreateContext(const cl_context_properties *props,cl_uint num_devices,const cl_device_id *devices,void (*pfn_notify)(...),void *user_data,cl_int *errcode_ret);

props: tulajdonság – érték lista cl_context_properties cps[3] = {

CL_CONTEXT_PLATFORM, (cl_context_properties)(platforms[0])(), 0

};

C++Context context( CL_DEVICE_TYPE_GPU, cps );

Page 20: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_context clCreateContext(const cl_context_properties *props,cl_uint num_devices,const cl_device_id *devices,void (*pfn_notify)(...),void *user_data,cl_int *errcode_ret);

pfn_notify: callback függvény a hibakezeléshez aszinkron hibajelzéshez szálbiztos implementáció kell a függvényhez Paraméterek:

▪ const char* errinfo: a hiba szövege▪ const void* private_info: implementáció függő hibakereső adat▪ size_t cb: a private_info mérete (byte)▪ void *user_data: felhasználói információ

Page 21: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

clRetainContext(cl_context context) Referencia-számláló növelése

clReleaseContext(cl_context context) Referencia-számláló csökkentése

clGetContextInfo(cl_context context, …); cl_context_info

▪ CL_CONTEXT_REFERENCE_COUNT

▪ CL_CONTEXT_DEVICES

▪ CL_CONTEXT_PROPERTIES

Page 22: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

02_Queries

(Kontextus létrehozása)

Page 23: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL
Page 24: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_command_queueclCreateCommandQueue(cl_context context,cl_device_id device,cl_command_queue_properties properties,cl_int *errcode_ret);

properties CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE

CL_QUEUE_PROFILING_ENABLE

Page 25: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

Implicit szinkronizáció

Eseményre várakozás

cl_int clEnqueueWaitForEvents(cl_command_queue queue,cl_uint num_events,const cl_event *event_list);

Explicit szinkronizáció

Barrier

cl_int clEnqueueBarrier(cl_command_queue queue);

Page 26: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

Minden hívás elküldése az eszközre

cl_int clFlush(cl_command_queue queue);

Minden hívás fusson le az eszközön

cl_int clFinish(cl_command_queue queue);

Page 27: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

clRetainCommandQueue(cl_command_queue queue) Referencia-számláló növelése

clReleaseCommandQueue(cl_command_queue queue) Referencia-számláló csökkentése

clGetCommandQueueInfo(cl_command_queue queue,cl_command_queue_info param_name, …)

cl_command_queue_info CL_QUEUE_CONTEXT

CL_QUEUE_DEVICE

CL_QUEUE_PROPERTIES

CL_QUEUE_REFERENCE_COUNT

Page 28: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL
Page 29: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

Buffer objektum lineáris memória terület

skalár, vektor, struktúra típus

pointeren keresztül címezhető

Image objektum 2D, 3D memória terület

előre definiált textúra formátumok

samplereken keresztül címezhető

Page 30: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_mem clCreateBuffer(cl_context context,cl_mem_flags flags,size_t size, // a buffer mérete (byte) void *host_ptr, // előre lefoglalt memória területcl_int *errcode_ret)

cl_mem_flags CL_MEM_READ_WRITE CL_MEM_WRITE_ONLY CL_MEME_READ_ONLY CL_MEM_USE_HOST_PTR CL_MEM_ALLOC_HOST_PTR CL_MEME_COPY_HOST_PTR

Page 31: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clEnqueueReadBuffer(cl_command_queue command_queue,cl_mem buffer, // az olvasandó memória objektum cl_bool blocking_read, // bevárja-e az olvasás befejeztét? size_t offset, // az olvasandó memória offszetesize_t cb, // az olvasandó méret void *ptr, // az olvasás céljacl_uint numEventsInWaitList, // bevárandó események száma const cl_event *event_wait_list, // bevárandó események cl_event *event) // az olvasás végét jelző esemény

cl_int clEnqueueWriteBuffer(cl_command_queuecommand_queue, …);

Page 32: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clEnqueueCopyBuffer(cl_command_queue command_queue,cl_mem src_buffer, // a másolandó memóriacl_mem dst_buffer, // a cél memóriasize_t src_offset, // a másolandó memória offszetesize_t dst_offset, // a cél memória offszetesize_t cb, // a másolandó memória méretecl_uint num_events_in_wait_list,const cl_event *event_wait_list,cl_event *event)

Page 33: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clRetainMemObject(cl_mem memobj) Referencia-számláló növelése

cl_int clReleaseMemObject(cl_mem memobj) Referencia-számláló csökkentése

cl_int clGetMemObjectInfo(cl_mem memobj,cl_mem_info param_name, …)

Memória objektum információk

cl_mem_info CL_MEM_TYPE, CL_MEM_FLAGS, CL_MEM_SIZE,

CL_MEM_MAP_COUNT, CL_MEM_HOST_PTR, CL_MEM_REFERENCE_COUNT, CL_MEM_CONTEXT, CL_MEM_ASSOCIATED_MEMOBJECT, CL_MEM_OFFSET

Page 34: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL
Page 35: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

Program objektum

Kontextus információk

Program forrása vagy bináris reprezentáció

Az utolsó sikeresen lefordított program

Fordítási információk▪ fordítási opciók

▪ Log

Kernel objektumok száma

Page 36: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_program clCreateProgramWithSource(cl_context context,cl_uint count, // a források száma const char **strings, // a program forrásaconst size_t *lengths, // a források hosszacl_int *errcode_ret)

Page 37: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_program clCreateProgramWithBinary(cl_context context,cl_uint num_devices,const cl_device_id *device_list,

// a program álltal használt eszközök

const size_t *lengths,const unsigned char **binaries,

// az eszközökhöz tartozó bináris kód

cl_int *binary_status,// sikeres volt-e a betöltés

cl_int *errcode_ret)

Page 38: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clBuildProgram(cl_program program,

// a fordítandó program objektumcl_uint num_devices,

// az eszközök száma a fordításhozconst cl_device_id *device_list,

// a céleszközök listájaconst char* options,

// programfordítási opciókvoid (*pfn_notify)(...), void *user_data)

Page 39: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

Matematikai viselkedés -cl-single-precision-constant

-cl-denorms-are-zero Fordító viselkedés

-w

-Werror Optimalizáció

-cl-opt-disable

-cl-strict-aliasing

-cl-mad-enable

-cl-no-signed-zeros

-cl-unsafe-math-optimizations

-cl-finite-math-only

-cl-fast-relaxed-math

OpenCL 1.1 Reference / 5.6.3 Build Options

Page 40: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clGetProgramBuildInfo(cl_program program,cl_device_id device,cl_program_build_info param_name,size_t param_value_size,void *param_value,size_t *param_value_size_ret)

cl_program_build_info CL_PROGRAM_BUILD_STATUS

CL_PROGRAM_BUILD_OPTIONS

CL_PROGRAM_BUILD_LOG

… stb.

OpenCL 1.1 Reference / 5.6.3 Build Options

Page 41: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clRetainProgram(cl_program program) cl_int clReleaseProgram(cl_program program) cl_int clGetProgramInfo(

cl_program program,cl_program_info param_name, …)

cl_program_info CL_PROGRAM_DEVICES CL_PROGRAM_SOURCE CL_PROGRAM_BINARIES … stb.

Page 42: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL
Page 43: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_kernel clCreateKernel(cl_program program,const char *kernel_name,cl_int *errcode_ret)

cl_int clGetKernelInfo(cl_kernel kernel,cl_kernel_info param_name, …)

cl_kernel_info▪ CL_KERNEL_FUNCTION_NAME

▪ CL_KERNEL_NUM_ARGS

▪ CL_KERNEL_PROGRAM

Page 44: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clSetKernelArg(cl_kernel kernel,cl_uint arg_index, // az állítandó paraméter indexesize_t arg_size, // … méreteconst void *arg_value) // … értéke

OpenCL C kernel code__kernel void hello(const int count, __global float* data) { … }

CclSetKernelArg(helloKernel_id, 0, sizeof(int), dataCount);clSetKernelArg(helloKernel_id, 1, sizeof(dataPtr), &dataPtr);

C++helloKernel.setArg(0, dataCount);helloKernel.setArg(1, sizeof(dataPtr), &dataPtr);

Page 45: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clGetKernelWorkGroupInfo(cl_kernel kernel,cl_device_id device,cl_kernel_work_group_info pname, …)

cl_kernel_work_group_info CL_KERNEL_WORK_GROUP_SIZE

CL_KERNEL_COMPILE_WORK_GROUP_SIZE

CL_KERNEL_LOCAL_MEM_SIZE

Page 46: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

cl_int clEnqueueNDRangeKernel(cl_command_queue queue,cl_kernel kernel,cl_uint work_dim, // az NDRange dimenziójaconst size_t *global_work_offset, // NULLconst size_t *global_work_size, // a teljes problématér méreteconst size_t *local_work_size, // egy munka csoport méretecl_uint num_events_in_wait_list,const cl_event *event_wait_list,cl_event *event)

cl_int clEnqueueTask (cl_command_queue queue, …) cl_int clEnqueueNativeKernel (cl_command_queue queue, …)

Page 47: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

03_GLCL_Interoperation Textúra módosítása

VBO módosítása

Feladat: Hullámforma textúra kirajzolása

Feladat: Mandelbrot halmaz

Házi:

3D hullám

Page 48: OpenCL modul –2. óra: Első rész - cg.inf.elte.hucg.inf.elte.hu/~gpgpu/opencl/help_OpenCL_API.pdfOpenCL API –fontos eljárások 3 Példaprojekt Üres Lekérdezések OpenGL

Köszönöm a figyelmet!