A newer version of this document is available. Customers should click here to go to the newest version.
Limitations of the Emulator
The Intel® FPGA Emulation Platform for OpenCL™ software has the following limitations:
Modeling of concurrent kernel executions has limitations. During execution, the emulator is not guaranteed to run interacting work items in parallel. Therefore, some concurrent execution behaviors, such as different kernels accessing global memory without a barrier for synchronization, might generate inconsistent emulation results between executions.
Same address space execution
The emulator executes the host runtime and kernels in the same address space. Certain pointer or array use in your host application might cause the kernel program to fail and vice versa. Example uses include indexing externally allocated memory and writing to random pointers. To analyze your program, you may use memory leak detection tools, such as Valgrind. However, the host might encounter a fatal error caused by out-of-bounds write operations in your kernel and vice versa.
Conditional pipe operations
Emulation of pipe behavior has limitations, especially for conditional pipe operations where the kernel does not call the pipe operation in every loop iteration. In these cases, the emulator might execute pipe operations in a different order than on the hardware.
You must run the emulator host programs on Linux with a version of libstdc++.so from GCC 7.4.0 or later. You can achieve this either by installing GCC 7.4.0 or later on your system or setting the LD_LIBRARY_PATH environment variable such that a compatible libstdc++.so is identified.
Did you find the information on this page useful?