Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

gather

로컬 작업 공간으로 분산 배열 또는 gpuArray 전송

설명

예제

X = gather(A)는 다음 배열 데이터에 대해 연산을 수행할 수 있습니다.

  • gpuArray: GPU에서 A의 요소를 로컬 작업 공간으로 전송하여 X에 할당합니다.

  • spmd 문 외부의 분산 배열: 여러 워커에 있는 A의 요소를 로컬 작업 공간으로 한데 모아 X에 할당합니다.

  • spmd 문 또는 통신 작업 내의 공동분산 배열: A의 요소를 한데 모은 후, 모든 워커에서 X로 복제합니다.

tall형 배열과 같은 다른 데이터 유형에 대해 gather를 호출할 수 있습니다(gather (tall) 항목 참조). 데이터 유형이 수집을 지원하지 않는 경우에는 gather가 아무런 효과가 없습니다.

GPU 배열 또는 분산 배열을 수집하는 작업은 비용이 많이 들 수 있으며, 이러한 유형의 배열을 지원하지 않는 함수에서 결과를 사용할 필요가 없는 한 일반적으로 필요하지 않습니다. 함수 지원에 대한 자세한 내용은 GPU에서 MATLAB 함수 실행하기 또는 분산 배열을 사용하여 MATLAB 함수 실행 항목을 참조하십시오.

X = gather(gpuArray(X)), X = gather(distributed(X)) 또는 X = gather(codistributed(X))는 원본 배열 X를 반환합니다.

[X1,X2,...,Xn] = gather(A1,A2,...,,Xn)은 여러 배열 A1,A2,...,,An을 대응하는 출력값 X1,X2,...,Xn으로 수집합니다. 입력 인수 개수와 출력 인수 개수는 일치해야 합니다.

예제

X = gather(C,lab)는 공동분산 배열 C를 변형 배열(variant array) X로 변환합니다. 이때 워커 lab에서의 X는 모든 요소를 포함하며 다른 모든 워커에서의 X는 0×0의 빈 double형입니다.

[X1,X2,...,Xn] = gather(C1,C2,...,Cn,lab)은 공동분산 배열 C1,C2,...,Cn을 대응하는 출력값 X1,X2,...,Xn으로 수집하는데, 모든 요소는 워커 lab에 포함됩니다. 입력 인수 개수와 출력 인수 개수는 일치해야 합니다.

예제

모두 축소

GPU 연산의 결과를 MATLAB® 작업 공간에 수집합니다.

G = gpuArray(rand(1024,1));
F = sqrt(G);   % Input and output are both gpuArray
W = gather(G); % Return array to workspace
whos
Name         Size       Bytes  Class

F         1024x1          108  gpuArray
G         1024x1          108  gpuArray
W         1024x1         8192  double

분산 배열 D의 모든 요소를 클라이언트에 수집합니다.

n = 10;
D = distributed(magic(n)); % Distribute array to workers
M = gather(D)              % Return array to client

모든 워커에 마방진을 분산한 다음 전체 행렬을 모든 워커에 수집한 후 클라이언트에 수집합니다. 이 코드는 모든 워커 및 클라이언트에서 M = magic(n)을 실행할 때와 결과가 동일합니다.

n = 10;
spmd
  C = codistributed(magic(n));
  M = gather(C) % Gather all elements to all workers
end
S = gather(C)   % Gather elements to client

분산 배열 전체에서 수행할 수 없는 연산의 경우 C의 모든 요소를 워커 1에 수집합니다.

n = 10;
spmd
  C = codistributed(magic(n));
  out = gather(C,1);
  if labindex == 1
    % Characteristic sum for this magic square:
    characteristicSum = sum(1:n^2)/n;
    % Ensure that the diagonal sums are equal to the 
    % characteristic sum:
    areDiagonalsEqual = isequal ...
      (trace(out),trace(flipud(out)),characteristicSum)
  end
end
Lab 1:
  areDiagonalsEqual =
    1

입력 인수

모두 축소

수집할 배열로, gpuArray, 분산 배열 또는 공동분산 배열로 지정됩니다.

gather는 자신이 실행되는 모든 워커의 작업 공간에서, 또는 MATLAB 클라이언트에서 각각(즉, 둘 다는 아님) 공동분산 배열 또는 분산 배열을 조합합니다. spmd 문 내에서 gather를 사용하는 경우, 수집된 배열은 해당하는 Composite 객체를 통해 클라이언트에서 액세스할 수 있습니다. Access Worker Variables with Composites 항목을 참조하십시오. 통신 작업에서 gather를 실행하는 경우, 수집된 배열을 태스크의 출력 인수로 클라이언트에 반환할 수 있습니다.

gather 함수를 사용하려면 모든 워커 간에 통신이 필요하므로 if labindex == 1과 같은 조건문 내에 함수를 배치하여 모든 워커로부터 단일 워커로 데이터를 수집할 수 없습니다.

R2006b에 개발됨