This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [wwwdocs] gcc-4.0/changes.html - Mention SMS as new optimization.





I am resending this because sourceware.org didn't like the fact that
there is an html file attached with the message. so here is the original
message with the file as plan text:

I have created a new html page  (news/sms.html), and added a link
from gcc-4.0/changes.hmlt. here is the patch and new file (sms.html).

what do you think ?

news/sms.html :
========

<html>

<head>
<title>SMS - Swing Modulo Scheduling in GCC</title>
</head>

<body>
<h1>SMS - Swing Modulo Scheduling in GCC</h1>

<p> February 2005</p>

<p>We are pleased to announce that Mostafa Hagog and Ayal Zaks, of <a
href="http://www.haifa.il.ibm.com/";>IBM Haifa Labs</a>, has contributed
Swing Modulo Scheduling (SMS) to GCC 4.0, which is based on the
articles:<p/>
<ul>
  <li>Lifetime--sensitive modulo scheduling in a production environment.
      IEEE Trans. on Comps., 50(3), March 2001.
      J. Llosa, A. Gonzalez, E. Ayguade, M. Valero., and J. Eckhardt. </li>
  <li>Josep Llosa,Antonio Gonzalez, Eduard Ayguade, and Mateo Valero.
      Swing Modulo Scheduling: A Lifetime Sensitive Approach.
      In Pact96 , pages 80-87, October 1996 (Boston - Massachussets -
USA).</li>
</ul>


<p> SMS is intended to schedule instructions of loops rather than the
traditional scheduler (in GCC) that does not give a special
handling for loops. For more information on the theory behind
SMS take a look at  <a href=
"http://www.gccsummit.org/2004/2004-GCC-Summit-Proceedings.pdf";>
The 2004 GCC summit proceedings (page 55).</a>
This optimization could help in loops where there is a place to
run consecutive iterations concurrently but the traditional
instruction scheduling is not able to fully utilize the hardware
functional units.  This optimization is disabled by default
because of compile time consumption; -fmodulo-sched activates it.
This is a preliminary implementation of SMS and it is not
effective in the following cases:
<ul>
  <li>Loops that have stores to memory.
  <li>High register pressure and poor register set.
  <li> Architectures that doesn't have a BCT (Branch on Count)
      instructions.
  <li>out-of-order machines; SMS impact is more noticeable on
      in-order machines (out-of-order machines does this work
      in hardware).
</ul>
<p> Improvements to SMS to overcome (but not only) the first
three restrictions are expected in the coming releases of GCC.</p>


</body>
</html>


(See attached file: diff.)

Gerald Pfeifer <gerald@pfeifer.com> wrote on 17/02/2005 04:50:20:

> Hi Mostafa,
>
> On Wed, 16 Feb 2005, Mostafa Hagog wrote:
> > OK, here is a second try of the patch.
>
> thanks for the updated patch (and thanks also to Giovanni for his useful
> comments).
>
> If you'd like, and I'd appreciate that, it would be a good idea to have
> a web page news/sms.html which describes your changes in a bit more
> detail and make the entry in changes.html shorter and refer to that
> page instead.
>
> If you don't want to do that, the current patch is fine as well, with
> just a couple of minor changes:
>
> Index: changes.html
> ===================================================================
> +    SMS is intended to schedule instructions of loops rather than the
> +    traditional scheduler (in GCC) that doesn't give a special
>
> I guess for our documentation we should use the longer form: "does not".
>
> +    because of compile time consumption; -fmodulo-sched activates it.
>
> <code>-fmodulo-sched</code>
>
> +    This is a preliminary implementation of SMS, so we are able to
> +    perform SMS only on a small number of loops;  more improvements
> +    are expected in the coming releases of GCC.
>
> For the longer version that I suggested for news/sms.html, it would be
> nice to have a brief idea on what sort of loops we are currently able
> to handle; or you could add this to the manual and refer from
changes.html
> to the manual.
>
> Gerald

Attachment: diff.
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]