Преглед на файлове

Fix fft usage above 65536 floats: the in and out parameters need to be different, otherwize fft starts optimizing by always putting the result in the in parameter...

Samuel Thibault преди 13 години
родител
ревизия
96148d837c
променени са 3 файла, в които са добавени 8 реда и са изтрити 8 реда
  1. 3 3
      examples/starpufft/starpufftx1d.c
  2. 3 3
      examples/starpufft/starpufftx2d.c
  3. 2 2
      examples/starpufft/testx.c

+ 3 - 3
examples/starpufft/starpufftx1d.c

@@ -557,19 +557,19 @@ if (PARALLEL) {
 			/* first fft plan: one fft of size n2.
 			 * FFTW imposes that buffer pointers are known at
 			 * planning time. */
-			plan->plans[workerid].plan1_cpu = _FFTW(plan_dft_1d)(n2, NULL, NULL, sign, _FFTW_FLAGS);
+			plan->plans[workerid].plan1_cpu = _FFTW(plan_dft_1d)(n2, NULL, (void*) 1, sign, _FFTW_FLAGS);
 			STARPU_ASSERT(plan->plans[workerid].plan1_cpu);
 
 			/* second fft plan: n3 ffts of size n1 */
 			plan->plans[workerid].plan2_cpu = _FFTW(plan_many_dft)(plan->dim,
 					plan->n1, n3,
 					NULL, NULL, 1, plan->totsize1,
-					NULL, NULL, 1, plan->totsize1,
+					(void*) 1, NULL, 1, plan->totsize1,
 					sign, _FFTW_FLAGS);
 			STARPU_ASSERT(plan->plans[workerid].plan2_cpu);
 } else {
 			/* fft plan: one fft of size n. */
-			plan->plans[workerid].plan_cpu = _FFTW(plan_dft_1d)(n, NULL, NULL, sign, _FFTW_FLAGS);
+			plan->plans[workerid].plan_cpu = _FFTW(plan_dft_1d)(n, NULL, (void*) 1, sign, _FFTW_FLAGS);
 			STARPU_ASSERT(plan->plans[workerid].plan_cpu);
 }
 #else

+ 3 - 3
examples/starpufft/starpufftx2d.c

@@ -559,19 +559,19 @@ if (PARALLEL) {
 #ifdef STARPU_HAVE_FFTW
 if (PARALLEL) {
 			/* first fft plan: one n2*m2 fft */
-			plan->plans[workerid].plan1_cpu = _FFTW(plan_dft_2d)(n2, m2, NULL, NULL, sign, _FFTW_FLAGS);
+			plan->plans[workerid].plan1_cpu = _FFTW(plan_dft_2d)(n2, m2, NULL, (void*) 1, sign, _FFTW_FLAGS);
 			STARPU_ASSERT(plan->plans[workerid].plan1_cpu);
 
 			/* second fft plan: n3*m3 n1*m1 ffts */
 			plan->plans[workerid].plan2_cpu = _FFTW(plan_many_dft)(plan->dim,
 					plan->n1, n3*m3,
 					NULL, NULL, 1, plan->totsize1,
-					NULL, NULL, 1, plan->totsize1,
+					(void*) 1, NULL, 1, plan->totsize1,
 					sign, _FFTW_FLAGS);
 			STARPU_ASSERT(plan->plans[workerid].plan2_cpu);
 } else {
 			/* fft plan: one fft of size n, m. */
-			plan->plans[workerid].plan_cpu = _FFTW(plan_dft_2d)(n, m, NULL, NULL, sign, _FFTW_FLAGS);
+			plan->plans[workerid].plan_cpu = _FFTW(plan_dft_2d)(n, m, NULL, (void*) 1, sign, _FFTW_FLAGS);
 			STARPU_ASSERT(plan->plans[workerid].plan_cpu);
 }
 #else

+ 2 - 2
examples/starpufft/testx.c

@@ -158,7 +158,7 @@ int main(int argc, char *argv[]) {
 	if (argc == 2) {
 		plan = STARPUFFT(plan_dft_1d)(n, SIGN, 0);
 #ifdef STARPU_HAVE_FFTW
-		fftw_plan = _FFTW(plan_dft_1d)(n, NULL, NULL, SIGN, FFTW_ESTIMATE);
+		fftw_plan = _FFTW(plan_dft_1d)(n, NULL, (void*) 1, SIGN, FFTW_ESTIMATE);
 #endif
 #ifdef STARPU_USE_CUDA
 		if (cufftPlan1d(&cuda_plan, n, _CUFFT_C2C, 1) != CUFFT_SUCCESS)
@@ -168,7 +168,7 @@ int main(int argc, char *argv[]) {
 	} else if (argc == 3) {
 		plan = STARPUFFT(plan_dft_2d)(n, m, SIGN, 0);
 #ifdef STARPU_HAVE_FFTW
-		fftw_plan = _FFTW(plan_dft_2d)(n, m, NULL, NULL, SIGN, FFTW_ESTIMATE);
+		fftw_plan = _FFTW(plan_dft_2d)(n, m, NULL, (void*) 1, SIGN, FFTW_ESTIMATE);
 #endif
 #ifdef STARPU_USE_CUDA
 		STARPU_ASSERT(cufftPlan2d(&cuda_plan, n, m, _CUFFT_C2C) == CUFFT_SUCCESS);