Author: Robert Hyatt
Date: 11:29:17 06/28/03
Go up one level in this thread
On June 28, 2003 at 12:27:49, Eugene Nalimov wrote: >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 I'm using the free "non-commercial-use" version. I have no idea what it costs normally. I also have the Portland Compiler Group's C and Fortran compilers for my linux cluster. It was _not_ cheap and it is also not bad. Better than GCC, but then it costs more too. :) > >:-) > >>> >>>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.