【发布时间】:2015-08-21 10:01:54
【问题描述】:
我已经到了一个阶段,我的数组变得庞大,单个函数需要大约 2 天的时间来计算。
我正在处理图像并使用kmeans 和gmm - 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,它是否适用于任何函数?
附:对不起,我不得不在这里问,而不是自己尝试,但我确实这样做了 目前无法访问工作站,但我可以请求访问 给它。在我请求访问它之前,我想确定我的 脚本将与
gpuArray一起使用。
【问题讨论】:
标签: matlab image-processing cuda parallel-processing