[Legup-bugs] [Bug 129] Loop pipelining does not work in conjunction with loop unroll flag

bugzilla-daemon at legup.org bugzilla-daemon at legup.org
Tue Mar 14 16:46:25 EDT 2017


http://legup.eecg.utoronto.ca/bugs/show_bug.cgi?id=129

--- Comment #12 from Big Rubber Duck <nachiket at uwaterloo.ca>  ---
(In reply to comment #11)
> > Error: Expected to find 1 loops to pipeline but only pipelined 0
> 
> This error message occurs when LegUp cannot find the loop you wish to pipeline.
> This could be because the loop has been fully unrolled, meaning there is no
> longer a loop to pipeline. There must be an actual basic block (with a back
> edge indicating a loop) found in the LLVM intermediate representation. The
> basic block is identified in the LLVM IR by a call to __legup_label("loop1")
> for a loop with the label loop1.
> This error could also happen if the label specified in the tcl file cannot be
> found in the C program (i.e. a typo in the label).

I see — With an unroll factor of 2 (threshold=32), pipelining is back. 

Can I directly communicate an unroll factor without specifying threshold and
inferring it implicitly [that’s my current understanding anyway]?

Also after a bunch of trials-and-error, and observing cycle counts after ‘make
v’, I think I figure how unroll factor is applied.. Is the actual unroll factor
= "unroll threshold/16”? 
What’s special about 16? SSE SIMD width? 

Is there some way to indicate that what was previously inside a loop body (full
unroll or otherwise) is still available for pipelining? Or a fully unrolled
loop cannot be pipelined? 

[Not sure your bugzilla installation allows email replies to post to thread.
apologies for duplicate post]

-- 
Configure bugmail: http://legup.eecg.utoronto.ca/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


More information about the Legup-bugs mailing list