[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ccp4bb]: Error running FFT in alpha
*** For details on how to be removed from this list visit the ***
*** CCP4 home page http://www.dl.ac.uk/CCP/CCP4/main.html ***
>>>>> "CCB" == C C Ballard <C.C.Ballard@dl.ac.uk> writes:
CCB> first off, what Alpha machine are you using. Previously we have
CCB> had reports of problems using fft on the XP1000, divide by zero
CCB> in that case.
Both the compiler version and the exact architecture it's targeting
could be relevant.
CCB> That seemed to have been caused by various arrays being
CCB> overwritten, although the problem was not fully tracked down.
Unless they have been redone recently, the CCP4 fftlib routines
disobey the Fortran aliasing and argument-passing rules and have
always been liable to fail with aggressive optimizers for certain
sorts of processor.¹
Also I expect that their structure -- apparently optimized for old
non-optimizing compilers -- is rather pessimized for current systems.²
I remember LTE disagrees, and I don't recall the details of how they
work.
CCB> Several solutions were found though.
CCB> 1. use FFTBIG. This worked. It uses dynamic memory
CCB> allocation.
It also doesn't have the aliasing problem.
CCB> 3. turning off optimization seemed to also cure the problem. Could be
CCB> that it arose due code reordering. Warning: this leads to a large
CCB> performance hit.
The DEC Fortran flag specific to the optimization I'm thinking of is
`-assume dummy_aliases'; there are similar ones in other compilers.
It should show whether that's the problem, at least, and would
minimize the speed hit if it is.
Footnotes:
1. I asked a DEC engineer specifically about DEC Fortran with the sort
of invalid thing that fftlib does, but it's clear what any compiler
could do with it.
2. `FFTW' <URL:http://www.fftw.org/> seems to be state-of-the art in
basic FFT (without the crystallographic symmetry tricks). It's
also generally interesting, but is GPLed and so couldn't be used in
CCP4 without an exception from the authors.
--
If you lie to the compiler it will get its revenge. -- Henry Spencer