08-06-2019 07:33 PM
08-12-2019 02:34 PM
Have you looked at the Sdaccel programmers guide (UG1277 v2019.1)? There is a section on connecting kernel ports to global memory.
It is possible to connect more than one kernel to a single DDR bank, but only one kernel can access the bank at a time.
Specify kernel port to global memory connection during the linking stage with the --sp switch.
How would you queue the buffer to every kernel?
08-13-2019 12:15 AM
08-13-2019 12:39 AM
Thanks for your reply! @mcertosi
My last post seems to have some format errors. So I repost here.
This is how I am planning to do:
1st. enqueue the buffer I want to share among kernels.
2nd.set this buffer as the arguement of every kernel respectively.
3rd. enqueue the kernels and every kernels can read from the shared buffer.
Based on your reply, one buffer have only one bank access at a time. Does it mean that what I am going to do is impossible?
08-13-2019 08:15 AM
From the documentation it seems like what you are trying to do is possible, but if your kernels are operating independent of each other you might run into bottleneck problems when two kernels want to access the shared buffer at the same time. This would force one of the kernels to wait while the other is serviced.
How large is your shared buffer? Could you place it in on-chip BRAM?
08-14-2019 08:08 PM - edited 08-14-2019 08:08 PM
Thanks for your reply @mcertosi
The data I would like to share is quite large and is divided into several shared buffers. However, at each iteration only 2 of them are needed. The total size will be about 10G so BRAM may be not enough.
08-19-2019 10:28 AM
Looks like your only option is to place the buffer in shared global ddr memory.
Did this work? You could try to check this in hardware emulation to speed up the debug cycle.