Main Content

pagefun

분산 배열 또는 GPU 배열의 각 페이지에 함수 적용

설명

A = pagefun(FUN,B)FUN으로 지정된 함수를 분산 배열 또는 GPU 배열 B의 각 페이지에 적용합니다. 결과 AA(:,:,I,J,...) = FUN(B(:,:,I,J,...))이 성립하도록 각 페이지의 결과를 포함합니다. AB의 배열 유형에 따라 분산 배열 또는 GPU 배열입니다. FUN은 2차원 입력 인수를 받는 함수에 대한 핸들입니다.

예제

A = pagefun(FUN,B1,...,Bn)은 스칼라 확장이 활성화된 상태에서 배열 B1,...,Bn의 페이지를 입력 인수로 사용하여 FUN을 실행합니다. 입력 페이지 차원 중 스칼라는 A(:,:,I,J,...) = FUN(B1(:,:,I,J,...),...,Bn(:,:,I,J,...))이 성립하도록 해당 차원에 있는 배열의 크기와 일치하도록 복제됩니다. 입력 페이지 B(:,:,I,J,...),...,Bn(:,:,I,J,...)FUN의 입력 요구 사항을 모두 충족해야 합니다.

pagefun을 여러 번 호출하려는 경우, 먼저 해당 배열을 분산 배열 또는 GPU 배열로 변환하는 것이 더 효율적입니다.

[A1,...,Am] = pagefun(FUN,___)은 함수 FUNm개의 출력값을 반환할 때 다중 출력 배열 A1,...,Am을 반환합니다. pagefunpagefun 호출에 있는 출력값 수만큼 매번 FUN을 호출합니다. 즉 m번의 호출이 이루어집니다. FUN에서 지원하는 것보다 더 많은 출력 인수를 사용하여 pagefun을 호출하면 MATLAB®에서 오류가 발생합니다. FUN은 데이터형이 다른 출력 인수를 반환할 수 있지만, 각 출력값의 데이터형은 FUN이 호출될 때마다 동일해야 합니다.

예제

모두 축소

이 예제에서는 pagefun을 사용하여 두 GPU 배열 AB의 각 페이지에 mtimes 함수를 적용하는 방법을 보여줍니다.

두 GPU 배열 AB를 만듭니다.

M = 3;         % output number of rows
K = 6;         % matrix multiply inner dimension
N = 2;         % output number of columns
P1 = 10;       % size of first array dimension (row size)
P2 = 17;       % size of second array dimension (column size)
P3 = 4;        % size of third array dimension (page size)
P4 = 12;       % size of fourth array 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에 대해 지원되는 값에는 다음이 포함됩니다.

  • 대부분의 요소별 분산 배열 함수 및 GPU 배열 함수

  • @conv

  • @conv2

  • @ctranspose

  • @fliplr

  • @flipud

  • @inv

  • @mldivide

  • @mrdivide

  • @mtimes

  • @norm

  • @qr — GPU 배열의 경우 구문 [__] = pagefun(@qr,__)은 1개의 입력 배열만 지원하고 치환 행렬 반환은 지원하지 않음

  • @rot90

  • @svd — GPU 배열의 경우 각 페이지의 행과 열 크기는 32×32보다 크지 않아야 함

  • @transpose

  • @tril

  • @triu

입력값이 분산 배열인 경우 FUN에 대해 지원되는 값에는 다음도 포함됩니다.

  • @lu

입력 배열로, 분산 배열 또는 GPU 배열로 지정됩니다.

입력 배열로, 분산 배열, GPU 배열 또는 배열로 지정됩니다. 입력값 B1,...,Bn 중 적어도 하나는 분산 배열 또는 GPU 배열이어야 합니다. 분산 배열과 GPU 배열 둘 다 입력값으로 사용하는 것은 지원되지 않습니다. CPU 메모리에 저장된 각 배열은 함수가 실행되기 전에 분산 배열 또는 GPU 배열로 변환됩니다. 동일한 배열을 사용하여 pagefun을 여러 번 호출하려는 경우, 먼저 해당 배열을 분산 배열 또는 GPU 배열로 변환하는 것이 더 효율적입니다.

출력 인수

모두 축소

출력 배열로, 분산 배열 또는 GPU 배열로 반환됩니다.

확장 기능

버전 내역

R2013b에 개발됨

참고 항목

| |