Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
16684 Discussions

Using Channel with multiple Compute Unit

Altera_Forum
Honored Contributor II
1,119 Views

Hi everyone, 

 

I read from the AOCL programming guide that a kernel with channel can not be vectorized (SIMD I assume). But is it possible to use channel in kernels with multiple compute units (but no vectorization) ? 

 

I am trying to use a multiple CU kernel to write to the separate channels based on the value of global_work_id % number of CUs, and then read those channels in a consumer tasked kernel. Is there a way to accomplish this or is this disallowed by AOCL?  

 

Thanks!
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
368 Views

No. you can launch one kernel for one compute unit instead.

0 Kudos
Altera_Forum
Honored Contributor II
368 Views

Yes of course you can! although officially there is no support for invoking multiple compute units with channels, you can manually create them by replicating the kernels while maintaining channel and NDRange constructs across the kernels.

0 Kudos
Altera_Forum
Honored Contributor II
368 Views

 

--- Quote Start ---  

I am trying to use a multiple CU kernel to write to the separate channels based on the value of global_work_id % number of CUs, and then read those channels in a consumer tasked kernel. Is there a way to accomplish this or is this disallowed by AOCL?  

--- Quote End ---  

 

 

The most convenient way to achieve this is to use replicated single work-item autorun kernels, and use the compute unit ID to customize the channel connections. This cannot be done using num_compute_unit replication for NDRange kernels.
0 Kudos
Reply