FFT support libraries

Steffen Persvold sp at scali.no
Thu Jul 26 13:10:03 PDT 2001


I'm trying to port a fortran application using SGI FFT functions (complib.sgimath) to
Linux. The only FFT functions that are used are zfft1di and zfft1d. I understand that
these are double complex functions and I've downloaded the double precision fftpack from
netlib.org (dfftpack). However, the dfftpack routines zffti and zfft{f,b} doesn't seem to
match the SGI functions. This is how the application uses the functions :

	INTEGER           ngp
	COMPLEX*16        fftworkspace(ngp+15)

	CALL ZFFT1DI(ngp,fftworkspace)

So fa this matches the call to ZFFTI in dfftpack, except that in the dfftpack doc it says

subroutine zffti(n,wsave)

input parameter

n       the length of the sequence to be transformed

output parameter

wsave   a work array which must be dimensioned at least 4*n+15
        the same work array can be used for both zfftf and zfftb
        as long as n remains unchanged. different wsave arrays
        are required for different values of n. the contents of
        wsave must not be changed between calls of zfftf or zfftb.

which doesn't seem to match the size of my fftworkspace.

Then the application calls zfft1d :
      INTEGER           nloc,ngp,i,direction
      COMPLEX*16        E_SLICE(ngp,nloc)

*     --- Perform 1D Row FFTs -------------------------------
      DO i=1,nloc
          CALL ZFFT1D(direction,ngp,E_SLICE(1,i),1,fftworkspace)

The dfftpack doc says :

subroutine zfftf(n,c,wsave)
subroutine zfftb(n,c,wsave)

input parameters

n      the length of the complex sequence c. the method is
c      a complex array of length n which contains the sequence

wsave   a real work array which must be dimensioned at least 4n+15

output parameters

c      for j=1,...,n

Now, here I guess that the direction parameter to ZFFT1D is just a way to decide wether to
use a forward or a backward FFT, but what is the parameter after E_SLICE ??.

So, is there any _real_ documentation on how the SGI FFT functions work and their
parameters (I've found some man pages but they don't say much) ? Any other libraries I can
try that are directly compatible ??

Any help appreciated.

  Steffen Persvold               Systems Engineer
  Email : mailto:sp at scali.no     Scali AS (http://www.scali.com)
  Tlf   : (+47) 22 62 89 50      Olaf Helsets vei 6
  Fax   : (+47) 22 62 89 51      N-0621 Oslo, Norway

More information about the Beowulf mailing list