Visible to Intel only — GUID: GUID-F3FCD3B3-7FA5-4A62-993A-A4170F7A4625
Visible to Intel only — GUID: GUID-F3FCD3B3-7FA5-4A62-993A-A4170F7A4625
Compile and Emulate Your Design
To compile and emulate your FPGA kernel design, perform the following steps:
Modify the host part of your program to declare the ext::intel::fpga_emulator_selector device selector. Use this device_selector when instantiating a device queue for enqueuing your FPGA device kernel.
Compile your design by including the -fintelfpga option in your icpx command to generate an executable.
Run the resulting executable:
For Windows:
Define the number of emulated devices by invoking the following command:
set CL_CONFIG_CPU_EMULATE_DEVICES=<number_of_devices>
Run the executable.
Invoke the following command to unset the variable:
set CL_CONFIG_CPU_EMULATE_DEVICES=
For Linux, invoke the following command:
env CL_CONFIG_CPU_EMULATE_DEVICES=<number_of_devices> <executable_filename>
This command specifies the number of identical emulation devices that the emulator must provide.
TIP:If you want to use only one emulator device, you need not set the CL_CONFIG_CPU_EMULATE_DEVICES environment variable.
- The Intel® FPGA Emulation Platform for OpenCL™ does not provide access to physical boards. Only the emulated devices are available.
The emulator is built with GCC 7.4.0 as part of the Intel® oneAPI DPC++/C++ Compiler. When running the executable for an emulated FPGA device, the version of libstdc++.so must be at least that of GCC 7.4.0. In other words, the LD_LIBRARY_PATH environment variable must ensure that the correct version of libstdc++.so is found.
If the correct version of libstdc++.so is not found, the call to clGetPlatformIDs function fails to load the FPGA emulator platform and returns CL_PLATFORM_NOT_FOUND_KHR (error code -1001). Depending on which version of libstdc++.so is found, the call to clGetPlatformIDs may succeed, but a later call to the clCreateContext function may fail with CL_DEVICE_NOT_AVAILABLE (error code -2).
If the LD_LIBRARY_PATH does not point to a compatible libstdc++.so, use the following syntax to invoke the host program:
env LD_LIBRARY_PATH=<path to compatible libstdc++.so>:$LD_LIBRARY_PATH <executable> [executable arguments]
To enable debugging of kernel code, optimizations are disabled by default for the FPGA emulator. This can lead to sub-optimal execution speed when emulating kernel code. You can pass the -g0 flag to the icpx compile command to disable debugging and enable optimizations. This enables faster emulator execution.
When targeting the FPGA emulator device, use the -O2 compiler flag to turn on optimizations and speed up the emulation. To turn off optimizations (for example, to facilitate debugging), pass -O0.