Bắt đầu với Intel Trace Analyzer and Collector
Bắt đầu với Intel® Trace Analyzer and Collector
Sử dụng tài liệu Bắt đầu này và dấu vết được thu thập trước file để xem qua phân tích hiệu suất MPI cơ bản với Intel® Trace Analyzer and Collector.
Intel Trace Analyzer and Collector giúp khám phá hiệu quả sử dụng giao diện truyền tin nhắn (MPI) và xác định các điểm nóng giao tiếp, tắc nghẽn đồng bộ hóa và cân bằng tải. Để biết thêm thông tin về sản phẩm, hãy xem trang sản phẩm Intel Trace Analyzer and Collector.
Tải xuống Intel Trace Analyzer and Collector
- như một phần của Bộ công cụ HPC Intel® oneAPI
- như một công cụ độc lập
Điều kiện tiên quyết
- Trước khi chạy Intel Trace Analyzer and Collector, hãy đảm bảo rằng bạn đã cài đặt Intel® MPI Library và Intel® oneAPI DPC++/C++ Compiler hoặc Intel® Fortran Compiler mới nhất.
- Thao tác này đặt các biến môi trường cần thiết cho trình biên dịch, Thư viện MPI của Intel và Trình phân tích và thu thập dấu vết của Intel, đồng thời bạn đã sẵn sàng theo dõi các ứng dụng của mình.
- Để biết thêm thông tin, hãy xem: Yêu cầu hệ thống bộ công cụ HPC Intel® oneAPI.
Hiểu quy trình làm việc
- Theo dõi ứng dụng của bạn
- Phân tích các chức năng MPI tích cực nhất
- Xác định các tương tác có vấn đề
- Cải thiện hiệu suất ứng dụng của bạn bằng cách thay thế chức năng gây ra sự cố
Theo dõi ứng dụng MPI của bạn
Tạo dấu vết file để thu thập nhật ký sự kiện cho phân tích hành vi ứng dụng sau đây.
- Thiết lập môi trường để khởi chạy Intel® Trace Analyzer and Collector bằng cách chạy tập lệnh setvars từ giám đốc cài đặt oneAPI
GHI CHÚ
Theo mặc định, Intel Trace Analyzer and Collector được cài đặt vào /opt/intel/oneapi/itac cho hệ điều hành Linux* và cho Program Files (x86)\Intel\oneAPI\itac\mới nhất cho HĐH Windows*.
Trên Linux:
nguồn $ /opt/intel/oneapi/setvars.sh
Trên Windows:
“C:\Chương trình Files (x86)\Intel\oneAPI\setvars.bat” - Chạy ứng dụng MPI của bạn và tạo dấu vết với tùy chọn -trace.
Trên Linux:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Trên Windows:
Biên dịch ứng dụng và thu thập dấu vết.
Đối với Trình biên dịch Intel oneAPI DPC++/C++, hãy chạy:
> mpiicc -trace poisson_sendrecv.single.c
Đối với Trình biên dịch Intel Fortran, hãy chạy:
> mpiifort -trace poisson_sendrecv.single.f
Cái này cũample tạo dấu vết (stf*) cho asampứng dụng MPI le poisson_sendrcv.single - Mở .stf đã tạo file với Intel Trace Analyzer với Intel Trace Analyzer and Collector.
Trên Linux:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Trên Windows:
Tracanalyzer poisson_sendrecv.single.stf
GHI CHÚ
Đối với mục đích thử nghiệm, bạn có thể tải xuống dấu vết được thu thập trước file poisson_sendrecv.single.stf cho poisson được sử dụng trong tài liệu này và mở nó bằng Intel Trace Analyzer and Collector.
.stf file mở trong Trang tóm tắt view, đại diện cho thông tin chung về hiệu suất ứng dụng của bạn:GHI CHÚ Để biết thêm thông tin về chức năng Intel Trace Analyzer và Collector, hãy xem Tìm hiểu thêm.
Phân tích các chức năng MPI tích cực nhất
Phân tích hành vi ứng dụng MPI, tìm nút cổ chai và xác định tuần tự hóa để tìm cách cải thiện hiệu suất ứng dụng.
- Từ Trang Tóm tắt mở Dòng thời gian Sự kiện view bằng cách nhấp vào Tiếp tục > Biểu đồ > Dòng thời gian sự kiện để phân tích sâu về các chức năng MPI hàng đầu.
Biểu đồ hiển thị các hoạt động của quy trình riêng lẻ theo thời gian.
Công việc của ứng dụng là lặp đi lặp lại, trong đó mỗi lần lặp lại bao gồm một phần tính toán và giao tiếp MPI. - Xác định một lần lặp duy nhất để tập trung vào và phóng to nó bằng cách kéo chuột qua khoảng thời gian cần thiết:
Dấu vết view hiển thị phần trong dấu vết mà bạn đã chọn. Biểu đồ Dòng thời gian sự kiện hiển thị các sự kiện đang hoạt động trong lần lặp đã chọn.
- Thanh ngang đại diện cho các quy trình với các chức năng được gọi trong các quy trình này.
- Các đường màu đen biểu thị các thông báo được gửi giữa các quy trình. Những dòng này kết nối quá trình gửi và nhận.
- Các đường màu xanh đại diện cho các hoạt động tập thể, chẳng hạn như các hoạt động phát sóng hoặc thu nhỏ.
- Chuyển sang Flat Profile tab (A) để xem kỹ hơn các chức năng thực thi trong thời điểm bạn ( đã chọn trong Dòng thời gian sự kiện.
- Rã nhóm các chức năng MPI để phân tích hoạt động của quy trình MPI trong ứng dụng của bạn.
Để thực hiện việc này, nhấp chuột phải vào Tất cả quy trình > Nhóm MPI ( B) trong Flat Profile và chọn UngroupMPI. Thao tác này hiển thị các lệnh gọi MPI riêng lẻ. - Phân tích các quy trình giao tiếp với các hàng xóm trực tiếp của chúng bằng MPI_Sendrecv khi bắt đầu lặp lại. Đối với người yêu cũamplê:
- Một. Trong Sample, trao đổi dữ liệu MPI_Sendrecv có một nút cổ chai: quá trình này không trao đổi dữ liệu với hàng xóm tiếp theo của nó cho đến khi quá trình trao đổi với cái trước đó hoàn tất. Các mốc thời gian sự kiện view hiển thị nút cổ chai này như một cầu thang.
- b. MPI_Allreduce ở cuối quá trình lặp sẽ đồng bộ hóa lại tất cả các quy trình; đó là lý do tại sao khối này có sự xuất hiện của cầu thang ngược.
- Xác định tuần tự hóa, sử dụng Function Profile và Tin nhắn Profile views.
- Một. Mở các biểu đồ cùng một lúc:
Trong Chức năng Profile biểu đồ, hãy mở tab Cân bằng tải. - Vào menu Charts để mở Message Profile.
- b. Trong tab Cân bằng tải, mở rộng MPI_Sendrecv và MPI_Allreduce. Cân bằng tải chỉ ra rằng thời gian dành cho MPI_Sendrecv tăng theo số tiến trình, trong khi thời gian dành cho MPI_Allreduce giảm.
- c. Kiểm tra Tin nhắn Profile Biểu đồ xuống góc dưới bên phải.
Mã màu của các khối chỉ ra rằng các thông điệp đi từ thứ hạng cao hơn đến thứ hạng thấp hơn cần nhiều thời gian hơn tương ứng trong khi các thông điệp đi từ thứ hạng thấp hơn đến thứ hạng cao hơn cho thấy một kiểu mẫu chẵn-lẻ yếu:
- Một. Mở các biểu đồ cùng một lúc:
Kết quả phân tích so sánh cho thấy rằng không có mẫu trao đổi phức tạp nào trong ứng dụng, việc trao đổi chỉ được thực hiện với các quy trình lân cận. Thông tin sẽ rất cần thiết cho bước Cải thiện Hiệu suất Ứng dụng của Bạn bằng cách Thay đổi Giao tiếp để tối ưu hóa mô hình giao tiếp của ứng dụng.
Xác định Truyền thông Mất cân bằng
Xem ứng dụng của bạn trong các trường hợp lý tưởng và so sánh dấu vết ban đầu file với cái được lý tưởng hóa để cô lập các tương tác có vấn đề.
- Tạo một lý tưởng hóa file:
- Một. Chọn Nâng cao > Lý tưởng hóa hoặc nhấp vào nút
(Lý tưởng hóa) nút thanh công cụ.
- b. Kiểm tra các tham số lý tưởng hóa trong hộp thoại Lý tưởng hóa (dấu vết lý tưởng file tên và phạm vi thời gian để chuyển đổi).
- c. Nhấp vào Bắt đầu để lý tưởng hóa dấu vết của bạn.
- Một. Chọn Nâng cao > Lý tưởng hóa hoặc nhấp vào nút
- So sánh dấu vết ban đầu với dấu vết lý tưởng hóa:
- Một. Chọn Nâng cao > Sơ đồ mất cân bằng hoặc nhấp vào nút
(Sơ đồ mất cân bằng) trên thanh công cụ.
- b. Trong hộp thoại Sơ đồ mất cân bằng, nhấp vào nút Mở khác File nút, điều hướng đến dấu vết được lý tưởng hóa và chọn nó.
- c. Trong cửa sổ Sơ đồ mất cân bằng, nhấp vào nút Chế độ tổng thể và chọn Chế độ phân tích.
- Một. Chọn Nâng cao > Sơ đồ mất cân bằng hoặc nhấp vào nút
Bạn có thể thấy MPI_Sendrecv là chức năng tốn nhiều thời gian nhất. Trọng lượng mất cân bằng được hiển thị trong
màu sáng và bao gồm khoảng 10% cho chức năng MPI_Sendrecv. Đây là thời gian các tiến trình chờ đợi nhau.
Cải thiện hiệu suất ứng dụng của bạn bằng cách thay đổi thông tin liên lạc
- Cải thiện hiệu suất của ứng dụng MPI bằng cách thay đổi chặn thành giao tiếp không chặn.
Trong mã của bạn, hãy thay thế MPI_Sendrcv nối tiếp bằng giao tiếp không chặn: MPI_Isend và MPI_Irecv. Đối với người yêu cũample: Đoạn mã gốc:
//trao đổi ranh giới
trao đổi void(para* p, grid* gr){
int i, j;
MPI_Trạng_thái_100,trạng_thái_200,trạng_thái_300,trạng_thái_400;
// gửi xuống hàng đầu tiên
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);
// gửi lên hàng cuối cùng
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);
Sử dụng Intel Trace Analyzer So sánh view để so sánh ứng dụng được đăng nhiều kỳ với ứng dụng sửa đổi
// sao chép cột bên trái vào mảng tmp
if(gr->left != MPI_PROC_NULL){
gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
// gửi sang phải
MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
if(gr->left != 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];
}
}
Đoạn mã được cập nhật
MPI_Request yêu cầu[7];
// gửi xuống hàng đầu tiên
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);
Sau khi sửa chữa, lần lặp lại duy nhất của ứng dụng đã sửa đổi sẽ trông giống như ví dụ sauamplê: - Sử dụng Intel Trace Analyzer So sánh view để so sánh ứng dụng đã đăng nhiều kỳ với ứng dụng đã sửa đổi. So sánh hai dấu vết với sự trợ giúp của So sánh View, đang đi đến View > So sánh. so sánh View trông tương tự như:
trong So sánh View, bạn có thể thấy rằng việc sử dụng giao tiếp không chặn giúp loại bỏ tuần tự hóa và giảm thời gian giao tiếp của các quy trình.
GHI CHÚ Để biết thêm thông tin về hiệu suất cấp nút của ứng dụng của bạn, hãy xem tài liệu dành cho các công cụ tương ứng: Intel® VTune™ Profiler Phân tích mã MPI và Phân tích các ứng dụng Intel® MPI bằng Intel® Advisor.
Tìm hiểu thêm
Khám phá các tài nguyên sau để biết thêm thông tin về Intel Trace Analyzer and Collector.
Thông báo và Tuyên bố từ chối
- Các công nghệ của Intel có thể yêu cầu kích hoạt phần cứng, phần mềm hoặc dịch vụ.
- Không có sản phẩm hoặc thành phần nào có thể an toàn tuyệt đối.
- Chi phí và kết quả của bạn có thể khác nhau.
- © Tập đoàn Intel. Intel, logo Intel và các nhãn hiệu khác của Intel là thương hiệu của Tập đoàn Intel hoặc các công ty con của Tập đoàn. Các tên và nhãn hiệu khác có thể được coi là tài sản của người khác.
- Tài liệu này không cấp bất kỳ giấy phép nào (rõ ràng hay ngụ ý, bằng cách ngăn chặn hoặc cách khác) cho bất kỳ quyền sở hữu trí tuệ nào.
- Các sản phẩm được mô tả có thể chứa các lỗi hoặc khiếm khuyết về thiết kế được gọi là lỗi in, có thể khiến sản phẩm không giống với các thông số kỹ thuật đã công bố. Các lỗi in hiện tại có sẵn theo yêu cầu.
- Intel từ chối tất cả các bảo đảm rõ ràng và ngụ ý, bao gồm nhưng không giới hạn, các bảo đảm ngụ ý về khả năng bán được, tính phù hợp cho một mục đích cụ thể và không vi phạm, cũng như bất kỳ bảo hành nào phát sinh từ quá trình thực hiện, quá trình giao dịch hoặc sử dụng trong thương mại.
Tài liệu / Tài nguyên
![]() |
intel Bắt đầu với Intel Trace Analyzer and Collector [tập tin pdf] Hướng dẫn sử dụng Bắt đầu với Intel Trace Analyzer and Collector, Bắt đầu với Intel, Trace Analyzer and Collector, Collector |