OpenCL ApplicationOpenCL ApplicationOpenCLplatformsOpenCLplatformsOpenCLdevicesOpenCLdevicesOpenCLContextOpenCLContextOpenCLCommandQueueOpenCLCommandQueueOpenCLProgramOpenCLProgramOpenCLKernelOpenCLKernelOpenCLMemoryOpenCLMemoryQueryQuery OpenCL platforms.available OpenCL platformsQuery OpenCL devices.available OpenCL devicesInitialisationChoose most appropriateplatform and device(s)Construct OpenCL Context for platform and device(s)Context devicesCreate devicecommand_queue(s)Construct and build programs: source, binary and/or ILBuild programConstruct kernels for programCreate OpenCL memoryCreate: buffers, images, samplers, pipes, svm, etc.Compute Dataget kernel(s)loopWrite input data to OpenCL memoryexecute kernel(s)Read output data from OpenCL memorywait for events or queue finishedClean Updrop contextrelease: buffers, images, samplers, pipes, svm, etc.release kernelsrelease programsrelease command_queuesrelease context