Programming Guide

Contents

Limitations of the Emulator

The Intel® FPGA Emulation Platform for OpenCL™ software has the following limitations:
  • Concurrent execution
    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 external allocated memory and writing to random pointers. You may use memory leak detection tools, such as Valgrind, to analyze your program. 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.
  • GCC version
    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.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.