Actions

icon Post
text/html Subscribe
text/html Unsubscribe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vsipl++] patch: enable/disable fftwf, fftw, and fftwl individually


  • To: Stefan Seefeld <stefan@xxxxxxxxxxxxxxxx>
  • Subject: Re: [vsipl++] patch: enable/disable fftwf, fftw, and fftwl individually
  • From: Jules Bergmann <jules@xxxxxxxxxxxxxxxx>
  • Date: Fri, 30 May 2008 16:10:52 -0400

Stefan Seefeld wrote:
The attached patch probes at configure-time for those three libraries, defines VSIP_IMPL_FFTW3_HAVE_{FLOAT, DOUBLE, LONG_DOUBLE} appropriately, and then only enables and defines bindings for the available types.

OK to check in ?

Stefan,

The provide_fft_{float,double,long_double} variables advertise to the
program what FFT types are supported.  They are global across all the
different backends.

provide_fft_{float,double,long_double} are initially set to 0.  If a
backend is enabled that provides a certain FFT (say SAL provides float
FFT, or IPP provides double), then the appropriate variable is set to
1.  This gets used to set the VSIP_IMPL_PROVIDE_FFT_{TYPE} macros in
configure.ac.

If the FFTW3 BE clears these flags back to 0 as part of its configuration logic, any 1's set by FFT BEs earlier in the list will be overwritten.

An easy way to resolve this is to use a new set of variables specific
to FFTW3.  "fftw3_has_{type}" for example.

				-- Jules



Index: m4/fft.m4
===================================================================
--- m4/fft.m4	(revision 209798)
+++ m4/fft.m4	(working copy)
@@ -184,7 +184,6 @@
        LIBS=$keep_LIBS])
   fi
 fi
-
 if test "$enable_builtin_fft" != "no"; then
AC_MSG_NOTICE([Using built-in FFTW3 support.])
@@ -206,15 +205,19 @@
       AC_MSG_RESULT([not a supported type.])
       AC_MSG_NOTICE([Disabling FFT support (--disable-fft-long-double).])
enable_fft_long_double=no + provide_fft_long_double=0

This may hide a '1' set by another BE.

     elif test $ac_cv_sizeof_long_double = $ac_cv_sizeof_double; then
       AC_MSG_RESULT([same size as double.])
       AC_MSG_NOTICE([Disabling FFT support (--disable-fft-long-double).])
enable_fft_long_double=no + provide_fft_long_double=0

Likewise.

     else
       AC_MSG_RESULT([supported.])
+      provide_fft_long_double=1
     fi
+    provide_fft_float=1
+    provide_fft_double=1

The idea is that provide_fft_{type} is initialized to 0, then set to
1 when BE support is discovered.  Setting to 1 first, then clearing if
FFTW3 doesn't support the type won't play nicely with other backends.





Index: src/vsip/opt/fftw3/fft.hpp

These changes look good.

Index: src/vsip/opt/fftw3/fft.cpp

Likewise.



--
Jules Bergmann
CodeSourcery
jules@xxxxxxxxxxxxxxxx
(650) 331-3385 x705