Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Altera_Forum
Honored Contributor I
1,705 Views

Compile kernel as task not as NDRange

Hi, 

 

My design has multiple kernels communicating through channels forming a chain like this: 

 

Kga -> Kconf -> Kene -> Kst 

 

It is running correctly in emulation, but some information in the optimization report seems strange to me: 

Specifically, one kernel (Kga) is compiled as NDRange, although no work-item function is used in any kernel. 

 

Is there any function/statement that is causing this kernel to be compiled as NDRange?
0 Kudos
5 Replies
Altera_Forum
Honored Contributor I
45 Views

Try adding __attribute__((max_global_work_dim(0))) for that kernel, this should ensure it is compiled as a single work-item kernel.  

 

source: aocl programming guide, 2.3.1.1 (https://www.altera.com/en_us/pdfs/literature/hb/opencl-sdk/aocl_programming_guide.pdf#page=136)
Altera_Forum
Honored Contributor I
45 Views

Thanks for the info.  

I added that attribute, but unfortunately that kernel is still being compiled as ND-Range. 

 

The log shows warnings: 

"Compiler Warning: Channel ordering barrier insertion in X of Kernel Kga, but kernels may hang as a result" 

 

I don´t know how to interpret this warning. Have you experienced something like this before?
Altera_Forum
Honored Contributor I
45 Views

If you are able to post your code it will help immensely :)

Altera_Forum
Honored Contributor I
45 Views

I recompiled it and now it gets compiled as task. 

 

thank you.
Altera_Forum
Honored Contributor I
45 Views

An alternative to using __attribute__((max_global_work_dim(0))) is also __attribute__((task)) which should also do the same thing

Reply