Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用CUFFT的批处理模式?_C++_Cuda_Fft_Fftw - Fatal编程技术网

C++ 如何使用CUFFT的批处理模式?

C++ 如何使用CUFFT的批处理模式?,c++,cuda,fft,fftw,C++,Cuda,Fft,Fftw,我试图弄清楚如何使用CUFFT库中提供的批处理模式 我基本上有一个5300像素宽,3500像素高的图像。目前,这意味着我正在使用FFTW在这些5300个元素上运行3500 1D FFT 在批处理模式下运行CUFFT库时,这是一个很好的候选问题吗?为了解决这个问题,必须如何设置数据 谢谢是的,这是个好问题 你应该走下面的路: 在gpu上创建一个大小为:sizeof(cufftComplex)*5300*3500的阵列(这里我假设您有复杂的输入数据) 将数据复制到gpu 使用cufftPlan1d(

我试图弄清楚如何使用CUFFT库中提供的批处理模式

我基本上有一个5300像素宽,3500像素高的图像。目前,这意味着我正在使用FFTW在这些5300个元素上运行3500 1D FFT

在批处理模式下运行CUFFT库时,这是一个很好的候选问题吗?为了解决这个问题,必须如何设置数据


谢谢

是的,这是个好问题

你应该走下面的路:

  • 在gpu上创建一个大小为:sizeof(cufftComplex)*5300*3500的阵列(这里我假设您有复杂的输入数据)
  • 将数据复制到gpu
  • 使用cufftPlan1d()创建计划
  • 例如,使用cufftExecC2C()执行计划

  • 有关更多信息,您必须查看袖口手册

    是的,您可以使用批处理模式

    要使用批处理模式,应连续存储5300个元素

    这意味着相邻批次之间的距离为5300。 你可以走这条路:

    ..........
    cufftComplex *host;
    cufftComplex *device;
    CudaMallocHost((void **)&host,sizeof(cufftComplex)*5300*3500);
    CudaMalloc((void **)&devcie,sizeof(cufftComplex)*5300*3500);
    //here add the elements,like this:
    //host[0-5299] the first batch, host[5300-10599] the second batch ,and up to the 3500th batch.
    CudaMemcpy(device,host,sizeof(cufftComplex)*5300*3500,......);
    CufftPlan1d(&device,5300,type,3500);
    CufftExecC2C(......);
    ......
    

    有关更多详细信息,请参阅袖口手册。

    欢迎使用StackOverflow。如果你也能从袖口手册中找到几个链接,我会很高兴:)