Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: By the way...

Author: Eugene Nalimov

Date: 09:27:49 06/28/03

Go up one level in this thread


On June 28, 2003 at 10:43:50, Robert Hyatt wrote:

>On June 28, 2003 at 04:44:10, Tom Kerrigan wrote:
>
>>On June 28, 2003 at 00:18:35, Robert Hyatt wrote:
>>
>>>On June 26, 2003 at 22:50:59, Eugene Nalimov wrote:
>>>
>>>>I didn't look at GCC sources, but I looked at sources of some other compilers,
>>>>and understand x86 and PPC architecture well enough, so I think I know that x86
>>>>and PPC backends should be vastly different, and each should contain lot of
>>>>platform-specific and unique code.
>>>>
>>>>Thanks,
>>>>Eugene
>>>
>>>I wouldn't disagree.  However, I'd suspect that both are written by the
>>>same core "group" of people.  Which means they are probably pretty competitive
>>>with each other in terms of aggressive optimizations.  That means that it is
>>>unlikely that one processor will get a huge jump on the other due to the
>>>optimizer gurus for one being far better. (all of that directed toward gcc
>>>only, of course).
>>
>>I've never looked at the gcc compiler, but I imagine that it has a pass where it
>>converts whatever its intermediate format is to native machine code and
>>optimizes that machine code, e.g., makes sure branch targets are on 16 byte
>>boundaries for the Athlon, makes sure to use multiplies instead of shifts in
>>certain situations on the P4, etc. These sorts of optimizations can make or
>>break the performance of an executable and they're hard enough to keep straight
>>for one x86 processor, much less every x86 processor AND some completely
>>different RISC processor (POWER4/PPC970) with rules that are probably just as
>>complicated, given its "bundling" setup. So unless you have information to the
>>contrary, I'd suspect that different sets of people work on generating this
>>final machine code.
>
>You can find this out bY investigating the gcc project.  In some cases they
>might have disjoint groups of people working on the back end, but at the "top"
>of the tree there is a single group of maintainers.  And for many of the
>architectures, there is a single group working on all.  This is not that
>uncommon.  For example, Donald Becker (NASA) did almost all of the ethernet
>drivers for linux, even though different cards/drivers are drastically
>different.
>
>
>
>>
>>As for optimizations carrying over from one architecture to the other, I expect
>>this is very unlikely given how different the architectures are. If you order
>>your instructions on the PPC970 to be bundled just right for high performance,
>>the same ordering is obviously going to have no effect (or probably a
>>detremental effect) for Pentium 4 performance, because the P4 doesn't even do
>>bundling at all.
>
>
>Sorry, but _many_ optimizations are machine / architecture independent.  Any
>good compiler book will explain them, and new ideas are coming out every day.
>
>Of course there are also processor-specific tricks that get exposed daily as
>well, but that is a much smaller subset of optimizations than the overall
>ideas dealing with reducing operations done.
>
>That simply means that the overall optimizations are similar, and then on the
>_very_ "back end" of all this some processor-specific tricks are employed to
>further (hopefully, but not always) speed things up further.  But as I said,
>using gcc on two processors does as much as possible to eliminate any _real_
>processor-specific tinkering, but it also means you are comparing two machines
>with not very efficient executables.  IE _every_ vendor-supplied compiler I
>have tested has _always_ been at least 10% faster than gcc, and that includes
>IBM, Sun, SGI, Intel, Cray, HP, Etc.
>
>However, the price of the gcc compiler stomps the price of any of those
>commercial compilers.  :)

How much you paid for ICC?

Thanks,
Eugene

:-)

>>
>>If the same people are doing all of these optimizations for all platforms, what
>>is the likelyhood that, regardless of how "aggressive" they are, they will
>>overlook key optimizations for some platforms? Optimizations that would
>>obviously not be overlooked by somebody who spent all his time writing code for
>>one specific architecture. Very high, I'd imagine.
>
>You got it.  Which is why my last point above is true.  GCC is good, but
>_not_ when compared to commercial compilers.
>
>>
>>-Tom



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.