다음을 통해 공유


MPI_Comm_split 함수

지정된 통신자와 연결된 그룹을 지정된 수의 연결되지 않은 하위 그룹으로 분할합니다.

구문

int MPIAPI MPI_Comm_split(
        MPI_Comm comm,
        int      color,
        int      key,
  _Out_ MPI_Comm *newcomm
);

매개 변수

  • 통신
    분할할 통신기입니다.

  • color
    호출 프로세스를 할당할 새 통신기입니다. 값은 음수가 아니어야 합니다.

    프로세스에서 MPI_UNDEFINED 색 값을 지정하는 경우 함수는 newcomm 매개 변수의 MPI_COMM_NULL 호출 프로세스에 반환합니다.

  • key
    새 통신기 그룹에서 호출 프로세스의 상대 순위입니다. 매개 변수 사용에 대한 자세한 내용은 비고를 참조하세요.

  • newcomm [out]
    반환할 때 에는 새 통신자에 대한 핸들이 포함됩니다.

반환 값

성공에 대한 MPI_SUCCESS 반환합니다. 그렇지 않으면 반환 값이 오류 코드입니다.

Fortran에서 반환 값은 IERROR 매개 변수에 저장됩니다.

Fortran

    MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
        INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR

설명

이는 집합적 함수이지만 각 프로세스는 매개 변수에 대해 서로 다른 값을 지정할 수 있습니다.

이는 단일 통신 프로세스 그룹을 임의의 수의 하위 그룹으로 나누는 매우 강력한 메커니즘입니다. 하위 그룹의 수는 모든 프로세스에 대해 지정된 색 수에 따라 결정됩니다. 결과 전달자는 겹치지 않습니다. 이러한 방식으로 통신기를 세분화하면 멀티그리드 또는 선형 대수와 같은 계산 계층 구조를 정의하는 데 유용합니다.

각 하위 그룹에는 매개 변수에 대해 동일한 값을 지정한 모든 프로세스가 포함됩니다. 각 하위 그룹 내에서 프로세스는 매개 변수의 값으로 정의된 순서대로 순위가 지정되며 이전 그룹의 순위에 따라 관계가 끊어집니다.

통신 내 통신기를 사용하면 에 대한 호출은 에 대한 호출 MPI_COMM_CREATE(comm, group, new-comm)MPI_COMM_SPLIT(comm, color, key, newcomm)과 동일합니다. 여기서 그룹 멤버인 프로세스는 모든 비연속 그룹의 고유 번호 매기기를 기반으로 그룹 수를 지정하고 , 색 매개 변수 및 매개 변수에 대한 그룹의 순위에 대해 그룹 번호를 지정합니다. 그룹의 멤버가 아닌 모든 프로세스는 매개 변수에 대한 MPI_UNDEFINED 지정합니다.

하나의 색에 대해 키 값이 고유할 필요는 없습니다. MPI_Comm_split 함수는 매개 변수의 값에 따라 프로세스를 순서대로 정렬하고 원본 그룹의 상대 순위를 기준으로 관계를 정렬합니다. 모든 매개 변수에 대해 동일한 값을 지정하면 지정된 색의 모든 프로세스는 부모 그룹에 있는 것과 동일한 상대 순위 순서를 갖습니다.

통신 내 함수의 경우 MPI_Comm_splitMPI_Comm_create 함수는 통신 그룹을 연결되지 않은 하위 그룹으로 분할하는 유사한 기능을 제공합니다.

MPI_Comm_split 함수는 일부 프로세스에 그룹의 다른 멤버에 대한 전체 정보가 없지만 모든 프로세스에 속한 그룹의 색이 있는 경우에 사용됩니다. 이 경우 MPI 구현은 통신을 통해 다른 그룹 멤버를 검색합니다.

MPI_Comm_create 함수는 모든 프로세스에 그룹 멤버의 전체 정보가 있는 경우에 사용됩니다. 이 경우 MPI 구현은 그룹 멤버 자격을 검색하는 데 필요한 추가 통신을 방지할 수 있습니다.

MPI_Comm_split 만든 Communicator는 겹칠 수 없습니다. 이 제한을 극복하기 위해 MPI_Comm_split 함수를 여러 번 호출할 수 있습니다. 이러한 방식으로 여러 겹치는 통신 구조를 만들 수 있습니다. 이러한 분할 작업에서 매개 변수를 창의적으로 사용하는 것이 좋습니다.

상호 통신기에서 MPI_Comm_split 함수의 결과는 오른쪽에 있는 프로세스와 동일한 색의 왼쪽에 있는 프로세스가 결합되어 새 상호 통신기를 만드는 것입니다. 매개 변수는 상호 통신기 양쪽에 있는 프로세스의 상대 순위를 정의합니다. MPI_COMM_NULL 핸들이 있는 새 통신자는 MPI_UNDEFINED 색으로 지정하거나 상호 통신기의 한쪽에만 지정된 색을 지정하는 프로세스에 반환됩니다.

요구 사항

제품

HPC Pack 2012 MS-MPI 재배포 가능 패키지, HPC Pack 2008 R2 MS-MPI 재배포 가능 패키지, HPC Pack 2008 MS-MPI 재배포 가능 패키지 또는 HPC Pack 2008 클라이언트 유틸리티

헤더

Mpi.h; Mpif.h

라이브러리

Msmpi.lib

DLL

Msmpi.dll

추가 정보

MPI Communicator 함수

MPI_Comm_create