【问题标题】:Run a MATLAB image processing script on GPU在 GPU 上运行 MATLAB 图像处理脚本
【发布时间】:2020-03-16 06:04:52
【问题描述】:

我正在编写一个脚本,用于创建基于图像的CEDD 特征的数据集。但是当我运行它时,它需要很长时间才能完成它。我想在 gpu 上运行它,以便它可以快速运行。我创建数据集的代码如下:

for i=1:totalFiles
try
    image = readimage(trainingSet,i);   
catch e
   disp(e);  
end
cedd = CEDD(image);
zerosCount = 0 ;
for j=1:144
    if cedd(j) == 0
        zerosCount=zerosCount + 1;
    end
end
if zerosCount ~= 144
    data(i , :) = cedd;
    labels(i , : ) = trainingSet.Labels(i);
end
d.Value = i/totalFiles(1,1);
d.Message = sprintf('%3.2f "% completed" ',d.Value*100);
end

如何在 gpu 上运行此代码,或者我必须为 gpu 转换 CEDD 实现?

【问题讨论】:

    标签: matlab image-processing gpu


    【解决方案1】:

    MATLAB 中的基本 GPU 编程模型是您需要并行计算工具箱和支持 CUDA 的 NVIDIA GPU。鉴于这些情况,gpuArray 就是您在 MATLAB 中在 GPU 上执行工作的方式:

    https://www.mathworks.com/help/parallel-computing/gpuarray.html

    基本思想是构造一个 gpuArray,将数据移动到 GPU 内存中,然后像处理数值数据一样对新构造的 gpuArray 执行数学运算。根据CEDD所依赖的所有函数是否都支持gupArray,可能很简单:

    cedd = CEDD(gpuArray(image));
    

    【讨论】:

    • 没有 CEDD 很简单,不依赖于 gpuArray ...我必须将所有数组都设为 gpuArray,这样就可以了?
    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 2010-09-30
    • 2020-02-11
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多