2017-05-05 1 views
0

두 개 이상의 컴퓨터가있는 Open MPI 클러스터에서 프로그램을 실행할 수 없습니다.호스트가 3 개 이상인 클러스터를 설정할 때 열린 MPI 오류

우리가 실행하는 경우 :

mpirun --host master,slave5,slave3 ./cluster 

가 작동합니다.

우리가 실행하는 경우 :

mpirun --host master,slave4,slave3,slave5 ./cluster 

우리는 다음과 같은 오류 얻을 : slave5가 작동하기 때문에, 그것은 이름 확인 오류처럼 보인다는 사실에도 불구하고

ssh: Could not resolve hostname slave5: Temporary failure in name resolution 

, 그것은 아니다 첫 번째 명령.

지금까지 다른 해결책을 제시하지 않은 다른 사람들이 같은 오류를보고했습니다. 예 :

어떤 아이디어?

+0

가 제대로 설정은/etc/모든 호스트 파일 (또는 DNS)를 호스트나요 (포스트 모든 여기에 4 파일)? 'ping'이 타겟 호스트의 이름과 함께 사용될 때 모든 호스트는 다른 모든 호스트에게 ping을 할 수 있습니까 (이것은 타겟 호스트에서'hostname' 명령이 리턴합니다)? – osgx

+0

링크 된 메일 목록 스레드의 첫 번째 응답은 해결 방법을 제공합니다. 그게 당신을 위해 문제를 해결합니까? –

+0

일부 포럼에서 보시다시피이 문제는 매우 일반적입니다. https://www.mail-archive.com/[email protected]/msg29784.html 그러나 이것이 도움이 될 것이라고 생각합니다. –

답변

2

오픈 MPI는 기본적으로 노드 A에서 노드 B까지의 ssh이고 노드 B에서 노드 C까지의 ssh를 의미하기 때문에 문제가 발생할 수 있습니다. 자세한 내용은 https://blogs.cisco.com/performance/tree-based-launch-in-open-mpihttps://blogs.cisco.com/performance/tree-based-launch-in-open-mpi-part-2을 참조하십시오.

그러므로 "mpirun --mca plm_rsh_no_tree_spawn 1"을 통해 트리 기반 스폰을 비활성화하면 모든 ssh가 노드 A에서 발생하게됩니다. 그러면 실행이 예상대로 작동합니다.

그러나 더 나은 해결 방법은 모든 시스템에서 모든 클러스터 시스템 이름을 해석 할 수있게하는 것입니다. 당신이 성공적으로 이런 일을 실행할 수있는 경우 예를 들어, 다음 열기 MPI의 발사가 성공적으로 작동합니다 :

foreach node (Node1 Node2 Node3 Node4 ...) 
 
    foreach other (Node1 Node2 Node3 Node4 ...) 
 
     echo from $node to $other 
 
     ssh $node ssh $other hostname