Remove fftw2 support

Issue #10 resolved
David Dickinson created an issue

The last version of fftw-2 was released 20 years ago so it is unlikely that we will encounter a system that has fftw2 and not fftw3. By removing fftw2 we should improve the clarity of the code and make it easier to ensure we are thoroughly testing it.

Comments (4)

  1. Joseph Parker

    I agree it should probably remove it, but have the usual squeamishness about removing functional code…

    For people not familiar with the details, we currently support FFTW2 and FFTW3 by preprocessing the source, so that the correct versions of the routine as chosen at compile time:

    # if FFT == _FFTW_  
      ! Routine for fftw2
      subroutine some_routine(fft, is, n)
        ...    
    # elif FFT == _FFTW3_
      ! Same routine but for fftw3  
      subroutine some_routine(fft, is, n)
        ...
    

    It’s all the ###s and logical branches that make the source hard to maintain.

    If we were starting again, perhaps we would make two separate modules fft_work_fftw2 and fft_work_fftw3? If we were to add other FFT implementations, this might be the way to go. But for making fft_work readable, we probably just want to drop FFTW2 support.

    It's worth noting that dropping support for fftw2 would also involve changes to gs2_transforms in the main gs2 repo. Presumably, similar changes would need to be made for AstroGK/Trinity (or at least, users would need to know that fftw2 couldn’t be called any more). Perhaps we could use the utils Makefile to do the compile-time checking on this (see issue #2 😛 )?

  2. Peter Hill

    I’m very much in favour of dropping support for FFTW2. These are the only systems in Makefiles that explicitly use it:

    • bass and bassi: no info, but installed 2005
    • bigben: decommissioned 2010
    • carver: decommissioned 2014
    • davinci: decommissioned
    • edison: decommissioned 2019
    • euclid: no info, but installed 2010
    • franklin: decommissioned 2012
    • hoffman2: still going, but upgraded to FFTW3
    • hopper: decommissioned 2015
    • hopper2: no info, but not listed on NERSC current systems
    • jacquard: no info, but installed 2005
    • jaguar: decommissioned 2012
    • jaguarpf: decommissioned 2012
    • kestrel: no info at all
    • kraken: decommissioned 2014
    • ranger: decommissioned 2013
    • stampede: decommissioned 2017

    So as far as I can tell, there are no existing systems that only have FFTW2.

    Also, we could use this info to delete some historic Makefiles

    EDIT: missed discovery at Dartmouth, but I can’t find any info on it. Website seems to be dead

  3. Log in to comment