On Fri, Jan 30, 2009 at 7:44 AM, Bingfeng Mei <b...@broadcom.com> wrote:
> Hello,
> I try to make modulo scheduling work more efficiently for our VLIW target. I 
> found one serious issue that prevents current SMS algorithm from achieving 
> high IPC is so-called "transitive closure" problem, where scheduling window 
> is only calculated using direct predecessors and successors. Because SMS is 
> not an iterative algorithm, this may cause failures in finding a valid 
> schedule. Without splitting rows, some simple loops just cannot be scheduled 
> not matter how big the II is. With splitting rows, schedule can be found, but 
> only at bigger II. GCC wiki (http://gcc.gnu.org/wiki/SwingModuloScheduling) 
> lists this as a TODO. Is there any work going on about this issue (the last 
> wiki update was one year ago)? If no one is working on it, I plan to do it. 
> My idea is to use the MinDist algorithm described in B. Rau's classic paper 
> "iterative modulo scheduling" 
> (http://www.hpl.hp.com/techreports/94/HPL-94-115.html). The same algorithm 
> can also be used to compute better RecMII. The biggest concern is complexity 
> of computing MinDist matrix, which is O(N^3). N is number of nodes in the 
> loop. I remember somewhere GCC coding guide says "never write quadratic 
> algorithm" :-) Is this an absolute requirement?

It's not an absolute requirement, just a general guideline.

We have plenty of quadratic and worse algorithms, and we'd rather see
less of them :)
Obviously, when it comes to things requiring transitive closure, you
can't really do better.

Reply via email to