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



我正在编写一个脚本,用于创建基于图像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中的基本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));

最新更新