Visible to Intel only — GUID: GUID-13F11F2C-8857-4A8F-8BC6-314C01EFD208
Visible to Intel only — GUID: GUID-13F11F2C-8857-4A8F-8BC6-314C01EFD208
FPGA Boards and Board Support Packages (BSPs)
The multiarchitecture binary generated by the FPGA acceleration flow requires additional hardware and software to run. This section provides an overview of these dependencies when you use the Intel® oneAPI DPC++/C++ Compiler to build and run all-in-one FPGA acceleration designs.
The following terms are often mentioned when discussing the multiarchitecture binaries and the FPGA acceleration flow:
Boards
Like a GPU, an FPGA is an integrated circuit that must be mounted onto a card or a board to interface with a server or a desktop computer. In addition to the FPGA, the board provides memory, power, and thermal management, and physical interfaces to allow the FPGA to communicate with other devices.
Board Support Packages (BSPs)
A BSP consists of software layers and an FPGA hardware scaffold design that makes it possible to target the FPGA through the Intel® oneAPI DPC++/C++ Compiler. The functionality described in your SYCL device code is inserted into this scaffold to produce the final FPGA device image that is part of the multiarchitecture binary.
An important part of the BSP is the board_spec.xml file that describes the hardware interface of the board.
Generating the FPGA Optimization Reports for your board requires a BSP.
The FPGA Support Package for Intel® oneAPI DPC++/C++ Compiler webpage includes links to board vendors to help you choose a board and a BSP.
The Open FPGA stack (OFS) is the recommended tool for developing BSPs to use with oneAPI. OFS is an open-source hardware and software framework. OFS-based BSPs for oneAPI typically use the OFS FPGA Interface Manager (FIM) for the targeted board and the OFS oneAPI Accelerator Support Package (oneAPI ASP).
For more information about OFS and how to develop a custom BSP with OFS, refer to https://ofs.github.io.
For more information about the oneAPI ASP, refer to oneAPI Accelerator Support Package (ASP): Getting Started User Guide and oneAPI Accelerator Support Package(ASP) Reference Manual: Open FPGA Stack.
You can have multiple BSPs installed to support multiple FPGA boards in your system. The BSPs are managed by the FPGA client driver (FCD).
Board Variants
A BSP can provide multiple board variants that support different functionality. For example, a BSP could contain two variants that differ in their support for Unified Shared Memory (USM). For additional information about USM, refer to the Unified Shared Memory and USM Interfaces topics in the SYCL* Reference Documentation.
A board can be supported by more than one BSP, and a BSP might support more than one board variant.
FPGA Client Driver (FCD)
An FPGA client driver (FCD) helps the oneAPI runtime discover a boards. The installation process for a BSP installs a new FCD.
When you have multiple boards installed on the same system, the FCD helps your program to discover the installed boards and run your application on the desired board with its corresponding BSP.
On Linux* systems, the default installation directory for FCDs is /opt/Intel/OpenCLFPGA/oneAPI/Boards, which might require root privileges. You can override the default FCD installation directory by setting the ACL_BOARD_VENDOR_PATH environment variable to the FCD installation directory.
Installable Client Driver (ICD)
The oneAPI runtime stack can include multiple OpenCL™ implementations, each provides support for its corresponding SYCL* platform (such as GPU or FPGA). The FPGA Support Package for the Intel® oneAPI DPC++/C++ Compiler ships an OpenCL™ Installable Client Driver (ICD) Loader from the Khronos Group™ to allow the host program to enumerate and select between multiple SYCL platforms. With the ICD loader you can have a GPU and an FPGA accelerator installed in the same host.
For more information about the ICD, refer to The OpenCL™ Installable Client Driver (ICD).
Comparing FCD and ICD
The ICD and FCD serve different functions:
- The ICD allows you to enumerate and choose between different runtime implementations in your host program. The ICD is required when you run your multiarchitecture binary in emulation, simulation, or on hardware.
- The FCD allows you to enumerate and choose between different BSPs in your host program. The FCD is required only when you run your multiarchitecture binary on hardware.