이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공자에서 실행할 수 있는 mpirun.lam 명령입니다.
프로그램:
이름
mpirun - LAM 노드에서 MPI 프로그램을 실행합니다.
개요
mpirun [-fhvO] [-c # | -np #] [-D | -wd 디렉토리] [-ger | -nger] [-signs | -nsigs] [-ssi 키
값] [-nw | -w] [-nx] [-pty | -npty] [-s 노드] [-t | -toff | -ton] [-tv] [-x
VAR1[=VALUE1][,VAR2[=VALUE2],...]] [[-p 접두사_문자열] [-sa | -sf]] [여기서] 프로그램 [--
인수]
참고 : 각각은 개별적으로 선택 사항이지만 적어도 하나는 어디에, -np및 -c 해야합니다
위의 형식에 지정된 경우(즉, 스키마가 사용되지 않는 경우).
mpirun [-fhvO] [-D | -wd 디렉토리] [-ger | -nger] [-signs | -nsigs] [-ssi 키 값] [-nw | -w]
[-nx] [-pty | -npty] [-t | -toff | -ton] [-tv] [-x
VAR1[=VALUE1][,VAR2[=VALUE2],...]] 스키마
참고 : The -c2c 그리고 -램드 옵션은 이제 더 이상 사용되지 않습니다. 사용하세요 -씨 대신 "SSI"를 참조하세요.
섹션, 아래.
빨리 개요
MPI 애플리케이션을 실행하는 방법만 찾고 있다면 다음을 사용하는 것이 좋습니다.
다음 명령줄:
% mpirun C my_mpi_application
이렇게 하면 하나의 사본이 실행됩니다. 내_mpi_애플리케이션 현재 LAM 세계의 모든 CPU에서.
또는 "C" 대신 "N"을 사용하여 하나의 사본을 나타낼 수 있습니다.
내_mpi_애플리케이션 현재 LAM의 모든 노드(CPU와 대조적으로)에서 실행되어야 합니다.
우주. 마지막으로:
% mpirun -np 4 my_mpi_application
LAM에 4개의 사본을 명시적으로 실행하도록 지시하는 데 사용할 수 있습니다. 내_mpi_애플리케이션, 일정을 정하다
LAM 환경에서 CPU가 라운드 로빈 방식으로 처리합니다. 자세한 내용은 이 페이지의 나머지 부분을 참조하세요.
자세한 내용, 특히 "위치 명명법" 섹션을 참조하세요.
옵션
두 가지 형태가 있습니다 음피룬 명령 -- 프로그램용(예: SPMD 스타일)
응용 프로그램) 및 응용 프로그램 스키마용(참조) 앱스키마(5)). 두 가지 형태 모두 음피룬
기본적으로 다음 옵션을 사용합니다. -핑거 -w. 각각은 다음에 의해 재정의될 수 있습니다.
상대 옵션은 아래에 설명되어 있습니다.
또한, 음피룬 로컬에서 호출된 디렉토리의 이름을 보냅니다.
각 원격 노드에 노드를 추가하고 해당 디렉터리로 변경을 시도합니다.
아래의 "현재 작업 디렉토리" 섹션을 참조하세요.
-c # 동의어 -np (아래 참조).
-D 생성된 프로그램의 현재 작업 디렉토리로 실행 가능한 프로그램 위치를 사용합니다.
프로세스. 생성된 프로세스의 현재 작업 디렉토리가 설정됩니다.
사용자 프로그램이 호출되기 전에. 이 옵션은 다음과 상호 배타적입니다.
-wd.
-f 표준 I/O 파일 설명자를 구성하지 마세요. 기본값을 사용하세요.
-h 이 명령에 대한 유용한 정보를 인쇄합니다.
-거 GER(Guaranteed Envelope Resources) 통신 프로토콜 및 오류 활성화
보고. 참조 MPI(7) GER에 대한 설명입니다. 이 옵션은 상호
독점 -핑거.
-핑거 GER(Guaranteed Envelope Resources)을 비활성화합니다. 이 옵션은 상호 배타적입니다.
과 -거.
-nsigs 사용자 애플리케이션에 LAM catch 신호를 두지 마십시오. 이는 기본값이며,
와 상호 배타적입니다. -서명.
-np # 주어진 노드에서 이 개수만큼의 프로그램 사본을 실행합니다. 이 옵션은 다음을 나타냅니다.
지정된 파일은 실행 가능한 프로그램이고 애플리케이션 스키마가 아닙니다.
노드가 지정되지 않으면 모든 LAM 노드가 스케줄링을 위해 고려됩니다. LAM은
라운드 로빈 방식으로 프로그램을 일정에 넣고 "래핑"합니다.
필요한 경우 단일 노드에 여러 복사본을 예약합니다.
-npty Pseudo-tty 지원을 비활성화합니다. Pseudo-tty에 문제가 있는 경우가 아니면
지원이 필요한 경우 이 옵션은 필요하지 않을 수 있습니다. -pty와 함께 사용할 수 없습니다.
-nw 모든 프로세스가 완료될 때까지 기다리지 마십시오. 음피룬. 이 옵션은
와 상호 배타적인 -w.
-nx LAM_MPI_*, LAM_IMPI_* 또는 IMPI_* 환경을 자동으로 내보내지 마십시오.
원격 노드에 대한 변수입니다.
-O 다중 컴퓨터는 동질적입니다. 메시지를 전달할 때 데이터 변환을 하지 않습니다.
이 깃발은 이제 더 이상 사용되지 않습니다.
-pty pseudo-tty 지원을 활성화합니다. 무엇보다도 이것은 라인 버퍼링을 활성화했습니다.
출력(아마도 원하는 결과일 겁니다). 이것이 기본값입니다.
-npty와만 호환됩니다.
-s 노드 이 노드에서 프로그램을 로드합니다. 이 옵션은 명령줄에서 유효하지 않습니다.
애플리케이션 스키마가 지정된 경우.
-서명 LAM이 사용자 프로세스에서 신호를 포착하도록 합니다. 이 옵션은 상호 배타적입니다.
과 -nsigs.
-씨 키 가치
다양한 SSI 모듈에 인수를 보냅니다. 아래의 "SSI" 섹션을 참조하십시오.
-NS, -톤 모든 프로세스에 대해 실행 추적 생성을 활성화합니다. 추적 생성은
추가 작업 없이 진행하세요. 이러한 옵션은 다음과 상호 배타적입니다.
-신사.
-신사 모든 프로세스에 대해 실행 추적 생성을 활성화합니다. 추적 생성 대상
메시지 전달 트래픽은 프로세스가 집합적으로 호출한 후에 시작됩니다.
MPIL_Trace_on(2) 데이터 유형 및 커뮤니케이터에 대한 추적 생성에 유의하십시오.
결제 게이트웨이, 메시지에 대해 추적 생성이 활성화되었는지 여부에 관계없이 진행하십시오.
아니요. 이 옵션은 다음과 상호 배타적입니다. -t 그리고 -톤.
-TV TotalView 디버거에서 프로세스를 시작합니다.
-v 자세하게 설명하세요. 중요한 단계가 완료되면 보고하세요.
-w 모든 응용 프로그램이 종료될 때까지 기다리십시오. 음피룬 출구.
-wd DIR 사용자 프로그램을 실행하기 전에 dir 디렉토리로 변경하세요.
전에, -wd 옵션은 명령줄과 애플리케이션 스키마 모두에 나타납니다.
스키마는 명령줄보다 우선합니다. 이 옵션은 상호 작용합니다.
독점 -D.
-x 실행하기 전에 지정된 환경 변수를 원격 노드로 내보냅니다.
프로그램. 기존 환경 변수를 지정할 수 있습니다(예제 참조)
섹션, 아래) 또는 해당 값으로 지정된 새 변수 이름.
파서에 대한 -x 옵션은 그다지 정교하지 않습니다. 그것은 심지어 이해하지 못한다
인용된 값. 사용자는 환경에서 변수를 설정한 다음
사용 -x 내보내기(정의하지 않음)합니다.
-사 실패 여부와 관계없이 모든 MPI 프로세스의 종료 상태를 표시합니다.
성공적으로 실행되었습니다.
-sf 프로세스 중 하나가 실패한 경우에만 모든 프로세스의 종료 상태를 표시합니다.
-p 접두사_문자열
[-sa] 및 [-sf]로 표시되는 각 프로세스 상태 줄에 접두사를 붙입니다.
접두사_문자열
어디에 시작할 위치를 나타내는 노드 및/또는 CPU 식별자 세트 프로그램. 참조
유령(5) 노드 및 CPU 식별자에 대한 설명입니다. 음피룬 결제 게이트웨이,
일정에 인접한 순위를 지정하세요 MPI_COMM_WORLD CPU 식별자가 동일한 노드에 있을 때
사용됩니다. 예를 들어, LAM이 n4에서 CPU 수가 0이고 CPU가
n2에서 1를 세고 어디에 C인 경우 0~3등급은 n0에 배치되며,
4등과 5등은 n1에 배치됩니다.
인수 이러한 런타임 인수를 모든 새 프로세스에 전달합니다. 이는 항상 다음과 같아야 합니다.
에 대한 마지막 인수 음피룬. 이 옵션은 명령줄에서 유효하지 않습니다.
응용 프로그램 스키마가 지정되었습니다.
기술
하나의 호출 음피룬 LAM에서 실행되는 MPI 애플리케이션을 시작합니다. 애플리케이션이
단순히 SPMD일 뿐이므로 응용 프로그램을 지정할 수 있습니다. 음피룬 명령줄.
응용 프로그램은 여러 프로그램으로 구성된 MIMD이므로 응용 프로그램 스키마가 필요합니다.
별도 파일. 참조 앱스키마(5) 응용 프로그램 스키마 구문에 대한 설명은 다음과 같습니다.
본질적으로 여러 가지를 포함합니다 음피룬 명령줄에서 명령 이름 자체를 뺀 값입니다.
프로그램의 다양한 인스턴스에 대해 다양한 옵션을 지정할 수 있는 능력은 또 다른 것입니다.
애플리케이션 스키마를 사용하는 이유.
위치 명명법
위에서 설명한대로 음피룬 현재 LAM 세계에서 임의의 위치를 지정할 수 있습니다.
위치는 CPU 또는 노드(SYNTAX의 "where"로 표시)로 지정할 수 있습니다.
섹션 위). LAM은 프로세스를 CPU에 바인딩하지 않는다는 점에 유의하세요.
"CPU에 의한"은 실제로 SMP에 대한 편의 메커니즘으로 궁극적으로 다음과 같이 매핑됩니다.
특정 노드.
LAM은 MPI_COMM_WORLD 순위를 왼쪽에서 오른쪽으로 효과적으로 번호 매긴다는 점에 유의하십시오.
어떤 명명법을 사용하든 상관없습니다. 이는 일반적인 MPI
프로그램은 직접적인 이웃(예: myrank +/- X)과 더 많이 통신하는 경향이 있습니다.
먼 이웃. 이웃이 같은 노드에 있는 경우 shmem RPI를 사용할 수 있습니다.
네트워크 RPI보다는 통신을 사용하므로 MPI 성능이 더 빨라질 수 있습니다.
노드별로 위치를 지정하면 지정된 노드당 실행 파일의 사본이 하나씩 실행됩니다.
대문자 "N"을 사용하면 LAM이 램부팅된 모든 사용 가능한 노드를 사용하도록 지시합니다(참조
램부트(1)). 특정 노드의 범위는 "nR[,R]*" 형식으로 지정할 수도 있습니다.
R은 단일 노드 번호 또는 범위 내의 유효한 노드 번호 범위를 지정합니다.
[0, num_nodes). 예를 들어:
mpirun N a.out
실행 파일의 한 사본을 실행합니다. 아웃 LAM 유니버스의 모든 사용 가능한 노드에서.
MPI_COMM_WORLD 순위 0은 n0에, 순위 1은 n1에 위치하게 됩니다.
엠피런 n0-3 a.out
실행 파일의 한 사본을 실행합니다. 아웃 노드 0~3에서 MPI_COMM_WORLD 순위 0
n0에 위치하게 되고, 랭크 1은 n1에 위치하게 됩니다.
엠피런 n0-3,8-11,15 a.out
실행 파일의 한 사본을 실행합니다. 아웃 노드 0~3, 8~11, 15에서.
MPI_COMM_WORLD 순위는 다음과 같이 정렬됩니다: (0, n0), (1, n1), (2, n2), (3, n3),
(4, n8), (5, n9), (6, n10), (7, n11), (8, n15).
MPI 작업을 시작하는 데는 CPU별로 지정하는 것이 선호되는 방법입니다.
부트 스키마 사용 램부트(1) 각 노드에서 사용 가능한 CPU 수를 나타냅니다.
그리고 그 다음에는 하나의 단순한 음피룬 명령을 사용하여 모든 항목을 실행할 수 있습니다.
위에서 언급했듯이 CPU를 지정한다고 해서 실제로 프로세스가 CPU에 바인딩되는 것은 아닙니다.
SMP에서 실행하기 위한 편리한 메커니즘입니다. 그렇지 않으면 CPU별 표기법은 동일합니다.
"N"과 "n" 대신 "C"와 "c"가 사용된다는 점을 제외하면, 노드별 표기법과 같습니다.
다음 예에서 LAM 유니버스가 4개의 XNUMX방향 SMP로 구성되어 있다고 가정해 보겠습니다. 따라서
c0-3은 n0에 있고, c4-7은 n1에 있고, c8-11은 n2에 있고, 13-15는 n3에 있습니다.
엠피룬 C a.out
실행 파일의 한 사본을 실행합니다. 아웃 LAM 유니버스의 모든 사용 가능한 CPU에서.
이것은 일반적으로 모든 MPI 작업을 시작하는 가장 간단한(그리고 선호되는) 방법입니다.
노드당 하나의 프로세스로 해결되는 경우) MPI_COMM_WORLD 순위 0-3은 n0에 있습니다.
4~7등급은 n1에 속하고, 8~11등급은 n2에 속하고, 13~15등급은 n3에 속합니다.
엠피런 c0-3 a.out
실행 파일의 한 사본을 실행합니다. 아웃 CPU 0~3에서. XNUMX가지 등급 모두
MPI_COMM_WORLD는 MPI_COMM_WORLD에 있습니다.
엠피룬 c0-3,8-11,15 a.out
실행 파일의 한 사본을 실행합니다. 아웃 CPU 0~3, 8~11, 15에서.
MPI_COMM_WORLD 순위 0~3은 n0에, 4~7은 n2에, 8은 n3에 배치됩니다.
CPU별 명명법이 노드별 명명법보다 선호되는 이유는 다음과 같습니다.
예를 통해 보여짐. 첫 번째 CPU 예제(동일한)를 실행해 보는 것을 고려하십시오.
MPI_COMM_WORLD 매핑)을 노드별 명명법으로 실행 - 다음 중 하나의 사본을 실행합니다. 아웃 모든위한
사용 가능한 CPU를 확보하고 로컬 이웃의 수를 최대화하여 MPI를 잠재적으로 최대화합니다.
성능. 한 가지 해결책은 다음 명령을 사용하는 것입니다.
mpirun n0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3 a.out
이 일하지만 타이핑하기에는 확실히 불편합니다. 일반적으로 CPU별 명령어를 사용하는 것이 더 쉽습니다.
표기법. 다음이 동등하다고 생각할 수도 있습니다.
mpirun N -np 16 a.out
이것은 지원 MPI_COMM_WORLD 순위 매핑은 노드별로 할당되므로 동일합니다.
CPU가 아닌 다른 방식으로 처리합니다. 따라서 순위 0은 n0에, 순위 1은 n1에 배치됩니다.
그러나 다음과 같은 경우, is LAM은 where가 없는 것을 "C"로 해석하기 때문에 동일합니다.
mpirun -np 16 a.out
그러나 "C"는 특히 일괄 대기 스크립트의 경우 더 편리할 수 있습니다.
정확한 프로세스 수는 큐 제출마다 다를 수 있기 때문입니다. 배치
시스템은 사용 가능한 최종 CPU 수를 결정하며 이를 위한 일반 스크립트가 있습니다.
"당신이 준 모든 것을 실행하세요"라고 효과적으로 말하면 더 휴대하기 편리하고 재사용이 가능할 수 있습니다.
스크립트.
마지막으로 여러 개의 where 절을 지정하는 것이 완벽하다는 점에 유의해야 합니다.
허용 가능합니다. 따라서 노드별 구문과 CPU별 구문을 혼합하는 것도 유효합니다.
일반적으로 유용하지 않습니다. 예:
mpirun CN a.out
그러나 어떤 경우에는 여러 개의 where 절을 지정하는 것이 유용할 수 있습니다. 다음을 고려하세요.
MPI_COMM_WORLD 순위 0이 "관리자"가 되어 소비되는 병렬 애플리케이션
일반적으로 "작업자" 프로세스가 반환될 때까지 기다리기 때문에 CPU 사이클이 매우 적습니다.
결과. 따라서 사용 가능한 모든 프로세스에서 하나의 "작업자" 프로세스를 실행하는 것이 바람직할 것입니다.
CPU를 사용하고 "관리자" 역할을 할 추가 프로세스를 하나 실행합니다.
mpirun c0 C 관리자-근로자-프로그램
어플리케이션 개요 or 실행 파일 프로그램?
두 가지 형태를 구별하기 위해, 음피룬 명령줄에서 위치 또는
-c 옵션. 둘 다 지정되지 않으면 명령줄에 지정된 파일이 다음 중 하나로 간주됩니다.
애플리케이션 스키마가 되어야 합니다. 둘 중 하나 또는 둘 다 지정되면 해당 파일은 다음과 같이 가정됩니다.
실행 가능한 프로그램이 되어야 합니다. 만약 어디에 -c 둘 다 지정된 경우 사본은 다음과 같습니다.
프로그램은 내부 LAM 스케줄링에 따라 지정된 노드/CPU에서 시작됩니다.
정책. 하나의 노드만 지정하면 LAM이 프로그램의 모든 사본을 실행하도록 강제합니다.
한곳에. 만약 -c 가 주어졌지만 위치가 지정되지 않은 경우 모든 LAM 노드에서 사용 가능한 모든 CPU는 다음과 같습니다.
사용됩니다. where가 주어졌지만 -c, 그러면 각 노드에서 프로그램 사본이 하나씩 실행됩니다.
프로그램 토큰 전송
기본적으로 LAM은 특정 프로그램이 있는 대상 노드에서 실행 가능한 프로그램을 검색합니다.
인스턴스화가 실행됩니다. 파일 시스템이 공유되지 않으면 대상 노드는
동질적이고 프로그램이 자주 재컴파일되는 경우 LAM을 갖는 것이 편리할 수 있습니다.
소스 노드(일반적으로 로컬 노드)에서 각 대상 노드로 프로그램을 전송합니다.
-s 옵션은 이러한 동작을 지정하고 단일 소스 노드를 식별합니다.
위치 파일
LAM은 사용자의 PATH에 있는 디렉토리를 검색하여 실행 가능한 프로그램을 찾습니다.
소스 노드에 정의된 환경 변수입니다. 이 동작은 다음과 일치합니다.
소스 노드에 로그인하고 셸에서 프로그램을 실행합니다. 원격 노드에서는
"." 경로는 홈 디렉토리입니다.
LAM은 로컬 디렉토리, 값 디렉토리의 세 디렉토리에서 애플리케이션 스키마를 찾습니다.
LAMAPLDIR 환경 변수 및 laminstalldir/boot(여기서 "laminstalldir"은
LAM/MPI가 설치된 디렉토리.
Standard I / O
LAM은 모든 원격 노드에서 UNIX 표준 입력을 /dev/null로 지시합니다. 로컬 노드에서
호출 음피룬, 표준 입력은 다음에서 상속됩니다. 음피룬. 기본값은 이전에 사용하던 것입니다.
터미널에 대한 접근 충돌을 방지하려면 -w 옵션을 사용합니다.
LAM은 UNIX 표준 출력 및 오류를 모든 원격 노드의 LAM 데몬으로 전달합니다. LAM
캡처된 모든 출력/오류를 호출된 노드로 전송합니다. 음피룬 에 인쇄합니다.
표준 출력/오류 음피룬. 로컬 프로세스는 표준 출력/오류를 상속합니다.
음피룬 직접 전송하십시오.
따라서 일반적인 방법을 사용하여 LAM 애플리케이션의 표준 I/O를 리디렉션할 수 있습니다.
쉘 리디렉션 절차 음피룬.
% mpirun C my_app my_input my_output
이 예에서 만 로컬 노드(즉, mpirun이 호출된 노드)
from)은 stdin에서 my_input의 스트림을 수신합니다. 다른 모든 노드의 stdin은
/dev/null에 연결됩니다. 그러나 모든 노드의 stdout은
my_output 파일.
The -f 이 옵션은 위에 설명된 표준 I/O를 지원하는 데 필요한 모든 설정을 피합니다.
원격 프로세스는 완전히 /dev/null로 지정되고 로컬 프로세스는 파일을 상속받습니다.
설명자에서 램부트(1).
가짜 tty SUPPORT
The -pty 옵션은 프로세스 출력에 대한 의사 터미널 지원을 활성화합니다(다음에 의해서도 활성화됨)
기본값). 이를 통해 원격 노드에서 라인 버퍼링된 출력이 가능해집니다.
(아마도 당신이 원하는 것이겠죠). 이 옵션은 다음을 사용하여 비활성화할 수 있습니다. -npty 스위치.
방법 종료 / 신호 처리
MPI 응용 프로그램을 실행하는 동안 순위가 비정상적으로 종료되는 경우(종료하기 전에)
호출 MPI_FINALIZE, 또는 신호의 결과로 사망), 음피룬 오류가 출력됩니다
메시지를 보내고 나머지 MPI 애플리케이션을 종료합니다.
기본적으로 LAM/MPI는 사용자 프로그램에서 하나의 신호에 대한 신호 처리기만 설치합니다.
(기본적으로 SIGUSR2이지만 LAM이 구성되고 빌드될 때 재정의될 수 있음).
따라서 사용자가 LAM/MPI 프로그램에 자체 신호 처리기를 설치하는 것이 안전합니다.
(LAM은 프로세스의 반환 상태를 조사하여 신호로 인한 사망 사례를 알아차립니다.
운영체제).
사용자 신호 처리기는 아마도 MPI 상태를 정리하려고 시도하지 않아야 합니다. LAM은 그렇지 않습니다.
스레드 안전도 비동기 신호 안전도 아닙니다. 예를 들어, seg 오류가 발생하는 경우 MPI_SEND
(아마도 잘못된 버퍼가 전달되었기 때문일 수 있음) 그리고 이것이 사용자 신호 처리기를 호출하는 경우
사용자 핸들러가 호출을 시도합니다. MPI_FINALIZELAM/MPI가 출시된 이후로 나쁜 일이 발생할 수 있습니다.
오류가 발생했을 때 이미 MPI에 "들어와" 있었습니다. 음피룬 프로세스가 종료되었음을 알 수 있습니다
신호로 인해 사용자가 청소만 하는 것은 아마도 필요하지 않을 것입니다(그리고 가장 안전할 것입니다)
비MPI 상태.
경우 -서명 옵션은 다음과 함께 사용됩니다. 음피룬, LAM/MPI는 여러 신호 처리기를 설치합니다.
각 계급에서 로컬로 신호를 포착하고 오류 메시지를 인쇄하고 나머지를 종료합니다.
MPI 애플리케이션입니다. 이는 이제 모두 다음에 의해 처리되므로 다소 중복되는 동작입니다.
음피룬하지만 이전 버전과의 호환성을 위해 남겨두었습니다.
방법 출구 상태
The -사, -sf및 -p 매개변수는 존재 상태를 표시하는 데 사용할 수 있습니다.
개별 MPI 프로세스가 종료될 때. -사 종료 상태를 강제로 표시합니다.
모든 프로세스에 대하여 -sf 최소한 하나의 프로세스가 종료되는 경우에만 존재 상태를 표시합니다.
신호 또는 0이 아닌 종료 상태(호출하기 전에 종료하는 것에 주의)
MPI_FINALIZE 0이 아닌 종료 상태가 발생합니다).
각 프로세스의 상태는 다음 형식으로 한 줄에 하나씩 인쇄됩니다.
prefix_string 노드 pid 종료 상태
If 살해 1이면 지위 는 신호 번호입니다. 살해 0이면 지위 출구입니다
프로세스의 상태.
기본값은 접두사_문자열 "mpirun:"이지만 -p 이 옵션을 사용하면 이를 재정의할 수 있습니다.
끈.
Current 일 명부 담당
mpirun의 기본 동작은 처리하는 디렉토리와 관련하여 변경되었습니다.
에서 시작됩니다.
The -wd mpirun 옵션을 사용하면 사용자가 작업하기 전에 임의의 디렉토리로 변경할 수 있습니다.
프로그램이 호출됩니다. 또한 애플리케이션 스키마 파일에서 작업을 지정하는 데 사용할 수 있습니다.
특정 노드 및/또는 특정 애플리케이션에 대한 디렉토리.
경우 -wd 옵션은 스키마 파일과 명령줄 모두에 나타납니다. 스키마 파일
디렉토리는 명령줄 값을 재정의합니다.
The -D 옵션은 현재 작업 디렉토리를 다음 디렉토리로 변경합니다.
실행 파일이 존재합니다. 애플리케이션 스키마 파일에서는 사용할 수 없습니다. -wd 상호적이다
독점 -D.
둘 다 -wd ...도 아니다 -D 지정된 경우 로컬 노드는 디렉토리 이름을 보냅니다.
mpirun이 각 원격 노드에서 호출되었습니다. 원격 노드는 다음을 시도합니다.
해당 디렉토리로 변경합니다. 실패하면(예: 해당 디렉토리가 존재하지 않는 경우)
노드)의 경우 사용자의 홈 디렉토리에서 시작합니다.
모든 디렉토리 변경은 사용자 프로그램이 호출되기 전에 발생합니다. 때까지 기다리지 않는다
MPI_INIT 호출됩니다.
방법 환경
MPI 애플리케이션의 프로세스는 LAM 데몬으로부터 환경을 상속받습니다.
실행 중인 노드입니다. LAM 데몬의 환경은 부팅 시 고정됩니다.
LAM과 함께 램부트(1) 일반적으로 사용자 쉘에서 상속됩니다. 원점에서
노드, 이것은 셸이 될 것입니다 램부트(1) 호출되었습니다. 원격 노드에서 정확한
환경은 부팅 SSI 모듈에 의해 결정됩니다. 램부트(1) rsh 부트 모듈,
예를 들어, 원격 노드에서 LAM 데몬을 시작하기 위해 rsh/ssh를 사용하고 일반적으로
LAM 데몬을 시작하기 전에 사용자의 셸 설정 파일 중 하나 이상을 실행합니다.
LD_LIBRARY_PATH 환경이 필요한 동적으로 연결된 애플리케이션을 실행할 때
설정할 변수가 있으므로 부팅할 때 올바르게 설정되었는지 확인해야 합니다.
도주.
수출 환경 변수
LAM_MPI_*, LAM_IMPI_* 또는 IMPI_* 형식으로 명명된 모든 환경 변수는
로컬 및 원격 노드의 새 프로세스로 자동으로 내보내집니다. 이 내보내기
로 억제될 수 있습니다 -nx 옵션을 선택합니다.
또한, -x ~에 대한 옵션 음피룬 특정 환경 변수를 내보내는 데 사용할 수 있습니다
새로운 프로세스에. 구문은 -x 옵션을 사용하면 새 정의가 가능합니다.
변수, 이 옵션에 대한 파서가 현재 매우 정교하지 않다는 점에 유의하십시오.
따옴표로 묶인 값조차 이해하지 못합니다. 사용자는 변수를 다음 위치에 설정하는 것이 좋습니다.
환경 및 사용 -x 정의하는 것이 아니라 내보내는 것입니다.
더듬다 세대
두 개의 스위치는 LAM에서 실행되는 프로세스에서 추적 생성을 제어하며 둘 다 있어야 합니다.
트레이스가 실제로 생성되도록 켜짐 위치입니다. 첫 번째 스위치는 다음에 의해 제어됩니다.
음피룬 두 번째 스위치는 처음에 다음과 같이 설정됩니다. 음피룬 하지만 런타임에 전환할 수 있습니다.
MPIL_Trace_on(2)과하면 MPIL_Trace_off(2). 그만큼 -t (-톤 는 동등함) 및 -신사 모든 옵션
첫 번째 스위치를 켜세요. 그렇지 않으면 첫 번째 스위치가 꺼지고 호출됩니다. MPIL_Trace_on(2)
응용 프로그램에서는 효과가 없습니다. -t 옵션은 두 번째도 켜집니다
스위치. 그만큼 -신사 옵션은 두 번째 스위치를 끕니다. 참조 MPIL_Trace_on(2)과하면
램트레이스(1) 자세한 내용은.
MPI Data 매출 상승
LAM의 MPI 라이브러리는 MPI 메시지를 로컬 표현에서 LAM 표현으로 변환합니다.
보낸 후 받은 후 현지 담당자에게 다시 전달합니다.
로컬 표현이 있는 동질적인 기계 네트워크로 구성된 LAM의
LAM 표현과 다르기 때문에 불필요한 변환이 발생할 수 있습니다.
The -O 스위치는 멀티컴퓨터가 있는지 여부를 LAM에 표시하는 데 필요했습니다.
동질성 여부. LAM은 이제 주어진 MPI 작업이 동질성인지 여부를 자동으로 판별합니다.
동질성 여부. -O 플래그는 이전 버전과의 호환성을 위해 자동으로 허용됩니다.
하지만 무시됩니다.
SSI (체계 서비스 상호 작용)
The -씨 스위치를 사용하면 다양한 SSI 모듈에 매개변수를 전달할 수 있습니다. 램의 SSI
모듈은 에 자세히 설명되어 있습니다. 람시(7). SSI 모듈은 MPI에 직접적인 영향을 미칩니다.
프로그램은 런타임에 조정 가능한 매개변수를 설정할 수 있기 때문에(예: RPI)
사용할 통신 장치 드라이버, 해당 RPI에 전달할 매개변수 등).
The -씨 switch는 두 개의 인수를 취합니다. 키 그리고 가치. 그만큼 키 인수는 일반적으로 지정합니다
어떤 SSI 모듈이 값을 받을지 결정합니다. 예를 들어, 키 "rpi"는 선택에 사용됩니다
MPI 메시지 전송에 사용할 RPI입니다. 가치 인수는 값입니다
통과되었습니다. 예를 들어:
mpirun -ssi rpi lamd N foo
LAM에 "lamd" RPI를 사용하고 모든 노드에서 "foo"의 단일 사본을 실행하도록 지시합니다.
mpirun -ssi rpi tcp N foo
LAM에 "tcp" RPI를 사용하도록 지시합니다.
mpirun -ssi rpi sysv N foo
LAM에 "sysv" RPI를 사용하도록 지시합니다.
이와 같이 LAM의 RPI SSI 모듈은 다음과 같이 설명됩니다. 람시_rpi(7).
The -씨 스위치를 여러 번 사용하여 다른 키 및 / 또는 가치
인수. 같은 경우 키 두 번 이상 지정되면 가치s는 다음과 연결됩니다.
쉼표(",")로 구분합니다.
참고로 -씨 switch는 단순히 환경 변수를 설정하기 위한 바로 가기입니다. NS
이전에 해당 환경 변수를 설정하여 동일한 효과를 얻을 수 있습니다.
달리는 음피룬. LAM이 설정하는 환경 변수의 형식은 다음과 같습니다.
LAM_MPI_SSI_key=값.
참고로 -씨 switch는 이전에 설정된 환경 변수를 재정의합니다. 또한 참고
알 수 없는 키 인수는 여전히 환경 변수로 설정되어 있습니다 -- 확인되지 않습니다.
(기준 음피룬) 정확성을 위해. 불법 또는 부정확 가치 인수는 그럴 수도 있고 아닐 수도 있습니다.
보고됨 -- 특정 SSI 모듈에 따라 다릅니다.
The -씨 스위치는 오래된 것을 쓸모 없게 만든다 -c2c 그리고 -램드 스위치. 이 스위치는 이전에
LAM은 한 번에 두 개의 RPI만 사용할 수 있기 때문에 관련이 있습니다. 즉, lamd RPI와 하나
C2C RPI의 경우 더 이상 그렇지 않습니다. 이제 모든 RPI를 사용할 수 있으며 선택할 수 있습니다.
런타임. 위의 예에서는 lamd RPI를 선택하는 방법을 보여줍니다. -c2c 스위치가 없습니다
"C2C"는 원래 lamd가 아닌 다른 모든 RPI를 지칭했기 때문에 직접 번역했습니다.
RPI. 따라서, -씨 rpi 가치 특정 원하는 RPI를 선택하는 데 사용해야 합니다(
("lamd" 또는 다른 RPI 중 하나)
보장 봉투 자료
기본적으로 LAM은 각 MPI에 최소한의 메시지 봉투 버퍼링을 보장합니다.
프로세스 쌍이며 오버플로를 시도하는 프로세스를 방해하거나 오류를 보고합니다.
이 시스템 리소스입니다. 이 견고성 및 디버깅 기능은 머신에 구현되어 있습니다.
직접 통신을 사용할 때 특정 방식입니다. 일반 LAM 통신의 경우
LAM 데몬, 프로토콜이 사용됩니다. -핑거 옵션은 GER 및 취해진 조치를 비활성화합니다.
지원합니다. 최소 GER은 LAM이 설정될 때 시스템 관리자가 구성합니다.
설치됨. 참조 MPI(7) 자세한 내용은.
사용 예
위의 "위치 명명법" 섹션에 있는 예시도 꼭 살펴보세요.
mpirun N prog1
모든 노드에서 prog1을 로드하고 실행합니다. 사용자의 $PATH에서 실행 파일을 검색합니다.
각 노드에서.
mpirun -c 8 prog1
LAM이 실행하려는 곳마다 prog8의 사본 1개를 실행합니다.
mpirun n8-10 -v -nw -s n3 prog1 -q
노드 1, 8, 9에서 prog10을 로드하고 실행합니다. 노드 1에서 prog3을 검색하여 전송합니다.
3개의 대상 노드에 전달합니다. 각 프로세스가 생성될 때마다 보고합니다. "-q"를 지정합니다.
각 새 프로세스에 명령줄을 추가합니다. 프로세스가 완료될 때까지 기다리지 마십시오.
출구 음피룬.
mpirun -v myapp
애플리케이션 스키마 myapp을 구문 분석하고 여기에 지정된 모든 프로세스를 시작합니다. 보고
각 프로세스가 생성됨에 따라.
mpirun -npty -wd /work/output -x DISPLAY C my_application
사용 가능한 각 CPU에서 "my_application" 사본을 하나씩 시작합니다. 사용 가능한 CPU 수
각 노드의 CPU는 LAM이 부팅될 때 이전에 지정되었습니다. 램부트(1). 처럼
위에 언급된 바와 같이, 음피룬 인접한 순위를 예약합니다 MPI_COMM_WORLD 같은 노드에
가능한 경우. 예를 들어, n0의 CPU 수가 8이고 n1의 CPU 수가 4인 경우
음피룬 놓을 것이다 MPI_COMM_WORLD n0에서는 7~0위, n8에서는 11~1위입니다.
이는 여러 병렬 애플리케이션에 대한 노드 간 통신을 극대화하는 경향이 있습니다.
LAM의 다중 프로토콜 네트워크/공유 메모리 RPI와 함께(참조
LAM 배포판과 함께 제공되는 RELEASE_NOTES 및 INSTALL 파일, 전반적인 커뮤니케이션
성능이 상당히 좋을 수 있습니다. 또한 의사-tty 지원을 비활성화하고 디렉토리를 다음으로 변경하세요.
/work/output 및 DISPLAY 변수를 새 프로세스로 내보냅니다(아마도
my_application은 xv와 같은 X 애플리케이션을 호출하여 출력을 표시합니다.
진단
mpirun: Exec 형식 오류
이는 일반적으로 여러 프로세스 또는 적절한 where 절을 의미합니다.
지정되지 않았으므로 LAM이 실행할 프로세스 수를 알 수 없음을 나타냅니다.
위의 EXAMPLES 및 "위치 명명법" 섹션에서 방법에 대한 예를 확인하세요.
실행할 프로세스 수 및/또는 실행할 위치를 지정합니다. 그러나
애플리케이션 스키마에서 ASCII가 아닌 문자가 감지되었음을 의미합니다.
일반적으로 명령줄 사용 오류는 다음과 같습니다. 음피룬 응용 프로그램 스키마를 기대하고 있습니다
실행 파일이 제공되었습니다.
mpirun: 애플리케이션 스키마, XXX행에 구문 오류가 있습니다.
사용 또는 구문 오류로 인해 애플리케이션 스키마를 구문 분석할 수 없습니다.
파일의 주어진 줄.
파일 이름: 해당 파일 또는 디렉토리가 없습니다
이 오류는 두 가지 경우에 발생할 수 있습니다. 명명된 파일을 찾을 수 없거나
발견되었지만 사용자에게 프로그램을 실행할 수 있는 충분한 권한이 없습니다.
애플리케이션 스키마를 읽으세요.
RETURN VALUE
음피룬 모든 순위가 다음으로 시작되면 0을 반환합니다. 음피룬 MPI_FINALIZE를 호출한 후 종료합니다.
mpirun에서 내부 오류가 발생하거나 하나 이상의 순위가 있는 경우 0 값이 반환됩니다.
MPI_FINALIZE를 호출하기 전에 종료되었습니다. mpirun에서 내부 오류가 발생한 경우
해당 오류 코드가 반환됩니다. 하나 이상의 순위가 이전에 종료되는 경우
MPI_FINALIZE를 호출하면 프로세스 순위의 반환 값이 표시됩니다. 음피룬 먼저
MPI_FINALIZE를 호출하기 전에 알림이 종료된 경우 반환됩니다. 일반적으로 이
가장 먼저 죽는 계급이 되지만, 반드시 죽는 것은 보장되지 않습니다.
그러나 다음 사항에 유의하십시오. -nw switch를 사용하면 mpirun의 반환 값이
계급의 종료 상태를 나타냅니다.
onworks.net 서비스를 사용하여 mpirun.lam을 온라인으로 사용하세요