在图形处理器上进行逐元素操作

这个例子展示了如何通过使用函数将数据和操作发送到GPU进行处理,从而在GPU上执行基于元素或基于像素的操作。这种方法对于需要2个或更多数据集的元素操作最为有效。

将数据从CPU移动到GPUgpuArray对象。

I = imread(“concordaerial.png”);Igpu = gpuArray(I);

创建一个执行元素操作的自定义函数。此示例使用加权RGB数据创建自定义灰度转换函数。

函数灰色= rgb2gray_custom(r,g,b)灰色= 0.5*r + 0.25*g + 0.25*b;

在图形处理器上执行该操作。使用arrayfun将句柄传递给自定义函数,将数据对象传递给GPU进行计算。

Igray_gpu = arrayfun (@rgb2gray_custom Igpu (:,: 1), Igpu (:,: 2), Igpu (:,:, 3));

将数据从GPU移回CPU,使用收集函数。

I_gpuresult = gather(Igray_gpu);