2014-06-16 72 views
1

我寫了一個CUDA內核,通過MATLAB, 與幾個cuDoubleComplex指針運行。我使用複數雙向量(定義爲gpuArray)激活內核,並且錯誤消息:「參數說明cuDoubleComplex中不支持的類型」。MATLAB中複雜的CUDA內核

如何設置MATLAB知道這種類型?

+1

cuDubleComplex?是一個錯字? – talonmies

+0

cuDubleComplex是c中複數的類型,有2個雙精度部分。您可以將此類型與「cuConmplex.h」一起使用,並使用一組函數處理GPU上的複數。 – user3730240

+0

我完全理解它是什麼。再看看我在評論中寫的以及你在問題中寫的是什麼。 cuDubleComplex和cuDoubleComplex不是一回事。你在代碼中使用哪一個? – talonmies

回答

2

簡短的回答,你不能。

支持的內核類型列表顯示爲here,這就是您的所有內核代碼可以包含的與GPU計算工具箱一起正確編譯的內核。您需要修改代碼以使用double2代替cuDoubleComplex,或者向Matlab提供已編譯的PTX代碼以及映射cuDoubleComplexdouble2的函數聲明。例如

__global__ void mykernel(cuDoubleComplex *a) { .. } 

將使用NVCC被編譯爲PTX,然後裝載了在Matlab作爲

k = parallel.gpu.CUDAKernel('mykernel.ptx','double2*'); 

任一種方法應該工作。

+0

謝謝。我嘗試了第一種方法,它工作正常。 – user3730240

+0

如果你能接受這個答案,那會很好。它將從未回答的問題清單中提出問題,並使未來通過搜索更容易找到答案。 – talonmies