Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
New Contributor I
234 Views

What are the feedback FIFOs used for in the loops for OpenCL single work-item kernel

Jump to solution

I noticed that the offline compiler automatically generates FIFOs (as shown in the following figure ) for each loops in the kernel. It is said that the FIFOs are used to support non-stalling of the pipeline instructions. However, I could not really understand. Can anyone gives a hint or explain this by giving an example ? Thx

0 Kudos

Accepted Solutions
Highlighted
Employee
18 Views

Hi,

 

1) Currently, there’s no way to directly control the depth of a Feedback FIFO. The only ways you can affect a Feedback FIFO is to restructure the code to use a smaller datatype (e.g. uchar instead of ushort) or change the access pattern if it’s a memory (register, M20K, or MLAB). You can remove the Feedback FIFO by finding a way to move its associated variable inside the loop so no state information is required.

 

2) The FFwd Dest node is effectively the end point of a wire. Basically, it represents the dataflow of a variable that could come from outside or inside the loop. It’s not directly related to a Feedback node. This terminology is confusing and I had reported to the team. 

 

Thanks 

View solution in original post

0 Kudos
5 Replies
Highlighted
Employee
18 Views

Hi,

A Feedback FIFO is used to buffer values of variables for subsequent iterations of a loop. They keep the cluster stall free by ensuring that loop iterations will launch according to their II scheduled by the compiler.

Thanks

Highlighted
New Contributor I
18 Views

Hi Mylee, Thanks for the quick reply.

 

I have two more questions concerning the generated circuits:

1) based on my experience, the feedback FIFOs can consume a significant amount of MLAB or M20K resources for some complicated loops. Is there any way to manually control the depth of the generated feedback FIFOs to allow users to make trade-offs between performance and on-chip resources by their own ? Or anyway to avoid using these FIFOs ?

 

2) what are the "FFwd Dest" nodes in the loop graph view used for ? It seems the these symbols are generated by the offline compiler, and do they represent a connection point with the feedback nodes from outside of the current loop ?

 

 

 

0 Kudos
Highlighted
Employee
19 Views

Hi,

 

1) Currently, there’s no way to directly control the depth of a Feedback FIFO. The only ways you can affect a Feedback FIFO is to restructure the code to use a smaller datatype (e.g. uchar instead of ushort) or change the access pattern if it’s a memory (register, M20K, or MLAB). You can remove the Feedback FIFO by finding a way to move its associated variable inside the loop so no state information is required.

 

2) The FFwd Dest node is effectively the end point of a wire. Basically, it represents the dataflow of a variable that could come from outside or inside the loop. It’s not directly related to a Feedback node. This terminology is confusing and I had reported to the team. 

 

Thanks 

View solution in original post

0 Kudos
Highlighted
New Contributor I
18 Views

Thanks again.

If possible, a index number could be added to the FFwd Dest nodes so that users can see where the wires came from.

0 Kudos
Highlighted
Employee
18 Views

Hi,

I had reported this to the team.

Thanks

0 Kudos