В этом примере показано, как выполнить поэлементные, или основанные на пикселе, операции на графическом процессоре при помощи функций, которые отправляют и данные и операции к графическому процессору для обработки. Этот метод является самым эффективным для поэлементных операций, которые требуют 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);