Some problems during cufft and filtering

Hi guys

I have some trouble when using the “batch” with cufft.

I think that batch means the “how many times”. So I decided to use batch, when Fourier transforming of 1000 series of 2048 cells instead of loops. So input data has 2048*1000 cells in 1D array.

However there’s some problems when the filter adaption kernel.

I made the filter which have 2048*1000 cells (1D ramp filters(2048 cells) are arranged 1000 lines)

But I think the filtered data seems like unfiltered.

Here’s my codes. please help me. :">

    nBytesC = sizeof(cufftComplex)*(N/2+1)*batchSize; 
nBytesR = sizeof(cufftReal)*N*batchSize; 
nBytesF = sizeof(float)*N*batchSize; 

float* FilteredProj = new float[N*batchSize];
cufftPlan1d(&planFor, N, CUFFT_R2C, batchSize);
cufftPlan1d(&planInv, N, CUFFT_C2R, batchSize);

    cufftExecR2C(planFor, R_d, C_d); 
// execute the kernel
FilterAdaption<<< (2048*1007)/512, 512 >>>( C_d, F_d, d_out);
cutilCheckMsg("kernel launch failure");
cufftExecC2R(planInv, d_out,Resul);
cudaMemcpy(FilteredProj, Resul, nBytesR, cudaMemcpyDeviceToHost);

Hi guys

I have some trouble when using the “batch” with cufft.

I think that batch means the “how many times”. So I decided to use batch, when Fourier transforming of 1000 series of 2048 cells instead of loops. So input data has 2048*1000 cells in 1D array.

However there’s some problems when the filter adaption kernel.

I made the filter which have 2048*1000 cells (1D ramp filters(2048 cells) are arranged 1000 lines)

But I think the filtered data seems like unfiltered.

Here’s my codes. please help me. :">

    nBytesC = sizeof(cufftComplex)*(N/2+1)*batchSize; 
nBytesR = sizeof(cufftReal)*N*batchSize; 
nBytesF = sizeof(float)*N*batchSize; 

float* FilteredProj = new float[N*batchSize];
cufftPlan1d(&planFor, N, CUFFT_R2C, batchSize);
cufftPlan1d(&planInv, N, CUFFT_C2R, batchSize);

    cufftExecR2C(planFor, R_d, C_d); 
// execute the kernel
FilterAdaption<<< (2048*1007)/512, 512 >>>( C_d, F_d, d_out);
cutilCheckMsg("kernel launch failure");
cufftExecC2R(planInv, d_out,Resul);
cudaMemcpy(FilteredProj, Resul, nBytesR, cudaMemcpyDeviceToHost);