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

发布于 2024-10-21 03:40:35 字数 186 浏览 2 评论 0原文

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

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

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

谢谢

I am trying to figure out how to use the batch mode offered in the CUFFT library.

I basically have an image that is 5300 pixels wide and 3500 tall. Currently this means I am running 3500 1D FFT's on those 5300 elements using FFTW.

Is this a good candidate problem to run the CUFFT library in batch mode? How does the data have to be set up to do this problem?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

几度春秋 2024-10-28 03:40:36

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

要使用批处理模式,需要连续存储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 手册。

yes, you can use the batch mode.

To use the batch mode,the 5300 elements should be stored continuously.

That means the distance between adjacent batches is 5300.
You can go this way:

..........
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(......);
......

For more details see the CUFFT Manual.

清浅ˋ旧时光 2024-10-28 03:40:36

是的,这是一个好问题。

您应该按照以下方式进行操作:

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

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

yes this is a good problem.

You should go the following way:

  1. create a array with size: sizeof(cufftComplex)*5300*3500 at the gpu(here I assume that you have complex input data)
  2. copy your data to the gpu
  3. create a plan with cufftPlan1d()
  4. execute the plan for example with cufftExecC2C()

For more Information you must have a look at the CUFFT Manual

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文