From: Chris Wilson <cwilson@CS.Stanford.EDU>
Date: Sat, 13 Jul 96 2:51:21 PDT
Subject: Re: Need some advice on using SUIF
Message-Id: <CMM.0.90.4.837251481.cwilson@Xenon.Stanford.EDU>
> I am using SUIF to explore fine grain control and data parallelism.
> I want to write a few passes in SUIF that do the following:
>
> 1. generate dependence information for loops, basic blocks,
> procedure calls, etc.
> 2. annotate SUIF tree_nodes with cost information (using
> my own cost model)
> 3. outline parallel work by creating new procedures.
>
> My question is: How to use what is already there in SUIF so that
> I don't reinvent the wheel. I know that SUIF
> has plenty of loop level parallelism detection.
> Is there some code to do procedure outlining?
Take a look at the outline() function in basesuif/useful/basic.h.
> How do I find out more about baseparsuif? I
> particularly need to know how to call some
> of the optimizations, like loop tiling, with
> certain parameters. Should I write a SUIF pass
> or just call skweel? The documentation on
> baseparsuif does not go into much detail on
> how all this works.
If you want direct control on a per-loop level, you can put
annotations on the SUIF code specifying the tiling you want done on
each loop, then let pgen carry out those tiling directives. See the
pgen man page, under the ``tile_loops'' annotation for details. If
you prefer, you can let skweel decide when to tile for cache
locality. See the skweel man page for details on that option. There
is an undocumented ``-t'' flag for skweel that allows you to choose
the tile size.
Exactly what level of control over tiling do you need?
> Thanks for any help.
>
> -Mike Hopper
--Chris