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