【问题标题】:Using the GPU for parallel computing in Matlab在 Matlab 中使用 GPU 进行并行计算
【发布时间】:2015-08-21 10:01:54
【问题描述】:

我已经到了一个阶段,我的数组变得庞大,单个函数需要大约 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,它是否适用于任何函数?

附:对不起,我不得不在这里问,而不是自己尝试,但我确实这样做了 目前无法访问工作站,但我可以请求访问 给它。在我请求访问它之前,我想确定我的 脚本将与 gpuArray 一起使用。

【问题讨论】:

    标签: matlab image-processing cuda parallel-processing


    【解决方案1】:

    很遗憾,简而言之,您的问题的答案是否定的,它不会起作用。

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

    因此,据我了解,由于 kmeans 不在列表中,因此它应该不起作用。如果我错了,请有人纠正我。

    但另一方面,如果您进行 google 搜索,您可以在 GPU 上看到 kmeans 的 3rd 方 matlab 实现。由于我不能授予代码质量,我不会发布链接。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 2011-11-23
      • 1970-01-01
      • 2016-07-09
      • 2016-10-11
      相关资源
      最近更新 更多