Forum Discussion
Altera_Forum
Honored Contributor
10 years agoInterpreting Optimization Report
Hello Everyone,
I need help interpreting the following optimization report. The basic structure of my kernel looks as follows:
while(true)
read_channel(channel_0)
Modify data
write_channel(channel_1)
I get the following Optimization Report:
========================================================================================================================
| *** Optimization Report *** |
========================================================================================================================
| Kernel: data_reader | File:Ln |
========================================================================================================================
| Loop while.body | :167 |
| Pipelined execution inferred. | |
| Successive iterations launched every 10 cycles due to: | |
| | |
| Data dependency on variable pkt_size_bytes | :137 |
| Largest Critical Path Contributors: | |
| 54%: 'acl_stall_free_exit.c1.while.body.data_reader' Function Call Operation | |
| 12%: 'acl_stall_free_entry.c1.while.body.data_reader' Function Call Operation | |
| 10%: Icmp Operation | :137 |
| 10%: Lshr Operation | :215 |
========================================================================================================================
Line 167 has the while loop with condition. Line 137 has a variable declaration. Line 215 has a variable = array[index++] type assignment. What does "54%: 'acl_stall_free_exit.c1.while.body.data_reader' Function Call Operation" mean? I cannot find any info online, nor in the Altera manuals about this. My target is to lower the Initialization Interval. Thanks for the help! Monstrumus1 Reply
- Altera_Forum
Honored Contributor
Hi,
I'm not sure about the 54% but I think it has to do with the channel. As for the assignment on line 215, is your index the loop iteration index? If not, how is it calculated? Altera says in the optimization guide (https://www.altera.com/content/dam/altera-www/global/en_us/pdfs/literature/hb/opencl-sdk/aocl_optimization_guide.pdf) on page 1-68: "When accessing local memory, use the simplest address calculations possible and avoid pointer mathoperations that are not mandatory."