2015-06-06 95 views
1

我已經到了一個階段,我的數組變得很龐大,一個函數需要大約2天才能計算。在Matlab中使用GPU進行並行計算

我正在使用圖像處理和使用kmeansgmm - fitgmdist

我有一個工作站與Nvidia Tesla GPU的支持列表上,我想用他們的處理能力來幫助加快我的工作。

查看文檔,我明白爲了使用GPU函數,我所要做的就是先將傳遞給函數的數組傳遞給GPU。即

model_feats = get_feats(all_imges); 
kmeans = kmeans(model_feats, gaussians, 'EmptyAction','singleton', 'MaxIter',1000); 
gmm{i} = fitgmdist(model_feats, 128, 'Options',statset('MaxIter',1000), ... 
      'CovType','diagonal', 'SharedCov',false, 'Regularize',0.01, 'Start',cInd); 

我所有的處理時間都被這兩個函數佔用。因此,如果我要使用GPU內核,那我所要做的就是使用gpuArray函數嗎?例如以上將變成:

temp_feats = get_feats(all_imges); 
model_feats = gpuArray(temp_feats); 

kmeans = kmeans(model_feats, gaussians, 'EmptyAction','singleton', 'MaxIter',1000); 
gmm{i} = fitgmdist(model_feats, 128, 'Options',statset('MaxIter',1000), ... 
      'CovType','diagonal', 'SharedCov',false, 'Regularize',0.01, 'Start',cInd); 

這項工作?通過首先將數組傳遞給gpuArray,它可以用於任何函數嗎?

P.S.對不起,我必須在這裏問,而不是自己嘗試,但我 到目前爲止還無法訪問工作站,但我可以請求訪問 。在我請求訪問它之前,我想確定我的 腳本是否可以與gpuArray一起使用。

回答

3

不幸的是,總之你的問題的答案是否定的,它不會工作。

matlab GPU支持只是部分。目前支持的接受gpuArray輸入的函數如下:http://de.mathworks.com/help/distcomp/run-built-in-functions-on-a-gpu.html

所以在我的理解中,因爲kmeans不在列表中,所以它不應該工作。有人請糾正我,如果我錯了。

但另一方面,如果您執行谷歌搜索,您可以在GPU上看到kmeans的第三方matlab實現。由於我無法授予代碼的質量,因此我不會發布鏈接。

祝你好運!