====== OpenCL ====== OpenCL (OpenComputeLanguage) ist ein Framework um Code auf Grafikprozessoren, Beschleunigern oder auf MehrkernCPUs ausführen zu können. Theoretisch sollte es möglich sein Code ohne neuschreiben auf GPGPUs, CPUs oder Beschleunigern auszuführen. OpenCL ist eine Softwareumgebung, die es ermöglicht Beschleunigerkarten (Grafikkarten, CPUs, ...) anzusprechen und so genannte "Compute Kernels" auszuführen. Diese Kernel enthalten den Quellcode für die parallel auszuführende Berechnung. ===== Inhalt ===== * [[ocl:why|Warum OpenCL?]] * [[ocl:installation|Installation]] * [[ocl:vector|einfache Vektoraddition]] ===== OpenCL Referenz ===== Weder vollständig noch toll. Lieber hier schauen: [[http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/|Khronos.org]] * Plattforminformationen abfragen * [[ocl:reference:clgetplatformids|clGetPlatformIDs]] * [[ocl:reference:clgetplatforminfo|clGetPlatformInfo]] * Gerätinformationen abfragen * [[ocl:reference:clgetdeviceids|clGetDeviceIDs]] * [[ocl:reference:clgetdeviceinfo|clGetDeviceInfo]] * Kontexte * [[ocl:reference:clcreatecontext|clCreateContext]] * [[ocl:reference:clreleasecontext|clReleaseContext]] * Runtime API * Command Queue * [[ocl:reference:clcreatecommandqueue|clCreateCommandQueue]] * [[ocl:reference:clreleasecommandqueue|clReleaseCommandQueue]] * Buffer-Objekt * [[ocl:reference:clcreatebuffer|clCreateBuffer]] * [[ocl:reference:clenqueuereadbuffer|clEnqueueReadBuffer]] * [[ocl:reference:clenqueuewritebuffer|clEnqueueWriteBuffer]] * [[ocl:reference:clreleasememobject|clReleaseMemObject]] * [[ocl:reference:clretainmemobject|clRetainMemObject]] * Program-Objekt * [[ocl:reference:clcreateprogramwithsource|clCreateProgramWithSource]] * [[ocl:reference:clbuildprogram|clBuildProgram]] * [[ocl:reference:clreleaseprogram|clReleaseProgram]] * Kernel-Objekt * [[ocl:reference:clcreatekernel|clCreateKernel]] * [[ocl:reference:clsetkernelArg|clSetkernelArg]] * [[ocl:reference:clreleasekernel|clReleaseKernel]] * Kernel ausführen * [[ocl:reference:clenqueuendrangekernel|clEnqueueNDRangeKernel]] * Flush und Finish * [[ocl:reference:clflush|clFlush]] * [[ocl:reference:clfinish|clFinish]]