2014-02-17 46 views
0

我想知道如何將矩陣從Matlab傳遞到C++ CUDA文件(* .ptx)。 我想在每個線程中以不同的方式處理矩陣!我絕對不想在不同的線程中分割矩陣!我希望每個線程都有相同的矩陣!如何在使用CUDA和Matlab時使用矩陣作爲參數

Matlab and CUDA (C++)

我已經試過類似:

_global_ void radialAverage(int* image[][]) { 
    ... 
} 

,但沒有奏效。我收到以下錯誤:

kernel.cu(8): error: an array may not have elements of this type 
1 error detected in the compilation of "C:/Users/ADMINI~1/AppData/Loca/Temp/tmpxft_00000c44_00000000-8_kernel.cpp1.ii". 

你能想到任何方式做到這一點嗎?或者可能嗎?

btw:我沒有使用任何C++庫,只有CUDA-Api。

+0

你能發佈你收到的錯誤嗎? –

+0

kernel.cu(8):error:一個數組可能沒有這種類型的元素 編譯「C:/Users/ADMINI~1/AppData/Local/Temp/tmpxft_00000c44_00000000-8_kernel.cpp1」時檢測到1錯誤。 II」。 – TheTrueFreeStyle

回答

1

定義內核從Matlab傳遞矩陣的正確方法清楚地顯示在您鏈接到您的問題的頁面上(多次)。

總之,這樣定義內核(Matlab的gpuArray是自動傳遞作爲設備指向內核):

__global__ void radialAverage(int* image) { 
    ... 
} 

之後檢索使用CUDAKernel從工具箱內核,創建一個整數gpuArray從你的Matlab矩陣,並將其傳遞給內核函數。

+0

好吧..我會嘗試 – TheTrueFreeStyle

+0

當我嘗試你的解決方案時,我得到了錯誤:「kernel.cu(55):錯誤:表達式必須有指向對象類型」我認爲這是因爲他不接受指針作爲一個多維數組! – TheTrueFreeStyle

+0

對於由指針傳遞的數組,不能在CUDA內核中使用'[] []'樣式索引。這個錯誤實際上是一個不同的問題 - 「我如何將Matlab數組索引到內核中」。請用一些真實的代碼更新你的問題..... – talonmies