我寫了一個CUDA內核,通過MATLAB, 與幾個cuDoubleComplex指針運行。我使用複數雙向量(定義爲gpuArray)激活內核,並且錯誤消息:「參數說明cuDoubleComplex中不支持的類型」。MATLAB中複雜的CUDA內核
如何設置MATLAB知道這種類型?
我寫了一個CUDA內核,通過MATLAB, 與幾個cuDoubleComplex指針運行。我使用複數雙向量(定義爲gpuArray)激活內核,並且錯誤消息:「參數說明cuDoubleComplex中不支持的類型」。MATLAB中複雜的CUDA內核
如何設置MATLAB知道這種類型?
簡短的回答,你不能。
支持的內核類型列表顯示爲here,這就是您的所有內核代碼可以包含的與GPU計算工具箱一起正確編譯的內核。您需要修改代碼以使用double2
代替cuDoubleComplex
,或者向Matlab提供已編譯的PTX代碼以及映射cuDoubleComplex
至double2
的函數聲明。例如
__global__ void mykernel(cuDoubleComplex *a) { .. }
將使用NVCC被編譯爲PTX,然後裝載了在Matlab作爲
k = parallel.gpu.CUDAKernel('mykernel.ptx','double2*');
任一種方法應該工作。
謝謝。我嘗試了第一種方法,它工作正常。 – user3730240
如果你能接受這個答案,那會很好。它將從未回答的問題清單中提出問題,並使未來通過搜索更容易找到答案。 – talonmies
cuDubleComplex?是一個錯字? – talonmies
cuDubleComplex是c中複數的類型,有2個雙精度部分。您可以將此類型與「cuConmplex.h」一起使用,並使用一組函數處理GPU上的複數。 – user3730240
我完全理解它是什麼。再看看我在評論中寫的以及你在問題中寫的是什麼。 cuDubleComplex和cuDoubleComplex不是一回事。你在代碼中使用哪一個? – talonmies