Intel® High Level Design
Support for Intel® High Level Synthesis Compiler, DSP Builder, OneAPI for Intel® FPGAs, Intel® FPGA SDK for OpenCL™
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
527 Discussions

Are DRAM accesses in the opencl code for FPGA executed in a non-blocking manner?


When we access memory in the opencl kernel like this:

for (int i = 0; i < N; i++) ... = A[i]

Are they executed in non-blocking manner? Meaning does the generated FSM wait for the memory load to complete before sending another load request to memory, or it sends out mutliple load requests one after another and then handle the responses in-order when they come back?

0 Kudos
1 Reply
Valued Contributor II

In case of Single Work-item kernels, loops are pipelined. This also applies to the memory accesses inside loops. Hence, access requests are sent back to back and after a certain delay, data is received in the same order. If the buffer between the kernel and memory becomes empty, then the kernel will stall waiting for new data to arrive.