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 времени. Если вы звоните pagefun с большим количеством выходных аргументов, чем поддерживается FUN, MATLAB® генерирует ошибку. FUN может возвращать выходные аргументы с различными типами данных, но тип данных каждого выхода должен быть одинаковым каждый раз FUN вызывается.

Примеры

свернуть все

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

Создайте два массива GPU, 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
Для просмотра документации необходимо авторизоваться на сайте