Visible to Intel only — GUID: GUID-D0417DA9-2540-4CCE-915C-12B13611FC22
FPGA Optimization Guide for Intel® oneAPI Toolkits
Introduction To FPGA Design Concepts
Analyze Your Design
Optimize Your Design
FPGA Optimization Flags, Attributes, Pragmas, and Extensions
Quick Reference
Additional Information
Document Revision History for the FPGA Optimization Guide for Intel® oneAPI Toolkits
Refactor the Loop-Carried Data Dependency
Relax Loop-Carried Dependency
Transfer Loop-Carried Dependency to Local Memory
Minimize the Memory Dependencies for Loop Pipelining
Unroll Loops
Fuse Loops to Reduce Overhead and Improve Performance
Optimize Loops With Loop Speculation
Remove Loop Bottlenecks
Shannonization to Improve FMAX/II
Optimize Inner Loop Throughput
Improve Loop Performance by Caching On-Chip Memory
Global Memory Bandwidth Use Calculation
Manual Partition of Global Memory
Partitioning Buffers Across Different Memory Types (Heterogeneous Memory)
Partitioning Buffers Across Memory Channels of the Same Memory Type
Ignoring Dependencies Between Accessor Arguments
Contiguous Memory Accesses
Static Memory Coalescing
Specify Schedule FMAX Target for Kernels (-Xsclock=<clock target>)
Create a 2xclock Interface (-Xsuse-2xclock)
Disable Burst-Interleaving of Global Memory (-Xsno-interleaving=<global_memory_name>)
Force Ring Interconnect for Global Memory (-Xsglobal-ring)
Force a Single Store Ring to Reduce Area (-Xsforce-single-store-ring)
Force Fewer Read Data Reorder Units to Reduce Area (-Xsnum-reorder)
Disable Hardware Kernel Invocation Queue (-Xsno-hardware-kernel-invocation-queue)
Modify the Handshaking Protocol Between Clusters (-Xshyper-optimized-handshaking)
Disable Automatic Fusion of Loops (-Xsdisable-auto-loop-fusion)
Fuse Adjacent Loops With Unequal Trip Counts (-Xsenable-unequal-tc-fusion)
Pipeline Loops in Non-task Kernels (-Xsauto-pipeline)
Control Semantics of Floating-Point Operations (-fp-model=<value>)
Modify the Rounding Mode of Floating-point Operations (-Xsrounding=<rounding_type>)
Global Control of Exit FIFO Latency of Stall-free Clusters (-Xssfc-exit-fifo-type=<value>)
Enable the Read-Only Cache for Read-Only Accessors (-Xsread-only-cache-size=<N>)
Control Hardware Implementation of the Supported Data Types and Math Operations (-Xsdsp-mode=<option>)
Generate Register Map Wrapper (-Xsregister-map-wrapper-type)
Visible to Intel only — GUID: GUID-D0417DA9-2540-4CCE-915C-12B13611FC22
FPGA Extensions
The following section summarizes FPGA extensions supported:
fpga_reg Extension
FPGA Extension |
Description |
Example |
---|---|---|
ext::intel::fpga_reg() | Helps the compiler infer at least one pipelining register in the datapath. |
|
task_sequence Extension
The following table summarizes the task_sequence template parameters and function APIs:
Template Parameter | Description |
---|---|
auto &f typename ReturnT, typename... ArgsT, ReturnT (&f)(ArgsT...) | Callable f that defines the asynchronous task to be associated with the task_sequence. |
uint32_t invocation_capacity | The size of the hardware queue instantiated for async() function calls. |
uint32_t response_capacity | The size of the hardware queue instantiated to hold task function results. |
Function API | Description |
---|---|
void async(ArgsT... Args) | Asynchronously calls f with Args. Increments the number of outstanding tasks by 1. |
ReturnT get() | Synchronously retrieves the result of an asynchronous call. |
~task_sequence() | Destructor for task_sequence. |
device_global Extension
FPGA Extension |
Description |
Example |
---|---|---|
sycl::ext::oneapi::experimental::device_global() | Introduces device-scoped memory allocations into SYCL that can be accessed within a kernel using C++ global variable syntax. These memory allocations have unique instances per SYCL device. |
|
Parent topic: Quick Reference