2012-05-24 3 views
0

현재 큰 프로젝트의 일부로 작은 유틸리티 라이브러리를 구축 중입니다. OpenMPI는 잘 문서화 된 API 라이브러리를 가지고 있지만 노드 사이의 낮은 수준의 통신에 대해서는 약간 당황 스럽습니다. 당신의 알고리즘을 작성할 때 나머지 부분과 통신하는 각각의 계산을 수행 할 것으로 예상되는 모든 노드에 걸쳐이를 배포하고 알고리즘의 "글로벌"MPI 등급 (알고리즘에 정의 된대로)을 기반으로 알고리즘의 일부분을 실행하고 모든 노드가 앞뒤로 동기화됩니다. 그러나, 전 세계를 따옴표로 묶은 이유는 OpenMPI가 IP 수준에서 통신한다는 것입니다. 따라서 이미 긴 실행 알고리즘이 있지만, MPI 프로세스를 실행하지 않고 유휴 상태에있는 노드가 있습니다. MPI를 실행하면 알고리즘을 사용하여 MPI_COMM_WORLD에 가입하고 전체 네트워크 토폴로지의 일부가되거나 MPI_COMM_WORLD에 해당 노드를 만들기 위해 필요한 "부두"가있을 것입니다. 노드가 특정 알고리즘에 대한 MPI_COMM_WORLD의 일부가 될 수 있다면 어떻게이 새로운 노드를 등록/식별 할 수 있습니까?OpenMPI 노드 및 네트워크 토폴로지

읽기 참조 자료도 유용합니다.

많은 감사!

tl; dr은 MPI_COMM_WORLD에서 핫 스왑 가능한 MPI 노드입니까?

답변

3

일단 생성 된 노드는 통신기에 참여시킬 수 없습니다. 이는 사전 처리 된 커뮤니케이터 인 MPI_COMM_WORLD에도 해당됩니다. 초기 SPMD 시작의 일부로 시작된 프로세스 만 MPI_COMM_WORLD의 일부가됩니다. 그러나 현재 MPI 표준 버전 2.2의 Chapter 10에 설명 된 MPI-2 프로세스 관리 기능을 사용하여 추가 프로세스를 생성 할 수 있습니다.

새로 만들어지는 과정은 MPI_COMM_WORLD 자신이 초기 그룹의 프로세스에만 스폰 작업에서 반환되는 특수 intercommunicator (MPI_COMM_WORLDintracommunicator입니다)를 통해 통신 할 수 있습니다. 프로세스 생성은 집합 작업이므로 MPI_COMM_WORLD의 모든 프로세스는 해당 상호 통신자를 처리합니다.

MPI 3.0 (오류가 발생하는 경우)은 결함이있는 프로세스를 MPI_COMM_WORLD (또는 다른 모든 통신기)에서 제외/제거 할 수있는 폴트 쓰루 (fault-through) 내결함성을 제공하며, MPI 3.1은 결국 결함 대체 할 프로세스.

+0

빠른 응답을위한 thnx; 나는 불가리아에서 너무 btw이다, 나의 이름은 Georgi 다 :) – mayotic

+0

행복한 휴일 그 다음 :) –

+0

나는 통신 계획에 관해서 다른 빠른 질문이있다; 특정 프로세스에서 MPI_COMM_WORLD에서 선택된 노드의 그룹 커뮤니케이터를 만드는 경우 해당 프로세스는 MPI_Group 핸들을 소유하거나이 그룹의 일부인 모든 노드에서 생성되는 프로세스입니까? – mayotic