gnu 병렬과 mpirun 결합: 최대 코어 수를 처리하는 방법은 무엇입니까?

gnu 병렬과 mpirun 결합: 최대 코어 수를 처리하는 방법은 무엇입니까?

저는 32개의 코어 머신을 가지고 있고 다양한 코어 수를 사용하여 일부 mpi 작업을 실행하고 싶습니다(질문에 이것이 필요하기 때문입니다). 각 작업을 시작할 시기를 관리하기 위해 Gnu가 병렬로 mpi 작업 수를 알 수 있는 방법이 있습니까?

예: 다음 수의 mpi 작업으로 많은(200) 작업을 시작해야 한다고 가정합니다.

NMPI=(2 2 2 4 4 4 4 6 7 10 12 24 32)

따라서 처음에는 배열의 처음 8개 요소(합계가 총 코어 수 32개보다 작기 때문에)만 실행한 다음 각 첫 번째 요소가 완료되자마자 제한을 초과하지 않고 다른 작업을 순차적으로 실행하려고 합니다. 총 32개의 동시 mpi 작업 중 . 예를 들어 처음 8개의 프로세스가 실행 중이고 첫 번째 프로세스가 방금 완료되었다고 가정합니다(첫 번째 NMPI[0] == 2의 경우). 그러면 다음 작업에 NMPI[8]==7이 있어 32개 코어 최대 제한을 초과하기 때문에 충분한 여유 프로세서가 있을 때까지 병렬이 새로운 것을 실행해서는 안 됩니다. 아니면 마지막 mpi 작업(32개 코어)을 먼저 시작한 다음 마지막 작업에서 1을 빼고 처음 3개를 더하는 식으로 작업 시작을 병렬로 개선할 수 있는 방법이 있습니까?

귀하의 안내에 미리 감사드립니다.

답변1

가장 큰 작업부터 먼저 시작하도록 배열 순서를 바꾸세요.

을 사용할 수 있으므로 --load 100%다음 --delay 10s작업을 시작하기 전에 해당 작업이 모든 코어를 사용한다고 확신합니까?

관련 정보