pagefun

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

Описание

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

пример

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

Если вы планируете выполнить несколько вызовов к pagefun, более эффективно сначала преобразовать тот массив в распределенный массив или gpuArray.

[A1,...,Am] = pagefun(FUN,___) возвращает несколько выходных массивов A1,...,Am когда функциональный FUN возвращает m выходные значения. pagefun вызовы FUN каждый раз со столькими же выходных параметров, сколько существует в вызове pagefun, то есть, m \times. FUN может возвратить выходные аргументы, имеющие различные типы данных, но тип данных каждого выхода должен быть тем же каждым разом FUN называется.

Примеры

свернуть все

В этом примере показано, как использовать pagefun применять mtimes функционируйте к каждой странице двух массивов графического процессора, B и C.

Создайте два массива графического процессора, B и C.

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');

Вызовите pagefun применять mtimes функционируйте к каждой странице этих двух массивов.

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

Этот код показывает другой подобный пример использования pagefun функция.

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

Входные параметры

свернуть все

Функция применилась к каждой странице входных параметров в виде указателя на функцию. Для каждого выходного аргумента, FUN должны возвращаемые значения того же класса каждый раз, когда это называется.

Поддерживаемые значения для FUN включение:

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

  • @ctranspose

  • @fliplr

  • @flipud

  • @inv

  • @mldivide

  • @mrdivide

  • @mtimes

  • @rot90

  • @transpose

  • @tril

  • @triu

Если входные параметры являются распределенными массивами, поддерживаемыми значениями для FUN также включайте:

  • @lu

  • @qr

  • @norm

Входной массив в виде распределенного массива или gpuArray.

Входные массивы в виде распределенных массивов, gpuArrays, или массивов. По крайней мере одни из входных параметров B1,...,Bn, должен быть распределенный массив или gpuArray. И Используя распределенный массив и Используя gpuArray как входные параметры не поддерживается. Каждый массив, который хранится в памяти ЦП, преобразован в распределенный массив или gpuArray, прежде чем функция будет выполнена. Если вы планируете выполнить несколько вызовов к pagefun с тем же массивом более эффективно сначала преобразовать тот массив в распределенный массив или gpuArray.

Выходные аргументы

свернуть все

Выходной массив, возвращенный как распределенный массив или gpuArray.

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

| | |

Введенный в R2013b
Для просмотра документации необходимо авторизоваться на сайте