- Work items
- Loop iterations
Pipelining Loops Within a Single Work Item
- Interleaving: When a loop nest with an inner loop II is greater than 1, theIntel® oneAPIcan attempt to interleave iterations of the outer loop into iterations of the inner loop to utilize the hardware resources better and achieve higher throughput.DPC++/C++CompilerFor additional information about controlling interleaving in your kernel, refer to max_interleaving Attribute.
- Speculative Execution: When the critical path affecting II is the computation of the loop's exit condition and not a loop carried dependency, theIntel® oneAPIcan attempt to relax this scheduling constraint by speculatively continuing to execute iterations of the loop while the exit condition is being computed. If it is determined that the exit condition is satisfied, the effects of these extra iterations are suppressed. This speculative iteration can achieve lower II and higher throughput, but it can incur additional overhead between the loop invocations (equivalent to the number of speculated iterations). A larger loop trip count helps to minimize this overhead.DPC++/C++CompilerA loop invocation is what starts a series of loop iterations. One loop iteration is one execution of the body of a loop.