마스터 프로세스와 여러 작업자 프로세스를 사용하는 MPI 프로그램이 있습니다. 작업 프로세스가 다른 노드에서 실행되는 동안 단일 계산 노드에서만 마스터 프로세스를 실행하고 싶습니다. 작업자 프로세스는 소켓으로 할당해야합니다 (예 : --map-by-socket
옵션으로 수행). 마스터 프로세스와 작업 프로세스를 다른 노드에 할당하거나 수동으로 할당하려면 옵션을 사용할 수 있습니까?MPI 프로세스를 노드에 할당
감사
마스터 프로세스와 여러 작업자 프로세스를 사용하는 MPI 프로그램이 있습니다. 작업 프로세스가 다른 노드에서 실행되는 동안 단일 계산 노드에서만 마스터 프로세스를 실행하고 싶습니다. 작업자 프로세스는 소켓으로 할당해야합니다 (예 : --map-by-socket
옵션으로 수행). 마스터 프로세스와 작업 프로세스를 다른 노드에 할당하거나 수동으로 할당하려면 옵션을 사용할 수 있습니까?MPI 프로세스를 노드에 할당
감사
바인딩과 동시에 호스트에 순위 지정은 순위 파일을 사용하여 가능합니다. 대신 slots=0:0-3
의 오래된 버전의
rank 0=host1 slots=0-7
rank 1=host2 slots=0:0-3
rank 2=host2 slots=1:0-3
및 slots=1:0-3
하나 slots=0-3
를 사용해야합니다 : 귀하의 경우, 각 노드는 두 개의 4 코어 CPU를 가지고 가정, 이런 일이 (오픈 MPI 1.7 및 최신 용)을 수행해야합니다 및 slots=4-7
(코어가 선형으로 번호가 매겨 졌다고 가정 할 경우). 그런 다음 순위 파일은 --rankfile
옵션을 통해 mpiexec
에 제공됩니다. 그것은 hostfile을 대체합니다.
또 다른 옵션은 MIMD 시작입니다. 이 경우 MPI 작업을 여러 부분으로 나눠서 각 부분에 다른 배포 및 바인딩 인수를 제공 할 수 있습니다.
mpiexec -H host1 -n 1 --bind-to none ./program : \
-H host2 -n 2 --bind-to socket --map-by socket ./program
내가이 일을 알고있는 가장 쉬운 방법은 OpenMPI 실행의 --hostfile 옵션을 사용하는 것입니다.
적절한 배치 시스템을 사용하고 있다면 간단한 파일 또는 환경 변수에 호스트 및 슬롯 목록이 있어야하며이를 호스트 파일로 구문 분석 할 수 있습니다.
응용 프로그램을 "손으로"실행하면 사용자가 직접 그러한 목록을 생성 할 수 있습니다.
작업을 클러스터에 제출합니다. node_file을 구문 분석해야합니까? 아니면 호스트 이름을 찾는 더 쉬운 방법이 있습니까? – fc67
클러스터에는 어떤 배치 시스템이 있습니까? –
클러스터에 LSF가 있습니다. – fc67