Open Computing Language
Open Computing Language (OpenCL) is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs, DSPs, FPGAs and other processors/co-processors. OpenCL supports data and task level parallelism through a simple to understand and use programming model. Furthermore, since it supports different architectures OpenCL provides portability to a great extent.
OpenCL can be used to off-load compute intensive processing tasks to existing co-processors or to effectively distribute parallelizable work-loads to all cores of a multi-core CPU. The target platform can be a discrete GPU sitting on the PCIe bus of a CPU, a same die embedded GPU (such as Intel Iris Pro 5200) coupled with an Intel Core-i7 CPU, or a MALI T628 embedded on an ARM SoC.
Even though code portability is guaranteed by OpenCL Standard, performance portability between varying processors/architectures is still up to the programmer. Typically, certain fundamental performance optimizations such as memory read/write coalescing or L1 cache utilization are applicable to all platforms. However, both the exact application of these fundamental techniques and more advanced optimization strategies are highly platform dependent and requires a deep knowledge of the target processor/co-processor.
As Mist Elektronik we provide support and development services for OpenCL and OpenCL Embedded on TQ Processor Modules. With our extensive experience, you can use OpenCL technology with TQ modules without any hassles. Our services include integration of OpenCL on your platforms and development of algorithms.