2017-09-07 4 views
0

인텔 컴파일러를 사용하여 런타임시 MPI 포트란에서 PE 개수를 변경할 수 있는지 궁금합니다. 내 문제는 매우 구체적이며, 계산에서 어떤 점에 도달 한 후에 PE 수를 줄일 수 있는지 알고 싶습니다. 제 경우는 다음과 같습니다 : 숫자가 많은 코드가 있습니다. 거대한 문제를 해결하려면 약 128 개의 PE가 필요합니다. 그러나 계산이 끝나고 솔루션 인쇄를 시작하면 나머지 127 PE가 유휴 상태로 유지되며 이는 많은 리소스를 낭비합니다. 계산을 완료하고 여전히 솔루션을 인쇄 할 때 127 개의 PE를 "할당 해제"할 수 있습니까?MPI에서 런타임시 PE 번호 변경하기

답변

2

나는 이것을 달성하는 간단한 방법이 없다고 생각합니다.

상대적으로 간단한 옵션은 하나의 작업으로 MPI 응용 프로그램을 시작한 다음 MPI_Comm_spawn() PE를 127 개 계산하고 계산을 수행하고 127 개의 PE를 종료 한 다음 직렬 부분을 계속 진행하는 것입니다.

일반적으로 이러한 128 PE 작업은 자원 관리자를 통해 시작되며 실제 문제는 배치 관리자가 작업 축소 (iirc, SLURM)를 지원할 수 있는지 여부와 이것이 MPI에 영향을 미치지 않는지 여부입니다 (이것은 원하는 기능이며 PMIx는이를위한 계획을 가지고 있지만 SLURM이 이것을 지원하는지 잘 모르겠습니다.)

최선의 충고는 MPI-IO를 사용하여 다른 방법으로 작업하고 병렬로 솔루션을 인쇄하는 것입니다.

+0

귀하의 의견에 진심으로 감사드립니다. 나는 또한 MPI-IO를 사용하는 것이 최선의 선택이라고 믿는다. 몇 달 전에 구현을 시도했는데 파티션이 다르기 때문에 정말 어려운 작업이었습니다. 각 등급에는 자체 크기의 배열이 있습니다. 나는 그 방향으로 가려고 노력할 것이다. –