인텔 추적 분석기 및 수집기 시작하기
인텔® 추적 분석기 및 수집기 시작하기
이 시작하기 문서와 사전 수집된 추적을 사용하세요. file 인텔® 추적 분석기 및 수집기를 사용한 기본적인 MPI 성능 분석을 살펴보겠습니다.
인텔 추적 분석기 및 수집기는 MPI(메시지 전달 인터페이스) 사용 효율성을 탐색하고 통신 핫스팟, 동기화 병목 현상 및 로드 밸런싱을 식별하는 데 도움이 됩니다. 제품에 대한 자세한 내용은 인텔 추적 분석기 및 수집기 제품 페이지를 참조하십시오.
인텔 추적 분석기 및 수집기 다운로드
- Intel® oneAPI HPC 툴킷의 일부로
- 독립형 도구로
필수 조건
- 인텔 추적 분석기 및 수집기를 실행하기 전에 최신 인텔® MPI 라이브러리와 인텔® oneAPI DPC++/C++ 컴파일러 또는 인텔® 포트란 컴파일러가 설치되어 있는지 확인하십시오.
- 이렇게 하면 컴파일러, 인텔 MPI 라이브러리, 인텔 추적 분석기 및 수집기에 필요한 환경 변수가 설정되고 애플리케이션을 추적할 준비가 됩니다.
- 자세한 내용은 Intel® oneAPI HPC 툴킷 시스템 요구 사항을 참조하십시오.
워크플로 이해
- 애플리케이션 추적
- 가장 활동적인 MPI 기능 분석
- 문제가 있는 상호작용 식별
- 문제를 일으키는 기능을 대체하여 애플리케이션 성능을 향상시킵니다.
MPI 애플리케이션 추적
추적 생성 file 다음 애플리케이션 동작 분석을 위한 이벤트 로그를 수집합니다.
- oneAPI 설치 디렉터에서 setvars 스크립트를 실행하여 인텔® 추적 분석기 및 수집기를 실행하기 위한 환경을 설정합니다.
메모
기본적으로 인텔 추적 분석기 및 수집기는 Linux* OS의 경우 /opt/intel/oneapi/itac 및 프로그램에 설치됩니다. FileWindows* OS의 경우 s (x86)\Intel\oneAPI\itac\latest.
Linux의 경우:
$ 소스 /opt/intel/oneapi/setvars.sh
Windows에서:
“C:\프로그램 Files (x86)\Intel\oneAPI\setvars.bat” - MPI 애플리케이션을 실행하고 -trace 옵션을 사용하여 추적을 생성합니다.
Linux의 경우:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Windows에서:
앱을 컴파일하고 추적을 수집합니다.
Intel oneAPI DPC++/C++ 컴파일러의 경우 다음을 실행합니다.
> mpiicc -trace poisson_sendrecv.single.c
인텔 포트란 컴파일러의 경우 다음을 실행하십시오.
> mpiifort -trace poisson_sendrecv.single.f
이 전amp파일은 다음에 대한 추적(stf*)을 생성합니다.ample poisson_sendrcv.single MPI 애플리케이션 - 생성된 .stf를 엽니다. file 인텔 추적 분석기와 인텔 추적 분석기 및 수집기를 사용합니다.
Linux의 경우:
$ 추적분석기 ./ poisson_sendrecv.single.stf
Windows에서:
추적분석기 poisson_sendrecv.single.stf
메모
테스트 목적으로 사전 수집된 추적을 다운로드할 수 있습니다. file 이 문서에 사용된 푸아송에 대한 poisson_sendrecv.single.stf를 다운로드하고 인텔 추적 분석기 및 수집기로 엽니다.
.stf file 요약 페이지에서 열립니다 view는 애플리케이션 성능에 대한 일반 정보를 나타냅니다.메모 인텔 추적 분석기 및 수집기 기능에 대한 자세한 내용은 자세히 알아보기를 참조하십시오.
가장 활동적인 MPI 기능 분석
MPI 애플리케이션 동작을 분석하고, 병목 현상을 찾고, 직렬화를 식별하여 애플리케이션 성능을 향상시키는 방법을 찾습니다.
- 요약 페이지에서 이벤트 타임라인을 엽니다. view 주요 MPI 기능에 대한 심층 분석을 위해 계속 > 차트 > 이벤트 타임라인을 클릭하세요.
차트에는 시간 경과에 따른 개별 프로세스 활동이 표시됩니다.
애플리케이션 작업은 반복적이며 각 반복은 계산 부분과 MPI 통신으로 구성됩니다. - 집중할 단일 반복을 식별하고 필요한 시간 간격 위로 마우스를 드래그하여 확대합니다.
흔적 view 선택한 추적 내의 섹션을 표시합니다. 이벤트 타임라인 차트에는 선택한 반복 동안 활성화된 이벤트가 표시됩니다.
- 가로 막대는 이러한 프로세스에서 호출되는 기능이 있는 프로세스를 나타냅니다.
- 검은색 선은 프로세스 간에 전송된 메시지를 나타냅니다. 이 라인은 송신 및 수신 프로세스를 연결합니다.
- 파란색 선은 브로드캐스트 또는 축소 작업과 같은 집합적인 작업을 나타냅니다.
- Flat Pro로 전환file 탭(A)을 클릭하면 이벤트 타임라인에서 선택한 시점에 실행되는 기능을 자세히 볼 수 있습니다.
- MPI 기능을 그룹 해제하여 애플리케이션에서 MPI 프로세스 활동을 분석합니다.
이렇게 하려면 Flat Pro에서 모든 프로세스 > 그룹 MPI(B)를 마우스 오른쪽 버튼으로 클릭합니다.file UngroupMPI를 선택합니다. 이 작업은 개별 MPI 호출을 노출합니다. - 반복 시작 시 MPI_Sendrecv를 사용하여 직접 이웃과 통신하는 프로세스를 분석합니다. 예를 들어amp르 :
- ㅏ. 2000년대에는amp즉, MPI_Sendrecv 데이터 교환에는 병목 현상이 있습니다. 프로세스는 이전 이웃과의 교환이 완료될 때까지 다음 이웃과 데이터를 교환하지 않습니다. 이벤트 타임라인 view 이 병목 현상을 계단으로 표시합니다.
- 비. 반복이 끝나면 MPI_Allreduce는 모든 프로세스를 다시 동기화합니다. 이것이 바로 이 블록이 역계단 모양을 하고 있는 이유입니다.
- Function Pro를 사용하여 직렬화 식별file 그리고 메시지 프로file views.
- ㅏ. 동시에 차트를 엽니다.
펑션 프로에서는file 차트에서 로드 밸런스 탭을 엽니다. - Message Pro를 열려면 차트 메뉴로 이동하세요.file.
- 비. 부하 분산 탭에서 MPI_Sendrecv 및 MPI_Allreduce를 확장합니다. 로드 밸런싱은 MPI_Sendrecv에 소요되는 시간이 프로세스 번호에 따라 증가하는 반면 MPI_Allreduce에 소요되는 시간은 감소함을 나타냅니다.
- 씨. Message Pro 살펴보기file 차트를 오른쪽 하단으로 내려갑니다.
블록의 색상 코딩은 높은 순위에서 낮은 순위로 이동하는 메시지에 비례적으로 더 많은 시간이 필요한 반면 낮은 순위에서 높은 순위로 이동하는 메시지는 약한 짝수-홀수 종류의 패턴을 나타냄을 나타냅니다.
- ㅏ. 동시에 차트를 엽니다.
비교 분석 결과, 애플리케이션에는 복잡한 교환 패턴이 없으며, 인접 프로세스하고만 교환이 이루어지는 것으로 나타났습니다. 이 정보는 애플리케이션의 통신 모델을 최적화하기 위한 통신 변경 단계를 통해 애플리케이션 성능 개선에 필수적입니다.
불균형한 통신 식별
이상적인 상황에서 애플리케이션을 관찰하고 원래 추적을 비교하십시오. file 이상화된 상호작용을 통해 문제가 있는 상호작용을 분리합니다.
- 이상화를 창조하라 file:
- ㅏ. 고급 > 이상화를 선택하거나
(이상화) 도구 모음 버튼.
- 비. 이상화 대화 상자(이상적 추적)에서 이상화 매개변수를 확인합니다. file 변환할 이름 및 시간 범위).
- 씨. 추적을 이상화하려면 시작을 클릭하세요.
- ㅏ. 고급 > 이상화를 선택하거나
- 원래 추적을 이상적인 추적과 비교합니다.
- ㅏ. 고급 > 불균형 다이어그램을 선택하거나
(불균형 다이어그램) 도구 모음 버튼.
- 비. 불균형 다이어그램 대화 상자에서 다른 열기 File 버튼을 클릭하고 이상적인 트레이스를 탐색하여 선택합니다.
- 씨. 불균형 다이어그램 창에서 전체 모드 버튼을 클릭하고 분석 모드를 선택합니다.
- ㅏ. 고급 > 불균형 다이어그램을 선택하거나
MPI_Sendrecv가 가장 시간이 많이 걸리는 함수임을 알 수 있습니다. 불균형 중량은 다음과 같이 표시됩니다.
밝은 색상이며 MPI_Sendrecv 기능의 약 10%를 차지합니다. 이는 프로세스가 서로를 기다리는 데 소요되는 시간입니다.
통신을 변경하여 애플리케이션 성능을 향상시키세요
- 차단을 비차단 통신으로 변경하여 MPI 애플리케이션의 성능을 향상시킵니다.
코드에서 직렬 MPI_Sendrcv를 비차단 통신(MPI_Isend 및 MPI_Irecv)으로 바꾸십시오. 예를 들어ample: 원본 코드 조각:
// 경계 교환
교환 무효(para* p, Grid* gr){
정수 i,j;
MPI_Status 상태_100, 상태_200, 상태_300, 상태_400;
// 첫 번째 행을 아래로 보냅니다.
MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD,
&status_100);
// 마지막 행을 보낸다
MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->up, 200, MPI_COMM_WORLD);
MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->down, 200, MPI_COMM_WORLD, &status_200);
인텔 추적 분석기 비교 사용 view 일련화된 애플리케이션을 개정된 애플리케이션과 비교하기 위해
// 왼쪽 열을 tmp 배열로 복사합니다.
if(gr->왼쪽 != MPI_PROC_NULL){
gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
// 바로 보내기
MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
if(gr->왼쪽 != MPI_PROC_NULL)
{
MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->left, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
{
gr->x_new[i][0] = left_col[i];
}
}
업데이트된 코드 조각
MPI_요청 요청[7];
// 첫 번째 행을 아래로 보냅니다.
MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD, &req[0]);
MPI_Irecv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD, &req[1]);
…..
MPI_Waitall(7, req, MPI_STATUSES_IGNORE);
수정되면 수정된 애플리케이션의 단일 반복은 다음과 같습니다.amp르 : - 인텔 추적 분석기 비교 사용 view 직렬화된 애플리케이션을 개정된 애플리케이션과 비교합니다. 비교 기능을 사용하여 두 트레이스를 비교하세요. View, 가는 중 View > 비교해보세요. 비교 View 다음과 유사해 보입니다:
비교에서 View, 비차단 통신을 사용하면 직렬화를 제거하고 프로세스 통신 시간을 줄이는 데 도움이 된다는 것을 알 수 있습니다.
메모 애플리케이션의 노드 수준 성능에 대한 자세한 내용은 해당 도구에 대한 설명서를 참조하십시오. Intel® VTune™ Profiler Intel® Advisor를 사용하여 MPI 코드 분석 및 Intel® MPI 응용 프로그램 분석.
더 알아보기
인텔 추적 분석기 및 수집기에 대한 자세한 내용은 다음 리소스를 살펴보십시오.
고지 및 면책 사항
- 인텔 기술은 활성화 된 하드웨어, 소프트웨어 또는 서비스 활성화가 필요할 수 있습니다.
- 어떤 제품이나 구성 요소도 절대적으로 안전할 수 없습니다.
- 비용과 결과는 다를 수 있습니다.
- © 인텔사. 인텔, 인텔 로고 및 기타 인텔 마크는 인텔사 또는 그 자회사의 상표입니다. 다른 이름과 브랜드는 다른 사람의 자산으로 주장될 수 있습니다.
- 이 문서는 어떠한 지적 재산권에 대한 라이선스(명시적이든 묵시적이든, 금반언에 의하든 그렇지 않든)를 부여하지 않습니다.
- 설명된 제품에는 정오표로 알려진 설계 결함이나 오류가 포함되어 있을 수 있으며, 이로 인해 제품이 게시된 사양과 다를 수 있습니다. 현재 특성화된 정오표는 요청 시 제공됩니다.
- 인텔은 상업성, 특정 목적에의 적합성 및 비침해에 대한 묵시적 보증을 포함하되 이에 국한되지 않는 모든 명시적 및 묵시적 보증은 물론 수행 과정, 거래 과정 또는 거래 사용 과정에서 발생하는 모든 보증을 부인합니다.
문서 / 리소스
![]() |
인텔 인텔 추적 분석기 및 수집기 시작하기 [PDF 파일] 사용자 가이드 인텔 추적 분석기 및 수집기 시작하기, 인텔 시작하기, 추적 분석기 및 수집기, 수집기 |