2013-04-07 44 views
1

我一直很高兴忽视这一点,但它现在已经成为一个相当大的问题 - 我希望你们能帮助我。尽管复制指南,cudaMallocPitch'无效参数'?

我打电话给cudaMallocPitch,但无论我尝试什么,它总是给我红色下划线和'无效参数'错误。即使我从Nvidia CUDA C编程指南复制源代码,它仍然会给我错误。我对CUDA相当陌生,所以请不要犹豫,指出任何你可能认为会导致问题的明显因素。

这里我指的是确切的代码:

int width = 64, height = 64; 
    float* devPtr; 
    size_t pitch; 
    cudaMallocPitch(&devPtr, pitch, 
        width * sizeof(float), height); 

任何意见是极大的赞赏,欢呼声。

+0

它编译虽然? – 2013-04-07 23:10:35

回答

1

第二个参数应该是size_t*,但您传递的是size_t。试试这个:

cudaMallocPitch(&devPtr, &pitch, width * sizeof(float), height); 

请注意,最后一个参数类型也是size_t。也许height会更好,作为size_t

+0

由于[cudaMallocPitch](http://docs.nvidia.com/cuda/cuda-runtime-api/index.html#group__CUDART__MEMORY_1g80d689bc903792f906e49be4a0b6d8db)期望将音调报告回调用过程,所以我们必须将其音调地址变量(即作为指针传递,通过引用),因此它可以在调用过程中修改'pitch“。 'height'作为'int'而不是'size_t'应该不重要。 – 2013-04-07 23:33:19

+0

仍然没有运气!我试过你的代码,以及使用height作为size_t,但它仍然有红色下划线和相同的错误 – Boyentenbi 2013-04-07 23:37:25

+1

红色下划线可能是在VS中使用CUDA的副作用。您可能需要搜索“CUDA红色下划线”以查看关于此的更多信息。如果代码编译并正确运行(使用[错误检查!!!](http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-errors-using-the -cuda-runtime-api))红色下划线是一个红鲱鱼。否则,发布由他们*编译器*和/或*运行时错误*返回的错误,而不是使用intellisense/visual studio返回的错误。 – 2013-04-07 23:42:20