diff options
Diffstat (limited to 'numbench/fftw.py')
-rw-r--r-- | numbench/fftw.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/numbench/fftw.py b/numbench/fftw.py new file mode 100644 index 0000000..1d97c02 --- /dev/null +++ b/numbench/fftw.py @@ -0,0 +1,64 @@ +import os, btlbase + +class Module(btlbase.BTLBase): + def _initialize(self): + self.libname = "fftw" + self.avail = ( + "FFTW_1D_Forward_Measure", "FFTW_1D_Forward_Estimate", + "FFTW_1D_Backward_Measure", "FFTW_1D_Backward_Estimate", + + "FFTW_2D_Forward_Measure", "FFTW_2D_Forward_Estimate", + "FFTW_2D_Backward_Measure", "FFTW_2D_Backward_Estimate" + ) + + def _parse_args(self, args): + # Parse arguments + tests = [] + for i in args: + if i in self.avail: + tests.append(i) + continue + raise Exception("Argument not recognized: " + i) + + # Sort tests + self.tests = [i for i in self.avail if i in tests] + + # If no test is specified, run everything + if len(self.tests) == 0: + self.tests = self.avail + + btlbase.BTLBase._parse_args(self, args) + + @staticmethod + def get_impls(root): + return ['fftw', 'fftw_threads'] + + def instructionsFor(self, impl): + Print("Use command 'pkg-config --cflags --libs " + impl + \ + "' when compiling") + + @staticmethod + def _testClass(): + return FFTWTest + + + +class FFTWTest(btlbase.BTLTest): + + def _get_flags(self): + if self.impl == 'fftw': + return ['-lfftw3', '-lm', '-g3'] + elif self.impl == 'fftw_threads': + return ['-lfftw3_threads', '-lm'] + + @staticmethod + def _btl_source(): + return "libs/FFTW/main.cpp" + + @staticmethod + def _btl_includes(): + return ["libs/FFTW"] + + @staticmethod + def _btl_defines(): + return []
\ No newline at end of file |