[PlanetCCRMA] Fftw3

William M. Quarles walrus@bellsouth.net
Wed Nov 24 16:23:01 2004

Fernando Lopez-Lezcano wrote:
> On Wed, 2004-11-24 at 15:29, William M. Quarles wrote:
>>The program that seems that it would be most dependent on 
>>architecture/instruction calls would be Fftw3.  It's not optimized for 
>>i586 or i686, only i386.  AMD K6 and cousins might prefer i586, big boy 
>>Athlon would obviously prefer athlon, Intel would prefer i686, and 
>>pentium4 architecture for P4s.  However, those optimizations have to be 
>>specified during the configure stage before compile-time.  You can't 
>>choose both Intel (SSE) and AMD (3DNow!) optimizations at the same time, 
>>can you?
> Why do you say so?
>>From the Planet CCRMA repository directory tree:
> planetccrma/mirror/fedora/linux/planetccrma/1/i386/fftw3-3.0.1-1.rhfc1.ccrma.athlon.rpm
> planetccrma/mirror/fedora/linux/planetccrma/1/i386/fftw3-3.0.1-1.rhfc1.ccrma.i386.rpm
> planetccrma/mirror/fedora/linux/planetccrma/1/i386/fftw3-3.0.1-1.rhfc1.ccrma.i586.rpm
> planetccrma/mirror/fedora/linux/planetccrma/1/i386/fftw3-3.0.1-1.rhfc1.ccrma.i686.rpm
> so yes, I'm building those packages with multi architecture
> optimizations. 

Are those new?  OK, apparently I didn't check up on the facts before 
installing.  Maybe that's why APT is complaining

Anyway, what about the flags during the configuration stage?  As far as 
I recall, the program is not making use of SSE or 3DNow! if those aren't 

> An additional comment (this has surfaced in various mailing lists
> several times): on most programs the optimizations may not do much, if
> anything. On modern Intel cpus the advantage of the extra instructions
> is in practice pretty much nil. What does make a difference is the
> instruction ordering and you can optimize that separately from the
> actual mix of instructions used (ie: you can build a binary that has
> instruction ordering optimized for i686 but only uses i386
> instructions). That is how all redhat packages are built (and why it
> does not really make sense to have a "i686" version of them). On athlon
> cpus instruction even ordering is pretty much irrelevant...

I rebuilt Fedora Core 2 Mozilla SRPMS for Fedora Core 1 with the missing 
$RPM_OPT_FLAGS replaced and using --target=i686.  It starts A LOT faster 
than the i386 compilations.  However, this particular does not actually 
include i686 scheduling since the $RPM_OPT_FLAGS is not used, neither in 
the source code nor in the spec file (and many other Red Hat pacakges 
are that way as well).