DMP (Distributed Memory Parallel)
MSC Nastran 의 특정 solution sequence 를 MPI(Message Passing Interface) 기반으로 여러 task 에 분산해 병렬 실행하는 실행 방식이다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.113].
정의·용도
DMP 는 MSC Nastran 이 일부 solution sequence 를 MPI 를 사용해 병렬로 실행하는 기능이다. MPI 는 C 및 Fortran 메시지 패싱 프로그램을 위한 업계 표준 라이브러리이며, MPI 프로그램은 SMP 컴퓨터, NUMA 컴퓨터, distributed 컴퓨터에서 실행될 수 있다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.113]. DMP 로 실행 가능한 solution sequence 의 목록은 MSC Nastran Quick Reference Guide 를 참조한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.113].
대부분의 경우 MSC Nastran 은 하드웨어 벤더의 MPI 구현을 사용하는데, 이는 보통 최고 수준의 성능을 제공하지만 동시에 DMP job 이 해당 벤더 MPI 패키지가 지원하는 컴퓨터에서만 실행될 수 있다는 제약을 부른다. 예를 들어 단일 MSC Nastran job 을 Linux 와 Windows 머신을 혼합해 실행할 수 없다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.113].
형식 / 필드 / 구문
DMP 처리는 nastran command 의 dmparallel keyword 로 제어한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.183].
| keyword | 구문 | 기본값 | 설명 |
|---|---|---|---|
| dmparallel | dmparallel=number | 0 | DMP 분석의 task 수를 지정한다. 값이 null 또는 0 이면 DMP 처리를 취소하고, 0 보다 큰 수이면 DMP 처리를 활성화한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.183]. |
| dmpmem | dmpmem=number | 80 | DMP job 의 memorymax 로 지정된 총 메모리 중 Parent DMP process 에 할당할 비율(%). VERSION=NEW 의 ACMS 를 사용하는 DMP job 에만 적용되며 값은 51~95 사이여야 한다. dmpmem 으로 Parent 에 주지 않은 메모리는 나머지 DMP process 들에 균등 분배된다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.183]. |
예: nast_ver example dmp=4 는 4 개의 DMP task 로 job 을 실행한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.183].
실행 호스트 결정 (hosts)
nastran command 는 다음 우선순위로 사용할 호스트 목록을 결정한다: (1) command line 의 hosts keyword, (2) RC file 의 hosts keyword, (3) local host [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.118].
nast_ver example dmparallel=4— Linux 에서는 local host 에서 실행된다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.118].nast_ver example dmparallel=4 hosts=node1:node2:node3:node4:node5(Linux) 또는;구분(Windows) — 나열된 노드 집합에서 처음 가용한 4 개 노드에서 실행된다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.118].nast_ver example dmparallel=4 hosts=my.host.list—my.host.list파일을 읽어 호스트를 결정한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.118].
nastran command 는 단순한 호스트 할당 방식을 제공한다. hosts 로 나열된 호스트가 가용하지 않으면 건너뛰고 다음 호스트를 고려하며, dmparallel 로 지정한 수 이상의 processor 가 나열된 호스트들에서 가용한 한 job 은 실행된다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.119].
Nested keyword 와 queuing
dmparallel 은 nested keyword 치환에 사용될 수 있다. 예를 들어 %dmparallel>\%maxnode\%:%#@ node = %maxnode% 는 dmparallel 값이 maxnode 값보다 클 때 해당 텍스트를 포함시킨다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.57]. 또한 job queuing 정보를 job stream 에 삽입해야 하는 경우 <install_dir>/<prod_ver>/arch/nastran.dmp 파일을 수정해야 할 수 있다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.119].
동작 개요
DMP job 은 시스템의 MPI startup command 로 실행되며 각 task 는 task-specific 한 이름으로 파일을 기록한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.118]. job 이 완료되면 parent task 의 .f06, .f04, .log, .ndb, .op2, .plt, .pch, .xdb 파일이 마치 로컬에서 실행한 것처럼 존재하게 된다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.118]. parent task 가 output 디렉터리를 볼 수 없는 경우, parent 노드의 출력 파일(.f04, .f06, .log, .ndb, .pch, .plt)을 output keyword 로 지정한 디렉터리로 복사하고 parent 노드에서 삭제한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.118].
호스트가 output 디렉터리를 볼 수 없으면 out 을 해당 호스트의 host-specific scratch directory 값으로 설정한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.117]. 또한 dmpdeny 유틸리티(install_dir/prod_ver/arch/dmpdeny)가 존재하고 실행 가능하면 이를 실행하고 출력을 저장한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.116]. DMP job 에서 host 와 database 디렉터리 할당 관리는 별도 절에서 다룬다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.120].
성능 이슈
DMP job 은 직렬 또는 SMP job 의 일반적인 성능 이슈에 더해 communication bandwidth 가 핵심 성능 특성으로 추가된다. 기본 통신 채널은 shared memory(SMP/NUMA), interconnect·adapter·switch(NUMA/distributed), high-speed special-purpose network, 그리고 모든 시스템의 TCP/IP network 이다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.121]. Infiniband 는 IntelMPI 와 함께 Linux 에서 동작하며, 사용하려면 command line 에 symbol=I_MPI_DEVICE=rdssm 을 추가한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.121].
SMP 또는 NUMA 시스템의 DMP job 은 각 task 가 독립적으로 I/O subsystem 에 접근하므로 I/O subsystem 성능에 매우 민감하다. 따라서 SMP 와 NUMA 시스템에서는 sdirectory 등을 사용해 scratch directory 와 database 할당을 분할할 것을 권장한다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.121].
관련 항목
- DMP 관련 keyword 는 distributed processing 전용 keyword 로 분류되며, 더 기본적인 keyword 및 remote 처리 keyword 와 구분된다 [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.88].
- DMAP OUTPUT2 module 의
PROCIDparameter 는 DMP run 에서 IUNIT 에 기록 권한이 있는 processor ID 를 지정하는 데에만 사용된다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.2275]. - SOL 700 등 일부 해석은
DYPARAM,PARALLEL,INFPAR,value형식의 별도 병렬 파라미터를 사용한다 [MSC_Nastran_2022.4_Quick_Reference_Guide.pdf p.1748]. - NASTRAN Command
- Installation and Operations Guide
- ACMS
- SMP (Shared Memory Parallel)
- OUTPUT2
- DMAP Programmer’s Guide
- Quick Reference Guide
- SOL 700
출처
- [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.113] — Running DMP Jobs / MPI 개요
- [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.183] —
dmparallel,dmpmemkeyword - [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.118] — Determining Hosts / 출력 파일 처리
- [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.119] — 호스트 할당, nastran.dmp
- [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.121] — DMP Performance Issues
- [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.117] — out / host-specific scratch
- [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.116] — dmpdeny
- [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.120] — Host-Database Directory Assignments
- [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.88] — Advanced/distributed keywords 분류
- [MSC_Nastran_2022.4_Installation_and_Operations_Guide.pdf p.57] — Nested Keyword Values
- [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.2275] — OUTPUT2 PROCID
- [MSC_Nastran_2022.4_Quick_Reference_Guide.pdf p.1748] — DYPARAM,PARALLEL,INFPAR