2. Getting started
이 섹션은 NVTAG 설치를 위한 요구사항과 설치방법 그리고 어떻게 사용하는지에 대한 내용을 제공한다.
2.1 사전 준비사항
NVTAGS를 설치하기 위한 사전 준비사항, 이해를 위한 내용은 아니니 가이드에서 보는게 빠르다.
https://docs.nvidia.com/datacenter/nvtags/latest/nvtags-user-guide/index.html#nvtags-req
2.2 설치
설치에 대한 부분도 가이드 이해가 필요한 부분이 아니라서 넘어간다.
https://docs.nvidia.com/datacenter/nvtags/latest/nvtags-user-guide/index.html#install-nvtags
3. NVTAGS 사용하기
이 섹션에서는 NVTAGS Tune and NVTAGS Run 두가지 모드에 대한 추가 정보를 제공한다.
NVTAGS는 bare-metal 또는 Singularity 기반의 컨테이너 어플리케이션을 지원하고 srun기반 Slurm integration 을 지원한다.
3.1 NVTAGS Tune 모드
NVTAGS Tune모드에서는 어플리케이션과 시스템 프로파일링 데이터가 GPU 할당을 최적화 하는데 사용 된다.
Tune 모드는 GPU 할당을 최적화 하기 위한 평가를 위해 어플리케이션의 프로파일링 정보가 필요하다. NVTAGS는 MPI profiler library를 사용하는데, 이는 동적으로 MPI application에 연결하고 GPU 통신 패턴을 구성하기 위해 MPI call 을 intercept한다.
프로파일링이 끝나면, NVTAGS는 어플리케이션과 시스템 토폴로지 정보를 이용하여 더 나은 gpu assignment를 확인한다. 프로파일링 결과와 권장되는 gpu 할당은 local NVTAGS 캐시에 캐싱된다.
Default cache 경로는 사용자가 변경 가능하며, 만약 명시된 경로가 없는경우, nvtags는 해당 경로를 생성하여 관리한다.
비록 NVTAGS가 기본 설정만으로 효과적인 gpu 할당을 지원하지만, 일부 설정을 변경하였을 때 더 나은 효과를 내기도 한다. 이 단계는 기본 프로파일링과 매핑설정을 변경함으로써 가능하며 추가 정보는 About the NVTAGS CLI를 확인하도록 한다.
Tuning이 완료됨에 따라 더 나은 설정이 발견되면 아래와 같은 메시지가 나타나게 된다.
Better mapping found!
Max Congestion_improvement: 10.00%
Avg Congestion_improvement: 17.27%
0,1,3,2,7,6,4,5
3.1.1 NVTAGS Tune을 이용한 어플리케이션의 수행
NVTAGS Tune mode를 이용하여 실행할 수 있는 몇가지 방법이 있다.
- Bare metal with mpirun
NVTAGS 를 TUNE WITH PROFILING MODE로 돌리려면, 앞에 NVTAGS TUNE 과 RUN며영어를 붙여라. 그리고 실행하고자 하는 바이너리를 명시하면 된다.
nvtags tune --runner-bin mpirun --num-procs <number of processes> --app-run-cmd '<application run cmd>' [options]
- Bare metal with srun
Tune 모드로 수행하려면, RUN 명령어를 NVTAGS TUNE과 함께 수행한다
nvtags tune --runner-bin srun --num-procs <number of processes> --–app-run-cmd '<application run cmd>' [options]
- Singularity with srun
nvtags tune --runner-bin srun --num-procs <number of processes> --sing-img <path to singularity image> --app-run-cmd '<application run cmd>' [options]
3.2 NVTAGS Run 모드
여기서는 NVTAGS run 모드에 대한 내용을 다룬다.
Run mode에서는 NVTAGS는 CUDA_VISIBLE_DEVICES를 설정함으로써 권장되는 효율적인 GPU 할당을 적용한다.
NVTAGS는 CPU와 NIC 를 affinity 정보와 gpu 할당을 이용하여 고정이 가능하다.
다중 노드 워크로드를 위해서는, NVTAGS는 호스트파일 또는 슬럼 호스트 ID를 이용하는 노드를 선택 가능하다.
3.3 About the NVTAGS CLI
Tune과 Run두가지 NVTAGS 모드에 대해 추가적인 정보를 이 섹션에서 제공한다. 각종 옵션정보들이 있어서 추후 사용 시 참고하면 될 것 같다.
출처 : https://docs.nvidia.com/datacenter/nvtags/latest/nvtags-user-guide/index.html
'Working on' 카테고리의 다른 글
[shell/csh] csh 에서 환경변수 설정하고 출력하는 방법 (0) | 2021.11.17 |
---|---|
Hold someone accountable : '~에 책임을 지다' 를 영어로 (0) | 2021.06.20 |
[Effective C++] 자원 관리에는 객체를 활용한다 (0) | 2021.05.23 |
[Effective C++] 객체의 모든 부분을 빠짐없이 복사하자 (0) | 2021.05.20 |
[Effective C++] operator= 에서는 자기대입에 대한 처리가 빠지지 않게하자 / 복사 후 맞 바꾸기 (Copy and Swap) (0) | 2021.05.19 |