cufftGetSize1d中的CUFFT_INVALID_VALUE

时间:2014-10-06 13:49:07

标签: cuda fft cufft

使用cufftGetSize1d(或任何cufftGetSize*)函数的正确方法是什么?

我尝试过:

cufftHandle plan;
size_t workSize;
cufftResult result;
cufftCreate(&plan);
result = cufftGetSize1d(plan, 1000, CUFFT_C2C, 1, &workSize);

但是,无论我使用的大小,类型或批次,上次调用的结果始终为CUFFT_INVALID_VALUE。 2d和3d变体也是如此。 cufftEstimate1d正常工作。

1 个答案:

答案 0 :(得分:2)

这似乎是在CUDA 6发布周期中引入并随后在CUDA 7中修复的错误。以下代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/flxform"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:background="@android:color/transparent"
    android:orientation="vertical" >
</LinearLayout>     

在编译时使用CUFFT_INVALID_VALUE失败并使用CUDA 6.5中提供的CUFFT运行,但在CUDA 7.0中针对CUFFT版本构建和运行时成功。如评论中所述,#include <iostream> #include <cufft.h> int main() { cufftHandle plan; size_t workSize; cufftResult result; cufftCreate(&plan); result = cufftGetSize1d(plan, 1000, CUFFT_C2C, 1, &workSize); std::cout << "result = " << result << std::endl; return 0; } 似乎在CUDA 6.5中正常运行。因此,解决方法是使用cufftGetSize或升级到比CUDA 6.5版本的CUFFT更新。

[此社区维基条目主要是通过评论添加,以便将此问题从未回答的问题列表中删除]