在Matlab中使用GPU进行并行计算

时间:2015-06-06 13:55:35

标签: matlab image-processing cuda parallel-processing

我已达到一个阶段,我的阵列变得庞大,单个功能需要大约2天才能计算出来。

我正在处理图片处理并使用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一起使用。

1 个答案:

答案 0 :(得分:3)

不幸的是,简而言之,你的问题的答案是否定的,它不会起作用。

matlab GPU支持完全不是局部的。接受gpuArray输入的当前支持的函数在:http://de.mathworks.com/help/distcomp/run-built-in-functions-on-a-gpu.html

中给出

所以在我的理解中,由于kmeans不在列表中,它不应该工作。如果我错了,请有人纠正我。

但另一方面,如果你进行谷歌搜索,你可以在GPU上看到第三方matlab实现kmeans。由于我不能尊重代码的质量,我不会发布链接。

祝你好运!