summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'numbench/modules/fftw.py')
-rw-r--r--numbench/modules/fftw.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/numbench/modules/fftw.py b/numbench/modules/fftw.py
new file mode 100644
index 0000000..1283244
--- /dev/null
+++ b/numbench/modules/fftw.py
@@ -0,0 +1,70 @@
+#=====================================================
+# Copyright (C) 2012 Andrea Arteaga <andyspiros@gmail.com>
+#=====================================================
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+from os.path import exists, join as pjoin
+from ..utils import btl
+from internal import btlBase
+from .. import benchconfig as cfg
+
+availableTests = (
+ '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',
+
+ 'FFTW_3D_Forward_Measure', 'FFTW_3D_Forward_Estimate',
+ 'FFTW_3D_Backward_Measure', 'FFTW_3D_Backward_Estimate',
+)
+defaultTests = availableTests
+
+
+class Module:
+ libname = 'fftw'
+ descr = 'Test module for FFTW library'
+
+ def __init__(self, args):
+ self.tests = btl.selectTests(availableTests, args)
+ if len(self.tests) == 0:
+ self.tests = defaultTests
+
+ def getImplementations(self, test):
+ ret = ['fftw3']
+ for impl in ('fftw3_threads', 'fftw3_omp'):
+ l = pjoin(test['root'], cfg.libdir, 'lib'+impl+'.so')
+ if exists(l):
+ ret.append(impl)
+ return ret
+
+ def runTest(self, test, implementation):
+ # Set up btlconfig
+ btlconfig = dict (
+ source = 'libs/FFTW/main.cpp',
+ exe = pjoin(test['testdir'], implementation, 'test'),
+ libraries = [implementation, 'm'],
+ logdir = pjoin(test['logdir'], implementation),
+ testdir = pjoin(test['testdir'], implementation),
+ tests = self.tests
+ )
+
+ if implementation != 'fftw3':
+ btlconfig['libraries'].append('fftw3')
+
+ return btlBase.runTest(self, test, btlconfig)
+
+ getTests = btlBase.getTests
+ reportConf = btlBase.reportConf \ No newline at end of file