Main Content

codistributor1d

공동분산 배열을 위한 1차원 분산 방식

    설명

    codistributor1d 객체를 사용하여 공동분산 배열에 대한 1차원 분산 방식을 정의합니다. 1차원 codistributor는 지정된 단일 차원인 분산 차원을 따라 비순환 분할 방식으로 배열을 분산합니다.

    생성

    설명

    codist = codistributor1d는 디폴트 차원과 디폴트 분할을 사용하여 codistributor1d 객체를 반환합니다. 디폴트 차원은 공동분산 배열의 마지막 비한원소 차원입니다. 디폴트 분할은 디폴트 차원을 따라 배열을 최대한 균일하게 분산시킵니다.

    예제

    codist = codistributor1d(Dimension)Dimension 속성으로 지정된 차원을 따라 분산시킬 1차원 codistributor 객체를 반환합니다. 예를 들어 Dimension이 1이면 함수는 행을 따라 객체를 분산시킵니다.

    codist = codistributor1d(Dimension,Partition)Partition 속성으로 지정된 분할 벡터에 따라 분산시킬 1차원 codistributor 객체도 반환합니다. 예를 들어 C1 = codistributor1d(1,[1,2,3,4])는 10개 행으로 구성된 배열을 4개 워커에 분산시킵니다. 첫 번째 워커에 1개의 행, 두 번째 워커에 2개의 행, 세 번째 워커에 3개의 행, 네 번째 워커에 4개의 행이 분산됩니다.

    전역 크기가 지정되지 않았기 때문에 위 구문의 결과로 생성되는 codistributor는 불완전합니다. 이런 식으로 만들어진 codistributor를 다른 함수의 인수로 사용하여, 공동분산 배열을 만들 때의 템플릿 codistributor로 사용합니다.

    예제

    codist = codistributor1d(Dimension,Partition,gsize)는 전역 크기가 gsize인 codistributor 객체를 반환합니다.

    결과로 생성되는 codistributor 객체를 사용하여 국소 부분에서 codistributed.build로 공동분산 배열을 만들 수 있습니다. 디폴트 차원을 사용하려면 Dimension 속성에 대해 codistributor1d.unsetDimension을 지정합니다. 이 함수는 gsize에서 분포 차원을 파생하고 마지막 비한원소 차원을 디폴트 차원으로 선택합니다. 마찬가지로, 디폴트 분할을 사용하려면 Partition 속성에 대해 codistributor1d.unsetPartition을 지정합니다. 그러면 함수는 전역 크기와 분포 차원에서 디폴트 분할을 파생합니다.

    이러한 codistributor를 사용하는 공동분산 배열의 워커 workerIndex의 국소 부분은 크기가 part(workerIndex)dimension을 제외한 모든 차원에서, 크기가 gsize입니다. 국소 부분의 클래스와 특성은 전체 공동분산 배열과 동일합니다. 전체 전역 배열은 차원 dimension을 따라 다양한 국소 부분을 결합하여 재구성할 수 있습니다.

    입력 인수

    모두 확장

    공동분산 배열의 전역 크기로, 정수로 지정됩니다.

    속성

    모두 확장

    분포 차원으로, 정수 스칼라로 지정됩니다. 분포 차원은 codistributed 배열을 분산시킬 차원을 지정합니다.

    분할 벡터로, 정수 행 벡터로 지정됩니다. 분할 벡터는 워커에 대한 codistributed 배열의 분산을 지정합니다.

    객체 함수

    codistributed.cellCreate codistributed cell array
    codistributed.colonDistributed colon operation
    codistributed.spallocAllocate space for sparse codistributed matrix
    codistributed.speyeCreate codistributed sparse identity matrix
    codistributed.sprandCreate codistributed sparse array of uniformly distributed pseudo-random values
    codistributed.sprandnCreate codistributed sparse array of normally distributed pseudo-random values
    eye공동분산 단위 행렬 만들기
    falseCreate codistributed array of logical 0 (false)
    globalIndicesGlobal indices for local part of codistributed array
    Inf모두 Inf 값으로 구성된 공동분산 배열 만들기
    isCompleteTrue if codistributor object is complete
    NaN모두 NaN 값으로 구성된 공동분산 배열 만들기
    ones모두 1로 구성된 공동분산 배열 만들기
    rand균일하게 분포된 난수로 구성된 공동분산 배열 만들기
    randn정규분포된 난수로 구성된 공동분산 배열 만들기
    sparseCreate codistributed sparse matrix
    true논리값 1(true)로 구성된 공동분산 배열 만들기
    zeros모두 0으로 구성된 공동분산 배열 만들기

    예제

    모두 축소

    codistributor1d 객체를 사용하여 행을 기준으로 분산된 1로 구성된 N×N 행렬을 만듭니다.

    N = 1000;
    spmd
        codistr = codistributor1d(1); % 1st dimension (rows)
        C = ones(N,codistr);
    end

    완전히 지정된 codistributor1d 객체를 사용하여 국소 부분에서 N×N 공동분산 행렬을 만듭니다. 그런 다음 워커 2에 저장된 요소를 시각화합니다.

    각 워커에서 전체 크기 배열로 시작한 다음 myLocalSize를 전체 배열의 디폴트 부분으로 설정합니다.

    N = 1000;
    spmd
        codistr = codistributor1d( ...
                        codistributor1d.unsetDimension, ...
                        codistributor1d.unsetPartition, ...
                        [N N]);
        myLocalSize = [N N]; % 
        myLocalSize(codistr.Dimension) = codistr.Partition(spmdIndex);
        myLocalPart = spmdIndex*ones(myLocalSize);
        D = codistributed.build(myLocalPart,codistr);
    end
    spy(D==2);

    버전 내역

    R2009b에 개발됨