CAPE là một hướng tiếp cận để cài đặt OpenMP - Giao diện lập trình chuẩn cho lập trình song song trên các hệ thống sử dụng bộ nhớ chia sẻ - lên các hệ thống sử dụng bộ nhớ phân tán. Các phiên bản đầu tiên của CAPE đã được xây dựng và thử nghiệm, đánh giá với khả năng cung cấp hiệu năng gần tương đương với hiệu năng của MPI, công cụ có khả năng cung cấp hiệu năng cao nhất trên các hệ thống phân tán. Tuy nhiên, các phiên bản này chưa xử lý các vấn đề về dữ liệu chia sẻ của OpenMP, do đó chưa cài đặt được một cách hoàn toàn các giao diện của nó. Bài báo này trình bày các đề xuất để xử lý các mệnh đề về dữ liệu chia sẻ bằng cách bổ sung các câu lệnh xử lý chuyên biệt vào các khuôn dạng chuyển đổi của CAPE cho các cấu trúc song song của OpenMP
7 trang |
Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 627 | Lượt tải: 0
Nội dung tài liệu Xử lý các mệnh đề về dữ liệu chia sẻ của OpenMP trên các hệ thống sử dụng bộ nhớ phân tán, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
giá trị nào vào đúng vị trí ảnh vùng nhớ của master trước khi ảnh vùng nhớ này có thể gửi đến các
slave để thực hiện các đoạn mã song song tiếp theo.
Đối với mệnh đề shared(x), hàng 1 trong Bảng 3 có ý nghĩa biến x được chia sẻ cho các slave, CAPE áp
dụng nguyên lý Pi nào cập nhật cuối cùng sẽ là giá trị kết quả của biến x, tương ứng với trường hợp 2.1.
Đối với mệnh đề threadprivate(x), private(x), firstprivate(x), lastprivate(x), tại dòng 2
đến 5 trong Hình 5 biến x được copy bằng cách khai báo bên đoạn mã của vòng lặp để tạo ra biến cục bộ trong vòng
lặp. Đương nhiên biến x cục bộ này sẽ được cấp phát trên vùng nhớ có địa chỉ khác với biến x ngoài vòng lặp, riêng
với firstprivate (x), biến x cục bộ được khởi tạo giá trị ban đầu bằng biến x bên ngoài vòng lặp thông qua biến
trung gian __x__. Ngược lại, đối với lastprivate(x) giá trị của biến x cần được lưu giữ sau khi kết thúc vòng lặp
thông qua biên trung gian __x__, đồng thời cần lấy giá trị x của Pi có cập nhật cuối cùng như mô phỏng trong dòng 5
cột 3 của Hình 5. Trong quá trình CAPE thực hiện tạo ảnh vùng nhớ có thay đổi gửi về master vùng nhớ của biến x cục
bộ vẫn được ghi nhận khác địa chỉ với vùng nhớ của biến x bên ngoài vòng lặp nên không ảnh hưởng đến giá trị của x
ngoài vòng lặp, tương ứng nó thỏa mãn trường hợp 2.1.
Đối với mệnh đề copyin(x), copyprivate(x), dòng 7 và 8 trong Hình 6 sử dụng hàm broadcast(x) để
cập nhật giá trị x đến các Pi. Các Pi nhận được giá trị x và tích hợp vào không gian nhớ của mình để tiếp tục thực hiện
phần còn lại của chương trình. Trong quá trình chạy chương trình nếu P i có thực hiện cập nhật giá trị của biến x thì sẽ
được ghi nhận trong ảnh chụp vùng nhớ của Pi, đồng thời gửi đến master tập hợp theo như kịch bản trường hợp 2.1
thỏa mãn giả thiết 2.
Như vậy với trường hợp 2.2: chỉ có trường hợp mệnh đề reduction cần phải tổ chức xử lý riêng bằng hàm
mới, đối với các mệnh đề, chỉ thị chia sẻ khác đều có thể dẫn về trường hợp 2.1 thỏa mãn giả thiết 2.
Về cài đặt chương trình CAPE thực hiện các mệnh đề, chỉ dẫn chia sẻ dữ liệu của OpenMP trên hệ thống bộ nhớ
phân tán, nhóm nghiên cứu đã cài đặt thành công các mệnh đề threadprivate(x), private(x),
firstprivate(x), lastprivate(x)với kết quả chạy chương trình giống với chương trình gốc OpenMP. Các
mệnh đề copyin(x), copyprivate(x), reduction đang được tiếp tục cài đặt và thử nghiệm. Kết quả thử
nghiệm sẽ được công bố trong thời gian gần.
VI. KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU TIẾP THEO
Bài báo đề xuất giải pháp để xử lý các mệnh đề chia sẻ dữ liệu của OpenMP trên hệ thống bộ nhớ phân tán
trên nền tảng CAPE. Qua phân tích, trong CAPE có thể xử lý được tất cả các mệnh đề dữ liệu chia sẻ của OpenMP với
các ưu điểm: Thứ nhất, người lập trình không yêu cầu phải tự tổ chức gửi nhận đồng bộ dữ liệu của các đoạn chương
trình tuần tự hoặc song song. Thứ hai, số nút xử lý song song có thể tăng giảm linh động theo nhu cầu (không có giới
hạn số lượng checkpoint gửi về master).
Hiện nay, chúng tôi đã thực hiện thử nghiệm các chương trình OpenMP có đoạn xử lý song song thỏa mãn với
điều kiện Bernstein cho kết quả gần tương đương với MPI [12], [13], nền tảng lập trình song song trên hệ thống phân
tán nhanh nhất hiện nay. Các đề xuất về giải pháp xử lý biến chia sẻ của OpenMP qua CAPE trong bài báo này cần
phải được cài đặt và thử nghiệm trên các bài bài toán mẫu. Đồng thời, chúng tôi tiếp tục tối ưu hóa và phát triển CAPE
để nó có thể xử lý được toàn bộ các mệnh đề và chỉ dẫn xử lý song song trong OpenMP với hiệu suất cao bằng cách tối
ưu kích thước checkpoint, tăng khả năng khai thác các cấu trúc đa lõi trên các máy tính của hệ thống.
Đỗ Xuân Huyền, Hà Viết Hải, Trần Văn Long 583
TÀI LIỆU THAM KHẢO
[1] OpenMP Architecture Review Board, OpenMP specification 5.0, https://www.openmp.org/wp-
content/uploads/OpenMP-API-Specification-5.0.pdf, 2018.
[2] D. Margery, G. Vallée, R. Lottiaux, C. Morin, J. Berthou, “Kerrighed: A SSI Cluster OS Running OpenMP”,
EWOMP 2003, Fifth European Workshop on OpenMP, 2003.
[3] M. Sato, H. Harada, A. Hasegawa and Y. Ishikaw, “Cluster-enabled OpenMP: An OpenMP compiler for the
SCASH software dis-tributed shared memory system”, Journal Scientific Programming, Volume 9 Issue 2,3, 2001.
[4] J. Tao, W. Karl, C. Trinitis, “Implementing an OpenMP Execution Environment on InfiniBand Clusters”, In
proceeding of the First International Workshop on OpenMP (IWOMP 2005). Eugene, Oregon, 2005.
[5] A. Saa-Garriga, D. Castells-Rufas, J. Carrabina, “OMP2MPI: Automatic MPI code generation from OpenMP
programs”, Proceedings of the Workshop on High Performance Energy Efficient Embedded Systems (HIP3ES)
2015. Amsterdam, January 21st. Collocated with HIPEAC 2015 Conference, 2015.
[6] Jacob A.C. et al, “Exploiting Fine- and Coarse-Grained Parallelism Using a Directive Based Approach”, OpenMP:
Heterogenous Execution and Data Movements. Lecture Notes in Computer Science, vol 9342. Springer, Cham, pp.
30-41, 2015,
[7] L. Huang and B. Chapman and Z. Liu, “Towards a more efficient implementation of OpenMP for clusters via
translation to Global Arrays”, Journal of Parallel Computing 31, pp 1114–1139, 2005.
[8] Viet Hai Ha and Éric Renault, “Improving Performance of CAPE using Discontinuous Incremental
Checkpointing”, Proceedings of the IEEE International Conference on High Performance and Communications
2011 (HPCC-2011). Banff, Canada, September 2011.
[9] Éric Renault, “Toward a distributed implementation of openMP using CAPE”, Parallel Computing Technologies:
9th International Conference, PaCT 2007.
[10] OpenMP Architecture Review Board, OpenMP Application Program Interface v4.5, Technical Report.
https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf, pp 17, 2015.
[11] Viet Hai Ha, Eric Renault, “Discontinuous Incremental: A New Approach Towards Extremely Checkpoint”,
Proceedings of IEEE International Symposium on Computer Networks and Distributed System (CNDS2011),
Tehran, Iran, February 2011.
[12] Ha, Viet Hai and Renault Eric, “Design and performance analysis of CAPE based on discontinuous incremental
checkpoints”, IEEE Pacific Rim Conference on Communications, Computers and Signal Processing, IEEE, pp.
862-867, 2011.
[13] Van Long Tran, Eric Renault and Viet Hai Ha, “Analysis and evaluation of the performance of CAPE, IEEE
Conferences on Ubiquitous Intelligence & Computing”, Advanced and Trusted Computing, Scalable Computing
and Communications, Cloud and Big Data Computing, Internet of People, and Smart World Congress, IEEE, pp.
620–627, 2016.
[14] Viet Hai Ha, Eric Renault, “Improving performance of CAPE using discontinuous incremental checkpointing”,
High Performance Computing and Communications (HPCC), IEEE, pp. 802–807, 2011.
[15] James S.Plank, “An Overview of Checkpointing in Uniprocessor and Distributed Systems”, Focusing on
Implementation and Performance, Technical Report UT-CS-97-372, University of Tennessee,1997.
[16] Viet Hai Ha, Eric Renault, “Design of a Shared-Memory Model for CAPE”, International Workshop on OpenMP,
IWOMP 2012: OpenMP in a Heterogeneous World pp 262-266, 2012.
PROCESSING SHARED DATA CLAUSES OF OPENMP
ON THE DISTRIBUTED MEMORY SYSTEMS
Do Xuan Huyen, Ha Viet Hai, Tran Van Long
ABSTRACT: CAPE is an approach for installing OpenMP - the standard programming interface (API) for parallel programming
on shared memory systems - on distributed memory systems. The first versions of CAPE were built and tested, evaluated with the
ability to provide performance comparable to MPI's performance - the tool capable of providing the highest performance on
distributed systems . However, these versions have not dealt with OpenMP shared data problems, so their interfaces have not been
fully installed. This paper presents propositions for processing the shared data clauses by adding specialized processing statements
to the CAPE transformation prototypes for OpenMP's parallel structures.
Các file đính kèm theo tài liệu này:
- xu_ly_cac_menh_de_ve_du_lieu_chia_se_cua_openmp_tren_cac_he.pdf