n개 이상의 사용 가능한 코어가 있는 모든 노드에 대한 Qsub

n개 이상의 사용 가능한 코어가 있는 모든 노드에 대한 Qsub

병렬화를 위해 MPI를 사용하는 프로그램이 있습니다. 실제로는 여러 코어에서만 성공적으로 실행될 수 있지만 (CentOS 6.6) 기반 HPC 그리드의 여러 노드에서 실행될 수 있다고 생각합니다.동일한 컴퓨팅 노드의.

예를 들어, qsub그리드에서 20개의 코어를 요청하고 그리드 엔진이 이를 두 개의 다른 노드로 분할하기로 결정하면 프로그램이 실패합니다. 그러나 사용 가능한 코어가 20개인 노드가 있고 그리드 엔진이 코어를 모두 해당 노드로 보내는 경우 프로그램은 성공적으로 실행됩니다. qsub 스크립트에는 #$ -pe mpi 20코어 수를 선택하는 명령이 포함되어 있습니다.

따라서 현재 qstat -f -u "*"사용 가능한 코어가 20개인 컴퓨팅 노드를 수동으로 식별하고 다음 명령을 사용하여 해당 노드에 커밋합니다.qsub -q general.q@node-X-X

저는 Grid Engine에 대기하고 필요한 수의 사용 가능한 코어가 있는 단일 컴퓨팅 노드에만 작업을 제출하도록 지시하는 방법을 찾고 있습니다. 이렇게 하면 자동으로 과제를 제출할 수 있습니다.

명령 을 구문 분석하기 위해 bash 스크립트를 작성할 생각이지만 qstat -f -u "*"더 우아한 솔루션이 있어야 합니다. qsub 매뉴얼을 살펴봤지만 적절한 플래그나 명령줄 인수를 찾을 수 없습니다.

현재는 프로그램 자체를 수정할 수 없으며 시스템 관리자도 아닙니다.

사용 가능한 다양한 소프트웨어 버전에 대한 정보는 다음과 같습니다.

MPI/그리드엔진 정보:

> ompi_info | grep gridengine
MCA ras: gridengine (MCA v2.0, API v2.0, Component v1.6.2)

그리드 엔진 버전은 OGS/GE 2011.11p1입니다.

답변1

Gridengine이 단일 노드에서 20개의 핵심 작업을 예약할 수 있도록 하려면 새 병렬 환경을 생성하거나 사용 중인 환경을 조정해야 합니다. 필요한 설정은

allocation_rule    $pe_slots

에서 man sge_pe:

특수 분모 $pe_slots가 사용되는 경우 qsub(1) -pe 스위치로 지정된 모든 프로세스는 단일 호스트에 할당되어야 합니다.

대기열에 새 PE를 추가하는 것을 잊지 마세요.

여러 노드에서 MPI 작업을 실행하는 것과 관련된 원래 질문을 해결하기 위해 더 자세한 내용이 포함된 두 번째 질문을 할 수 있습니다.

답변2

-pe smp 20대신 사용하는 경우 -pe mpi 20MPI 대신 SMP("공유 메모리 병렬 처리") 환경을 사용하게 됩니다.

SMP는 병렬성에 대한 더 간단한 접근 방식입니다.한 대의 컴퓨터에서 실행, 스레드 간에 로컬 시스템 메모리를 공유합니다. 따라서 요청된 모든 슬롯을 여러 컴퓨팅 노드에 분할하는 대신 단일 노드(사용 가능한 경우)에 배치합니다.

나에게는 이것이 문제를 해결한 것 같다.

관련 정보