Open Computing Language or OpenCL is an open, royalty-free standard for cross-platform parallel programming of hardware accelerators, including CPUs, GPUs, and FPGAs. The portability of the OpenCL code enables users to migrate their designs to different FPGAs or SoC FPGAs as their application requirements evolve. With SoC FPGAs, the CPU host is embedded into the FPGA, providing a single-chip solution that delivers significantly higher bandwidth and lower latency between the CPU host and the FPGA compared to using two discrete devices.
Altera has announced a software development kit (SDK) for OpenCL that combines the massively parallel architecture of FPGAs with the OpenCL parallel programming model. The SDK allows system developers and programmers familiar with C to quickly and easily develop FPGA-based applications in a high-level language. The SDK enables FPGAs to work in concert with a host processor to accelerate parallel computation at a fraction of the power needed by alternative hardware solutions.
The SDK for OpenCL offers a unified, high-level design flow for hardware and software development that automates the time-consuming tasks of typical hardware design language flows. The OpenCL tool flow automatically converts OpenCL kernel functions into custom FPGA hardware accelerators, adds interface IPs, builds interconnect logic, and generates the FPGA programming file. The SDK includes libraries that link to OpenCL API calls within a host program running on the CPU. This allows designers to focus their development effort on defining and iterating their algorithms rather than designing hardware.