Выполните поэлементные операции на графическом процессоре

В этом примере показано, как выполнить поэлементные, или основанные на пикселе, операции на графическом процессоре при помощи функций, которые отправляют и данные и операции к графическому процессору для обработки. Этот метод является самым эффективным для поэлементных операций, которые требуют 2 или больше наборов данных.

Переместите данные с центрального процессора на графический процессор путем создания gpuArray объект.

I = imread('concordaerial.png');
Igpu = gpuArray(I); 

Создайте пользовательскую функцию, которая выполняет поэлементные операции. Этот пример создает пользовательскую полутоновую функцию преобразования с помощью взвешенных данных о RGB.

function gray = rgb2gray_custom(r,g,b)
gray = 0.5*r + 0.25*g + 0.25*b;

Выполните операцию на графическом процессоре. Используйте arrayfun передать указатель на пользовательскую функцию и объект данных к графическому процессору для оценки.

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

Положите обратно данные к центральному процессору от графического процессора, с помощью gather функция.

I_gpuresult = gather(Igray_gpu);