Altera_Forum
Honored Contributor
10 years agoQuestion Regarding use of Channel
Hi everyone,
I am just wondering if it is possible to transfer data between an 2D NDrange kernel and 1D NDrange kernel with loops using channel extension and still maintain the ordering of the data. I wrote kernel where each thread of the 2D NDrange kernel writes 1 data element into the channel, and each thread of the 1D NDrange kernel reads 1 data element from the channel. The block size of the kernel are identical, so each thread in the second kernel use loop to read the data elements out. The kernels returns correct result in emulation but after compiled, the results are all wrong when number of work groups is more than 1. I am wondering if there is a limitation on the channel extension to prevent this kind of arrangement to work correctly, or if I did something wrong? Thanks!