【问题标题】:How do you use the batch mode of CUFFT?如何使用 CUFFT 的批处理模式?
【发布时间】:2011-07-11 05:05:30
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: c++ cuda fft fftw


    【解决方案1】:

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

    要使用批处理模式,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(......);
    ......
    

    有关详细信息,请参阅 CUFFT 手册。

    【讨论】:

    • 欢迎来到 StackOverflow。如果您也可以从 CUFFT 手册中获取几个链接,我会很好:)
    【解决方案2】:

    是的,这是个好问题。

    你应该走以下路:

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

    有关更多信息,您必须查看 CUFFT 手册

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 2023-03-15
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 2015-12-06
      • 1970-01-01
      相关资源
      最近更新 更多