LabVIEW Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
WG-

Loop unrolling

Status: Declined

Any idea that has received less than 4 kudos within 4 years after posting will be automatically declined.

LabVIEW should support loop unrolling...

 

For those who do not know what loop unrolling is (from wikipedia http://en.wikipedia.org/wiki/Loop_unwinding)

Loop unwinding, also known as loop unrolling, is a loop transformation technique that attempts to optimize a program's execution speed at the expense of its binary size (space-time tradeoff). The transformation can be undertaken manually by the programmer or by an optimizing compiler.

 

The goal of loop unwinding is to increase a program's speed by reducing (or eliminating) instructions that control the loop, such as pointer arithmetic and "end of loop" tests on each iteration;[1] reducing branch penalties; as well as "hiding latencies, in particular, the delay in reading data from memory".[2] Loops can be re-written instead as a repeated sequence of similar independent statements eliminating this overhead.[3]

 

Example with textual programming language:

 

int x;
for (x = 0; x < 100; x++)
{
   delete(x);
}

 

Becomes:

 

int x;
for (x = 0; x < 100; x+=5)
{
   delete(x);
   delete(x+1);
   delete(x+2);
   delete(x+3);
   delete(x+4);
}

 

Who is with me 😉

14 Comments
WG-
Member
Member

Thumbsup

Andrey_Dmitriev
Trusted Enthusiast

Thanks.

 

One small addition - unrolling makes sense only if the SubVIs inside of unrolled loop marked as inline, otherwise overhead for SubVI calls is too much and much bigger than the overhead caused by loop counter.

 

GuenterMueller
Active Participant

One small addition - unrolling makes sense only if the SubVIs inside of unrolled loop marked as inline, otherwise overhead for SubVI calls is too much and much bigger than the overhead caused by loop counter.

No surprise. Inlining the VIs might actually result in very heavy loop bodies.

However, I like the idea. Kudo.

Darren
Proven Zealot
Status changed to: Declined

Any idea that has received less than 4 kudos within 4 years after posting will be automatically declined.