diff options
| author | Leandro A. F. Pereira <leandro@hardinfo.org> | 2010-05-03 09:25:43 -0300 | 
|---|---|---|
| committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2010-05-03 09:25:43 -0300 | 
| commit | 9a50155ec3e27aa6cedf3f118196f1947c769a29 (patch) | |
| tree | c23cc6949b227b9e09432af038a44ccb81d92ce6 /hardinfo2/modules/benchmark/fft.c | |
| parent | ca5a3e84296a34c2391374942001cfaf1d8395a6 (diff) | |
Use CMake instead of ToscoConf.
Diffstat (limited to 'hardinfo2/modules/benchmark/fft.c')
| -rw-r--r-- | hardinfo2/modules/benchmark/fft.c | 65 | 
1 files changed, 65 insertions, 0 deletions
diff --git a/hardinfo2/modules/benchmark/fft.c b/hardinfo2/modules/benchmark/fft.c new file mode 100644 index 00000000..f1a0ced8 --- /dev/null +++ b/hardinfo2/modules/benchmark/fft.c @@ -0,0 +1,65 @@ +/* + *    HardInfo - Displays System Information + *    Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org> + * + *    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, version 2. + * + *    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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA + */ + +#include <fftbench.h> + +static gpointer fft_for(unsigned int start, unsigned int end, void *data, gint thread_number) +{ +    unsigned int i; +    FFTBench **benches = (FFTBench **)data; +    FFTBench *fftbench = (FFTBench *)(benches[thread_number]); +     +    for (i = start; i <= end; i++) {  +        fft_bench_run(fftbench); +    } +     +    return NULL; +} + +static void +benchmark_fft(void) +{ +    gdouble elapsed = 0; +    int n_cores, i; +    gchar *temp; +    FFTBench **benches; +     +    shell_view_set_enabled(FALSE); +    shell_status_update("Running FFT benchmark..."); +         +    /* Pre-allocate all benchmarks */ +    temp = module_call_method("devices::getProcessorCount"); +    n_cores = temp ? atoi(temp) : 1; +    g_free(temp); +     +    benches = g_new0(FFTBench *, n_cores); +    for (i = 0; i < n_cores; i++) { +      benches[i] = fft_bench_new(); +    } +     +    /* Run the benchmark */ +    elapsed = benchmark_parallel_for(0, 4, fft_for, benches); +     +    /* Free up the memory */ +    for (i = 0; i < n_cores; i++) { +      fft_bench_free(benches[i]); +    } +    g_free(benches); +         +    bench_results[BENCHMARK_FFT] = elapsed; +}  | 
