这个例子展示了如何通过使用函数将数据和操作发送到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);