The OpenCL Software Language
The Open Computing Language (OpenCL) standard is the first open, royalty-free, unified programming model for accelerating algorithms on heterogeneous systems. OpenCL software 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).
The OpenCL industry standard enables engineering teams to target FPGA technology-based products without getting to the level of details that hardware and firmware engineers programming in HDL had to. Existing CPU/GPU C or OpenCL code can be recompiled with the Intel OpenCL Software Development Kit and instantly make use of the FPGA hardware resources.
When porting existing code or developing new algorithms, OpenCL software is to the new standard to reduce time to market for FPGA–based accelerator products.
FPGA Programming with OpenCL
OpenCL allows the programmer to construct a dedicated FPGA Accelerator by performing hardware level optimizations automatically in the OpenCL code. The key FPGA features and benefits are abstracted in the syntax and the programmer uses the compiler to create highly parallel applications. The reconfigurable FPGA logic allows the generation of dedicated and optimized block for hardware dedicated functionalities.
Historically FPGA have been used as integer arithmetic accelerators, the Arria 10 FPGA family now also features higher FLOPS with dedicated floating-point resources (up to 1.5 TFLOPS), which OpenCL software leverages seamlessly allowing an entire new range of application to benefit from FPGAs.
Previous generations of FPGA accelerators have been limited by their IO throughput or memory bandwidth, OpenCL Software Development Kit helps balancing the high computing power capabilities of the FPGA logic with the speed of IOs, enabling high speed kernel-to-kernel and kernel-to-IOs data transfers through the OpenCL channel extension.
The channel feature combined with the highly flexible memory configuration, where internal and on-board memory can be customized to fit the application’s need in a way different from GPUs, provide the platform to enable BittWare FPGA accelerator as optimized stream computing nodes in customers’ infrastructures.
OpenCL Software Development Kit enables:
- Thousands of parallel kernels executions
- Configurable FPGA logic optimized for integer arithmetic
- New dedicated floating-point FPGA resources (up to 1.5 TFLOPS)
- Configurable local and global memory
- Kernel-to-kernel / kernel-to-IO high bandwidth channels
- Low Power
Intel Tool Flow
The Intel OpenCL SDK is a development environment for the Software Programmer; FPGA design considerations are abstracted away and automatically handled by the compiler. The flow is based on a debug and optimization cycle in software where the FPGA compilation is to be performed only a limited number of times when most of the application has been designed and optimized.
- Emulator to verify functionalities
- Optimize OpenCL for FPGA architecture—over 300 optimizations
a. Increase parallelism
b. Ensure pipeline
c. Use FPGA hardware resources
d. … - Profile kernel performance
- Compile to FPGA hardware target
The Intel SDK for OpenCL is in full production release enabling programmers to get to gate-level performant OpenCL code by following simple design guidelines and port kernel code platform to platform with minimum effort. OpenCL SDK is the most efficient path to production and deployment for FPGA Accelerator solutions.