OpenCL Devices and FPGAs
In the context of CPU and GPU devices, the attributes of a device are fixed and the programmer has very little influence on what the device looks like. On the other hand, this characteristic of CPU/GPU systems makes it relatively easy to obtain an off-the-shelf board. The one major limitation of this style of device is that there is no direct connection between system I/O and the OpenCL™ kernels. All transactions of data are through memory-based transfers.
An OpenCL device for an FPGA is not limited by the constraints of a CPU/GPU device. By taking advantage of the fact that the FPGA starts off as a blank computational canvas, the user can decide the level of device customization that is appropriate to support a single application or a class of applications. In determining the level of customization in a device, the programmer needs to keep in mind that kernel compute units are not placed in isolation within the FPGA fabric.
- Connection to the host processor
- I/O peripherals
- Memory controllers
- Interconnect
- Kernel region
The creation of FPGAs requires FPGA design knowledge and is beyond the scope of capabilities for the SDAccel™ Environment. Devices for the SDAccel Environment are created using the Xilinx® Vivado® Design Suite for FPGA designers. The SDAccel Environment provides pre-defined devices and allows users to augment the tool with third party created devices. A methodology guide describing how to create a device for the SDAccel development environment is available upon request from Xilinx.
The devices available in the SDAccelEnvironment are for Virtex®-7, Kintex®-7, and UltraScale™ FPGAs. These devices are available in a PCIe® form factor. The PCIe form factor for Virtex-7, Kintex-7, and UltraScale devices assumes that the host processor is an x86- or Power8-based processor, and that the FPGA is used for the implementation of compute units.