)"/>

Developer Guide

FPGA Optimization Guide for Intel® oneAPI Toolkits

ID 767853
Date 7/13/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Disable Burst-Interleaving of Global Memory (-Xsno-interleaving=<global_memory_name>)

The Intel® oneAPI DPC++/C++ Compiler cannot burst-interleave global memory across different memory types. You can disable burst-interleaving for all global memory banks of the same type and manage them manually by including the -Xsno-interleaving=<global_memory_name> option in your icpx command.

Manual partitioning of memory buffers overrides the default burst-interleaved configuration of global memory.

CAUTION:

The -Xsno-interleaving option requires a global memory type parameter. If you do not specify a memory type, the Intel® oneAPI DPC++/C++ Compiler issues an error message.

  • To direct the Intel® oneAPI DPC++/C++ Compiler to disable burst-interleaving for the default global memory, invoke the following command:
    icpx -fsycl -fintelfpga -Xshardware -Xsno-interleaving=default source_file.cpp
  • Your accelerator board might include multiple global memory types. To identify the default global memory type, refer to your board vendor's documentation for your Custom Platform or the board_spec.xml file. The board_spec.xml file includes an entry for the global memory. If there is only one memory, that is the default. If there is more than one memory, the board_spec.xml file specifies the default. You can identify the global memory name with the name attribute of the <global_mem> XML element within the board_spec.xml file.
  • For a heterogeneous memory system, to direct the Intel® oneAPI DPC++/C++ Compiler to disable burst-interleaving of a specific global memory type, perform the following tasks:
    1. Consult the board_spec.xml file of your Custom Platform for the names of the available global memory types. For example, double data rate (DDR) and quad data rate (QDR).
    2. To disable burst-interleaving for one of the memory types (for example, DDR), invoke:
      icpx -fsycl -fintelfpga -Xshardware -Xsno-interleaving=DDR source_file.cpp

      The Intel® oneAPI DPC++/C++ Compiler enables manual partitioning for the DDR memory bank and configures the other memory bank in a burst-interleaved fashion.

    3. To disable burst-interleaving for more than one type of global memory buffers, include a -Xsno-interleaving=<global_memory_name> option for each global memory type. For example, to disable burst-interleaving for both DDR and QDR, invoke the following command:
      icpx -fsycl -fintelfpga -Xshardware -Xsno-interleaving=DDR -Xsno-interleaving=QDR source_file.cpp
CAUTION:

Do not pass a buffer as a kernel argument that associates it with multiple memory technologies.