전체 노드에서 실행될 작업을 시작하기 전에 SGE에 대한 가짜 작업을 생성하여 모든 노드를 채웁니다.

전체 노드에서 실행될 작업을 시작하기 전에 SGE에 대한 가짜 작업을 생성하여 모든 노드를 채웁니다.

전체 노드에서 실행하기 위해 SGE에 작업을 제출하는 문제는 이전에 이 포럼에서 해결되었습니다. 여러 가지 해결 방법이 제안되었습니다. 그 중 하나는 -l excl=TRUE 옵션을 사용할 수 있도록 SGE를 구성하는 것이고, 또 다른 해결 방법은 SGE에 하드 메모리 또는 로드 제한을 요청하는 것입니다.

저는 석사 논문을 위해 대학의 클러스터를 사용하고 있으며 병렬 환경 openmpi는 채우기 전략으로 구성되어 있습니다. 일반적으로 클러스터의 노드에는 각각 16개 또는 20개의 코어가 포함되어 있습니다. 문제는 일부 사용자가 16개(또는 20개)의 배수인 코어 수를 사용하여 계산을 시작하는 대신 임의 수의 코어를 사용하여 작업을 시작한다는 것입니다. . 결과적으로 -pe openmpi 16을 사용하여 작업을 시작하면 SGE가 프로세서를 3개 노드(예: 6 + 1 + 10)에 예약하여 계산 속도가 매우 느려지는 경우가 있습니다.

관리자에게 -l excl=TRUE를 허용하도록 클러스터를 구성하도록 요청했지만 그는 테스트를 하기 전에 구성 변경을 거부했습니다(얼마나 오래 지속되었는지는 모르겠습니다).

이제 클러스터를 변경하지 않고도 (-l excl=TRUE)와 비슷한 결과를 얻을 수 있는 새로운 아이디어가 생겼습니다.

  1. 대기열을 스캔하고 SGE가 실행 중인 모든 노드를 채우고 완전히 해제된 노드만 허용하도록 SGE에 요청해야 하는 코어 수를 추정하는 스크립트를 작성하십시오.
  2. 일정 시간 동안 대기할 계산된 코어 수를 사용하여 가짜 작업을 시작합니다.
  3. 내 실제 작업을 시작합니다(예: -pe openmpi 2*16=32).
  4. 다른 사용자가 해당 코어를 사용할 수 있도록 가짜 작업을 삭제하세요.

누군가 나에게 그러한 코드의 예를 제공할 수 있습니까?

답변1

qsub -l cpu=0(또는 ) 을 사용하여 작업을 시작하는 것은 cpu=0.1나에게 완벽하게 작동합니다.

관련 정보