2011-08-24 3 views
3

실제로 3 개의 질문이 있습니다. 모든 입력을 부탁드립니다. 고맙습니다!Open MPI : 호스트 당 정확히 1 개의 프로세스를 실행하는 방법

1) 각 호스트에서 정확하게 1 개의 프로세스를 실행하는 방법은 무엇입니까? 내 응용 프로그램은 멀티 스레딩에 TBB를 사용합니다. 최상의 성능을 위해 각 호스트에서 정확하게 1 개의 프로세스를 실행해야한다는 의미입니까?

2) 클러스터에 이기종 호스트가 있습니다. 일부 호스트는 다른 호스트보다 더 나은 CPU와 메모리를 가지고 있습니다. 작업 분배를 위해 프로세스 랭크를 실제 호스트에 매핑하는 방법은 무엇입니까? 나는 hostname을 사용하려고 생각하고있다.

3) 프로세스 순위는 어떻게 지정됩니까? 어떤 프로세스가 0을 얻습니까?

답변

3

1) TBB는 스레드 풀의 여러 스레드로 루프를 분할하여 한 시스템의 모든 프로세서를 활용합니다. 따라서 시스템 당 하나의 프로세스 만 실행해야합니다. 더 많은 프로세스가 프로세서 시간 동안 서로 경쟁하게됩니다. 기계 당 프로세스의 번호가 hostfile의 옵션에 의해 주어진다 :

# my_hostfile 
192.168.0.208 slots=1 max_slots=1 
... 

2)의 성능에 따라 각 기계에게 작업의 적절한 양을 제공하는 것은 사소한 없습니다. 가장 쉬운 방법은 작업량을 작은 작업으로 나누고, 작업을 완료 할 때까지 슬레이브로 보내고, 응답을 수집하고, 새로운 작업을 제공하는 것입니다. 내 website (독일어)의 예가 있습니다. 매뉴얼과 튜토리얼에 대한 참고 자료도 있습니다.

3) 각 프로세스는 프로세스 ID의 == 0은 어쩌면 다른 하나는 당신의 hostfile의 순서대로 슬롯을 부여하고있다

MPI_Comm_rank(MPI_COMM_WORLD, &processID); 

마스터에 의해 프로그램에 숫자 (프로세스 ID)를 가져옵니다. 또 다른 가능성은 슬레이브에 대한 연결이 설정된 순서대로 할당된다는 것입니다. 나는 그것을 모른다.

+0

답변 해 주셔서 감사합니다. 나는 실험을했고 mpirun이 실행 된 프로세스에 0 등급이 할당되었다는 것을 알아 냈습니다. – pic11

+0

@ pic11 : 유감스럽게도, 내가 충분히 명확하게 이해하지 못했다. 마스터 프로세스가 mpirun을 시작하는 시스템에서 실행되고 있습니다. 그렇습니다. –

관련 문제