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개보다 작기 때문에) 첫 번째 요소가 완료되자마자 점차적으로 서로 작업을 순차적으로 실행하려고 합니다. 총 동시 mpi 작업 수 제한인 32개를 초과하지 않고 예를 들어 처음 8개의 프로세스가 실행 중이고 첫 번째 프로세스가 방금 완료되었다고 가정해 보겠습니다(첫 번째 NMPI[0] == 2). 그러면 다음 작업에 NMPI[8]==7이 있어 최대 제한인 32개 코어를 초과하므로 충분한 프로세서가 확보될 때까지 병렬이 새로운 작업을 실행해서는 안 됩니다. 아니면 마지막 mpi 작업(32개 코어)을 먼저 시작한 다음 마지막 마이너스 1과 처음 3개를 더하는 식으로 작업 시작을 개선하기 위한 병렬 방법이 있습니까?

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

답변1

배열 순서를 뒤집어서 가장 큰 작업부터 먼저 시작하세요.

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

관련 정보