cuda - 为什么 cufftPlanMany() 会导致分段错误?
问题描述
我正在尝试使用 cufft MakePlanMany() 函数在行维度中执行二维数组的一维 FFT。不幸的是,当我调用 cufftMakePlanMany 时,它会导致分段错误。我是 C 编程和 CUDA 的新手,所以我可能会犯一个愚蠢的错误。我正在尝试遵循此 StackOverflow答案中的代码示例。 我的数据 (phd) 存储在以行为主的连续内存中。下面是我的代码:
void bpGPU (float *phd, float *complex_image, int Nfft, int NumSamples){
cufftHandle plan;
cufftComplex *d_in, *d_out;
int ds = sizeof(cufftComplex);
ds = Nfft * NumSamples;
cuMemAlloc((void**)&d_in, ds);
cuMemAlloc((void**)&d_out, ds);
int rank=1;
int n = { Nfft };
int inembed[] = {0};
int onembed[] = {0};
int istride = 1, ostride = 1;
int idist = NumSamples, odist = NumSamples;
int batch = Nfft * NumSamples;
cufftPlanMany(&plan, rank, n, inembed, istride, idist, onembed, ostride, odist, CUFFT_C2C, batch);
...
}
我在 cufftPlanMany 之前和之后放置了打印语句,所以我知道这是发生分段错误的地方。任何帮助将不胜感激。
解决方案
值 n 应该是一个数组,我没有这样声明它。相反,我将 n 设置为 FFT 的大小,这当然不是有效的指针。CufftPlanMany 尝试访问无效指针并返回分段错误。
推荐阅读
- javascript - 如何在ajax查询更改大小值时使输入宽度大小动画化
- java - 将子级添加到现有父级时休眠一对多 IntegrityConstraint
- javascript - 未考虑速度 Jquery 切换功能
- javascript - 为什么函数中的 javascript 全局变量会显示错误?
- google-apps-script - Google 表格:在最后一个值大于当前行的列中查找行
- git - 如何显示按目录分组的文件列表的摘要
- django - Dockerizing由nginx服务的多节点python django后端
- elasticsearch - 无法根据查询和文档标记化从弹性搜索中获得正确的结果
- c++ - msvc内联静态成员变量重定义
- c++ - 无锁单生产者/单消费者循环缓冲区