36 int bench_openmp(FILE *infile,
int n,
int m,
int p,
double _Complex (*kernel)(
double ,
int ,
const double *),
double c,
double eps_I,
double eps_B)
42 double r_max = 0.25 - my_fastsum_plan.
eps_B/2.0;
46 fscanf(infile,
"%d %d %d", &d, &L, &M);
49 fftw_import_wisdom_from_filename(
"fastsum_benchomp_detail_threads.plan");
51 fftw_import_wisdom_from_filename(
"fastsum_benchomp_detail_single.plan");
54 fastsum_init_guru(&my_fastsum_plan, d, L, M, kernel, &c, NEARFIELD_BOXES, n, m, p, eps_I, eps_B);
57 fftw_export_wisdom_to_filename(
"fastsum_benchomp_detail_threads.plan");
59 fftw_export_wisdom_to_filename(
"fastsum_benchomp_detail_single.plan");
67 fscanf(infile,
"%lg", &v);
68 my_fastsum_plan.
x[d*j+t] = v * r_max;
74 fscanf(infile,
"%lg %lg", &re, &im);
75 my_fastsum_plan.
alpha[j] = re + _Complex_I * im;
83 fscanf(infile,
"%lg", &v);
84 my_fastsum_plan.
y[d*j+t] = v * r_max;
95 tt_total = nfft_elapsed_seconds(t1,t0);
111 #ifndef MEASURE_TIME_FFTW
116 printf(
"%.6e %.6e %.6e %6e %.6e %.6e %.6e %.6e %.6e %6e %.6e %.6e %6e %.6e %.6e %6e\n", my_fastsum_plan.
MEASURE_TIME_t[0], my_fastsum_plan.
MEASURE_TIME_t[1], my_fastsum_plan.
MEASURE_TIME_t[2], my_fastsum_plan.
MEASURE_TIME_t[3], my_fastsum_plan.
MEASURE_TIME_t[4], my_fastsum_plan.
MEASURE_TIME_t[5], my_fastsum_plan.
MEASURE_TIME_t[6], my_fastsum_plan.
MEASURE_TIME_t[7], tt_total-my_fastsum_plan.
MEASURE_TIME_t[0]-my_fastsum_plan.
MEASURE_TIME_t[1]-my_fastsum_plan.
MEASURE_TIME_t[2]-my_fastsum_plan.
MEASURE_TIME_t[3]-my_fastsum_plan.
MEASURE_TIME_t[4]-my_fastsum_plan.
MEASURE_TIME_t[5]-my_fastsum_plan.
MEASURE_TIME_t[6]-my_fastsum_plan.
MEASURE_TIME_t[7], tt_total, my_fastsum_plan.
mv1.
MEASURE_TIME_t[0], my_fastsum_plan.
mv1.
MEASURE_TIME_t[1], my_fastsum_plan.
mv1.
MEASURE_TIME_t[2], my_fastsum_plan.
mv2.
MEASURE_TIME_t[0], my_fastsum_plan.
mv2.
MEASURE_TIME_t[1], my_fastsum_plan.
mv2.
MEASURE_TIME_t[2]);
123 int main(
int argc,
char **argv)
129 double _Complex (*kernel)(double , int ,
const double *);
141 nthreads = atoi(argv[8]);
143 omp_set_num_threads(nthreads);
156 if (strcmp(s,
"gaussian")==0)
158 else if (strcmp(s,
"multiquadric")==0)
159 kernel = multiquadric;
160 else if (strcmp(s,
"inverse_multiquadric")==0)
161 kernel = inverse_multiquadric;
162 else if (strcmp(s,
"logarithm")==0)
164 else if (strcmp(s,
"thinplate_spline")==0)
165 kernel = thinplate_spline;
166 else if (strcmp(s,
"one_over_square")==0)
167 kernel = one_over_square;
168 else if (strcmp(s,
"one_over_modulus")==0)
169 kernel = one_over_modulus;
170 else if (strcmp(s,
"one_over_x")==0)
172 else if (strcmp(s,
"inverse_multiquadric3")==0)
173 kernel = inverse_multiquadric3;
174 else if (strcmp(s,
"sinc_kernel")==0)
175 kernel = sinc_kernel;
176 else if (strcmp(s,
"cosc")==0)
178 else if (strcmp(s,
"cot")==0)
183 kernel = multiquadric;
186 bench_openmp(stdin, n, m, p, kernel, c, eps_I, eps_B);