在GPU上运行MATLAB图像处理脚本

时间:2019-11-20 13:39:34

标签: matlab image-processing gpu-programming

我正在研究一个脚本,用于基于图像的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实现?

1 个答案:

答案 0 :(得分:0)

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));