Révision 3

FFT/FFT2D.c (revision 3)
45 45
#define FFTW_EXECUTE fftwf_execute
46 46
#define FFTW_DESTROY_PLAN fftwf_destroy_plan
47 47
#define FFTW_FREE fftwf_free
48

  
49
#define CUFFTCOMPLEX cufftComplex
50
#define CUFFT_X2X CUFFT_C2C
51
#define CUFFTEXECX2X cufftExecC2C
52

  
48 53
#elif DOUBLE
49 54
#define FFTW_COMPLEX fftw_complex
50 55
#define FFTW_PLAN fftw_plan
......
55 60
#define FFTW_EXECUTE fftw_execute
56 61
#define FFTW_DESTROY_PLAN fftw_destroy_plan
57 62
#define FFTW_FREE fftw_free
63

  
64
#define CUFFTCOMPLEX cufftDoubleComplex
65
#define CUFFT_X2X CUFFT_Z2Z
66
#define CUFFTEXECX2X cufftExecZ2Z
67

  
58 68
#endif
59 69

  
60 70
int main(int argc,char **argv)
......
108 118
        
109 119
#ifdef CUFFT
110 120
  cufftHandle plan;
111
  cufftComplex *in, *devin;
121
  CUFFTCOMPLEX *in, *devin;
112 122

  
113
  size_t arraySize = sizeof(cufftComplex)*size*size;
123
  size_t arraySize = sizeof(CUFFTCOMPLEX)*size*size;
114 124
  cudaMallocHost((void**) &in, arraySize);
115 125
  cudaMalloc((void**) &devin, arraySize);
116 126
    
......
126 136
  gettimeofday(&tv1, &tz);
127 137
  
128 138
  // Plan & copy to device
129
  cufftPlan2d(&plan, size, size, CUFFT_C2C);
139
  cufftPlan2d(&plan, size, size, CUFFT_X2X);
130 140
  cudaMemcpy(devin, in, arraySize, cudaMemcpyHostToDevice);
131 141

  
132 142
  // Second timer to end plan      
......
139 149

  
140 150
  // Process
141 151
  for (i=0;i<nloops;i++) {
142
    cufftExecC2C(plan, devin, devin, CUFFT_FORWARD);
152
    CUFFTEXECX2X(plan, devin, devin, CUFFT_FORWARD);
143 153
  }
144 154
    
145 155
  cudaMemcpy(in, devin, arraySize, cudaMemcpyDeviceToHost);

Formats disponibles : Unified diff