Wednesday, August 17, 2016

OpenCL

"Open Computing Language (OpenCL) is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors or hardware accelerators. OpenCL specifies a programming language (based on C99) for programming these devices and application programming interfaces (APIs) to control the platform and execute programs on the compute devices. OpenCL provides a standard interface for parallel computing using task-based and data-based parallelism.

The OpenCL standard is the first open, royalty-free, unified programming model for accelerating algorithms on heterogeneous systems. OpenCL allows the use of a C-based programming language for developing code across different platforms, such as central processing units (CPUs), graphic processing units (GPUs), digital signal processors (DSPs), and field-programmable gate arrays (FPGAs).

OpenCL is a programming model for software engineers and a methodology for system architects. It is based on standard ANSI C (C99) with extensions to extract parallelism. OpenCL also includes an application program interface (API) for the host to communicate with the hardware accelerator, traditionally over PCI Express®, or one kernel to communicate with another without host interaction. In addition to this we provide, as a vendor extension, an I/O Channel API to stream data into a kernel directly from a streaming I/O interface such as 10Gb Ethernet. A key benefit of OpenCL is that it is a portable, open, royalty-free standard, which is a key differentiator versus proprietary programming models.

In the OpenCL model, the user schedules tasks to command queues, of which there is at least one for each device. The OpenCL run-time then breaks the data-parallel tasks into pieces and sends them to the processing elements in the device. This is the method for a host to communicate with any hardware accelerator. It is up to the individual hardware accelerator vendors to abstract away the vendor-specific implementation."


https://en.wikipedia.org/wiki/OpenCL

https://software.intel.com/en-us/intel-opencl

https://www.khronos.org/opencl/

Intel FPGA SDK for OpenCL - https://www.altera.com/products/design-software/embedded-software-developers/opencl/overview.html

The Feasibility of Using OpenCL Instead of OpenMP for Parallel CPU Programming - http://arxiv.org/abs/1503.06532

No comments:

Post a Comment