"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