pagefun

Примените функцию к каждой странице массива на графическом процессоре

Синтаксис

A = pagefun(FUN,B)
A = pagefun(FUN,B,C,...)
[A,B,...] = pagefun(FUN,C,...)

Описание

pagefun выполняет итерации по страницам gpuArray, применяя ту же функцию к каждой странице.

A = pagefun(FUN,B) применяет функцию, заданную FUN к каждой странице gpuArray B, и возвращает результаты в gpuArray A, таким образом, что A(:,:,I,J,...) = FUN(B(:,:,I,J,...)). FUN указатель на функцию, которая берет двумерный входной параметр.

Можно использовать gather получать массив из графического процессора назад к рабочему пространству MATLAB.

A = pagefun(FUN,B,C,...) оценивает FUN использование страниц массивов BC, и т.д., как входные параметры со скалярным включенным расширением. Любое из входных измерений страницы, которые являются скаляром, фактически реплицировано, чтобы совпадать с размером других массивов в той размерности так, чтобы A(:,:,I,J,...) = FUN(B(:,:,I,J,...), C(:,:,I,J,...),...). По крайней мере одни из входных параметров BC, и т.д. должен быть gpuArray. Любые другие входные параметры, сохраненные в памяти ЦП, преобразованы в gpuArray прежде, чем вызвать функцию на графическом процессоре. Если массив должен использоваться в нескольких различных pagefun вызовы, более эффективно преобразовать тот массив в gpuArray перед вашей серией pagefun вызовы. Входные страницы B(:,:,I, J, ...), C(:,:,I, J, ...), и т.д., должен удовлетворить всем требованиям ввода и вывода FUN.

[A,B,...] = pagefun(FUN,C,...), где FUN указатель на функцию, которая возвращает несколько выходных параметров, возвращает gpuArrays AB, и т.д., каждый соответствующий одному из выходных аргументов FUN. pagefun вызывает FUN со столькими же выходных параметров сколько существуют в вызове pagefun. Все элементы A должен быть тот же класс; B может быть различный класс от A, но все элементы B должен иметь тот же класс; и т.д.

FUN должны возвращаемые значения того же класса каждый раз, когда это называется. Порядок, в который pagefun вычисляет страницы, не задан и не должен быть использован.

FUN должен быть указатель на функцию, которая написана в языке MATLAB (т.е. не встроенная функция или MEX-функция).

В настоящее время поддерживаемые значения для FUN :

  • Большая часть поэлементного gpuArray функционирует и следующие функции:

  • @ctranspose

  • @fliplr

  • @flipud

  • @inv

  • @mldivide

  • @mrdivide

  • @mtimes

  • @rot90

  • @transpose

  • @tril

  • @triu

Примеры

M = 3;         % output number of rows
K = 6;         % matrix multiply inner dimension
N = 2;         % output number of columns
P1 = 10;       % size of first page dimension
P2 = 17;       % size of second page dimension
P3 = 4;        % size of third page dimension
P4 = 12;       % size of fourth page dimension
A = rand(M,K,P1,1,P3,'gpuArray');
B = rand(K,N,1,P2,P3,P4,'gpuArray');
C = pagefun(@mtimes,A,B);
s = size(C)    % M-by-N-by-P1-by-P2-by-P3-by-P4
s =
    3     2    10    17     4    12
M = 300;       % output number of rows
K = 500;       % matrix multiply inner dimension
N = 1000;      % output number of columns
P = 200;       % number of pages
A = rand(M,K,'gpuArray');   
B = rand(K,N,P,'gpuArray');
C = pagefun(@mtimes,A,B);
s = size(C)    % returns M-by-N-by-P 
s =
    300        1000         200

Смотрите также

| | |

Введенный в R2013b