Main Content

spmdPlus

spmd 블록에 있는 워커의 배열 더하기

R2022b 이후. 다음보다 권장: gplus.

    설명

    예제

    C = spmdPlus(A)는 현재 spmd 블록 또는 통신 작업의 각 워커에 저장된 배열 A를 더하고 모든 워커에 결과 C를 저장합니다.

    parforparfeval을 사용하여 계산을 분담하면 한 번에 하나의 워커만 각 계산을 실행합니다. 이러한 워커는 독립적이며 서로 통신하지 않습니다. spmdPlus를 이러한 워커에 적용하는 경우, 이 함수는 아무런 영향을 미치지 않습니다.

    A의 크기가 각 워커에서 호환되는 경우에만 spmdPlus를 사용할 수 있습니다.

    source와 워커 인덱스가 같은 경우 CA는 같습니다.

    C = spmdPlus(A,destination)은 배열을 더하고 하나의 워커에만 결과를 저장합니다. 인덱스가 destination인 워커에서 C는 그 합과 같습니다. 다른 모든 워커에서 C[]입니다. 워커 인덱스를 가져오려면 spmdIndex 함수를 사용합니다.

    예제

    모두 축소

    이 예제에서는 spmdPlus를 사용하여 spmd 블록의 각 워커에 유지된 스칼라를 더하는 방법을 보여줍니다.

    4개의 워커가 있는 병렬 풀을 만듭니다.

    parpool(4);

    병렬 풀을 만든 후 spmd 블록을 실행하면 기본적으로 풀에서 사용 가능한 모든 워커가 spmd 블록 내부의 코드를 실행합니다.

    spmd 블록의 각 워커에서 spmdIndex를 실행하고 스칼라 A에 결과를 저장합니다. spmdPlus를 사용하여 각 워커에 있는 A의 값을 더합니다.

    대상 워커를 지정하지 않으면 spmdPlus 함수는 모든 워커에 결과를 저장합니다. 클라이언트에서 CComposite 객체입니다. 결과를 가져오려면 Composite 객체의 요소를 참조합니다.

    spmd
        A = spmdIndex;
        C = spmdPlus(A);
    end
    disp(C{1})
         10

    입력 인수

    모두 축소

    입력 배열로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다.

    예: magic(3)

    대상 워커의 인덱스로, 양의 정수로 지정됩니다. 이 입력값은 현재 spmd 블록 또는 통신 작업을 실행 중인 워커 개수보다 작거나 같아야 합니다.

    이 입력값을 지정하면 함수는 하나의 워커에만 C의 값을 저장합니다. 인덱스가 destination인 워커에서 C는 그 합과 같습니다. 다른 모든 워커에서 C[]입니다.

    예: 1

    출력 인수

    모두 축소

    spmd 블록 또는 통신 작업의 각 워커에 있는 배열의 합으로, A와 동일한 유형의 MATLAB® 변수로 반환됩니다.

    destination을 지정하는 경우, 인덱스가 destination인 워커에 C의 값이 저장됩니다. 다른 모든 워커에서 C[]입니다.

    알고리즘

    다음 그림은 spmdPlus(A) 호출 시 spmdCat 함수가 다른 워커의 값에 A를 더하는 방법을 보여줍니다.

    Figure shows how four workers combine arrays specified as A into a single array, C.

    확장 기능

    버전 내역

    R2022b에 개발됨

    참고 항목

    |