주요 콘텐츠

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이 호출될 때마다 동일해야 합니다.

예제

모두 축소

A와 B라는 두 개의 GPU 배열을 만듭니다. A는 2차원 배열(행렬)이고 B는 3차원 배열입니다. B의 처음 두 차원은 행렬과 같지만 세 번째 차원은 페이지의 요소를 나타냅니다.

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

pagefun을 사용하여 배열 A와 B의 각 페이지에 행렬 곱셈(mtimes)을 적용합니다.

C = pagefun(@mtimes,A,B);
s = size(C)    % returns M-by-N-by-P 
s = 1×3

         300        1000         200

두 개의 고차원 배열 D와 E를 만듭니다. D는 5차원 배열이고 E는 6차원 배열입니다.

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
D = rand(M,K,P1,1,P3,"gpuArray");
E = rand(K,N,1,P2,P3,P4,"gpuArray");

pagefun을 사용하여 배열 D와 E의 각 페이지에 행렬 곱셈(mtimes)을 적용합니다. 크기가 1인 차원은 해당 차원의 다른 배열의 크기와 일치하도록 묵시적으로 확장됩니다.

F = pagefun(@mtimes,D,E);
s = size(F)    % M-by-N-by-P1-by-P2-by-P3-by-P4
s = 1×6

     3     2    10    17     4    12

입력 인수

모두 축소

입력값의 각 페이지에 적용된 함수로, 함수 핸들로 지정됩니다. 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에 개발됨

참고 항목

| |