首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试CUFFTW接口计划创建

调试CUFFTW接口计划创建
EN

Stack Overflow用户
提问于 2015-11-25 06:03:31
回答 1查看 288关注 0票数 0

我开始移植一个现有的fftw3应用程序,以使用cuda库。初始阶段是简单地将fftw3.h头替换为cufft.h头,并链接袖fftw3库而不是fftw3库。

这很简单,代码使用nvcc进行编译。但是,当我执行代码时,应用程序无法使用fftw_plan_guru_dft命令创建计划(它只是返回0而不是有效的计划)。

由于没有报告错误,我对如何调试此问题感到困惑。cuda-gdbgdb没有提供任何进一步的洞察力。他们只是报告

代码语言:javascript
复制
Error: Internal error reported by CUDA debugger API (error=7). The application cannot be further debugged.

更新:,下面是最小的工作示例。正如我在对Talonmies的评论中提到的,这个代码是由一个科学的微分方程求解器自动生成的。所以请原谅我的函数名等等。

代码语言:javascript
复制
#define real Re
#define imag Im

#include <complex>

#undef real
#undef imag

#include <cufftw.h>

#include <stdio.h>

int main(void) {
     int _transform_sizes_index = 1, _loop_sizes_index = 0;
     fftw_iodim _transform_sizes[1], _loop_sizes[2];
     _transform_sizes[0].n = 128;
     _transform_sizes[0].is = 0;
     _transform_sizes[0].os = 0;

    fftw_complex _data_in[128] = {0.};

    static fftw_plan _fftw_forward_plan = NULL;
    _fftw_forward_plan = fftw_plan_guru_dft(
          _transform_sizes_index, _transform_sizes,
          _loop_sizes_index, _loop_sizes,
          reinterpret_cast<fftw_complex*>(_data_in),
          reinterpret_cast<fftw_complex*>(_data_in),
          FFTW_FORWARD, FFTW_PATIENT);
    if (!_fftw_forward_plan)
       printf("Error: Unable to create forward plan\n");

    return 0;
}

除非其他人知道我做错了什么,否则fftw3的这一特定功能可能不会被cufftw所支持。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-26 22:35:40

正如魔芋所指出的,fftw_plan_guru_dft在cufftw库中只有部分支持。如果您转而使用基本级别的fftw_plan_dft,则上面的示例将运行。更具体地

代码语言:javascript
复制
#define real Re
#define imag Im

#include <complex>

#undef real
#undef imag

#include <cufftw.h>

#include <stdio.h>

int main(void) {
    int _transform_sizes_index = 1, _loop_sizes_index = 0;
    int _transform_sizes[1] = {128};

    fftw_complex _data_in[128] = {0.};

    static fftw_plan _fftw_forward_plan = NULL;
    _fftw_forward_plan = fftw_plan_dft(
          _transform_sizes_index, _transform_sizes,
          reinterpret_cast<fftw_complex*>(_data_in),
          reinterpret_cast<fftw_complex*>(_data_in),
          FFTW_FORWARD, FFTW_PATIENT);
    if (!_fftw_forward_plan)
       printf("Error: Unable to create forward plan\n");

    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33909492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档