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

Specify Schedule FMAX Target for Kernels

The schedule fmax target determines the pipelining effort the scheduler attempts during the scheduling process.

You can use one or both of the following options to specify the kernel specific fmax target:

  • By using the [[intel::scheduler_target_fmax_mhz(N)]] source-level attribute.
  • By directing the Intel® oneAPI DPC++/C++ Compiler to globally compile all kernels -Xsclock=<clock target in Hz/KHz/MHz/GHz or s/ms/us/ns/ps> option in the icpx command.

If you use both the command-line option and source-level attribute, the kernel attribute takes the priority. Consider the following example:

cgh.single_task<class mykernel1>([=] {
  ...
});

cgh.single_task<class mykernel2>([=
]() [[intel::scheduler_target_fmax_mhz(200)]] {
  ...
});

In you direct the compiler to compile the above code with –Xsclock=300MHz in the icpx -fsycl command, the compiler schedules kernel mykernel1 at 300 MHz and kernel mykernel2 at 200 MHz.

The schedule target fmax determines the pipelining effort during compilation. Refer to the Quartus compilation summary in the report.html file to get the actual fmax value.