Bài giảng Tính toán lưới - Bài 6: Các thao tác trên communicator - Nguyễn Hữu Đức

Các thao tác trên communicator  
Center of High Performance Computing  
Hà ni, 6/2008  
Đi hc Bách khoa Hà Ni  
Hanoi University of Technology  
{hpcc@mail.hut.edu.vn}  
Ni dung bài hc  
Communicator  
Các loi communicator  
Thao tác vi intra-communicator  
Thao tác vi inter-communicator  
2
Communicator  
Một communicator (comm) bao gồm một tập các  
tiến trình, hay một nhóm các tiến trình.  
Truyền thông giữa các tiến trình thực hiện trên  
ngữ cảnh communicator  
MPI_COMM_WORLD:  
Là communicator mặc định khi khởi tạo chương trình  
Cho phép các tiến trình truyền thông điểm điểm hoặc  
cộng tác  
Một số ứng dụng đòi hỏi truyền thông giữa một  
nhóm nhỏ các tiến trình.  
Communicator  
Một communicator gồm:  
Một nhóm các tiến trình  
Một ngữ cảnh (context) hạ tầng trao đổi thông tin,  
tạo ra khi comm được thiết lập  
Nhóm = Tập hợp các tiến trình  
Mỗi communicator có một định danh nhóm hay một  
group handle liên kết với nó.  
Group handle sẽ được dùng cho các thao tác thêm bớt  
tiến trình, và tạo ra communicator  
4
Các loi communicator  
Intra-communicators:  
Liên quan đến các truyền thông giữa các tiến trình trong  
cùng một communicator  
Về cơ bản, intra-communicator gồm tập con các tiến trình  
của MPI_COM_WORLD  
Thường xử lý các tác vụ: xử lý dòng, cột, ma trận con của  
ma trận, tăng tính trong sáng của chương trình,…  
Inter-communicators:  
Liên quan đến truyền thông giữa các intra-communicator  
Có 2 cách tạo ra communicator:  
Tạo communicator từ group (nhóm tiến trình)  
Tạo communicator từ communicator.  
5
Qui trình to communicator tnhóm  
call MPI_COMM_GROUP(…)  
Đnh tuyến MPI_Comm_group  
Lấy về group handle của communicator  
7
Ví dly vgroup handle  
8
Đnh tuyến MPI_group_incl  
Tạo ra nhóm mới từ nhóm đã tồn tại bằng cách chỉ  
định các tiến trình sẽ là thành viên nhóm mới  
9
Ví dto nhóm tiến trình  
10  
Ví dto nhóm tiến trình  
11  
Đnh tuyến MPI_Group_incl  
Vị trí của tiến trình gọi trong nhóm mới được xác  
định bởi mảng member  
Tiến trình gọi có rank là member(i) sẽ có rank là i trong  
nhóm mới  
i nằm trong khoảng (0, count -1)  
Nếu count = 0, định danh của nhóm mới có giá trị  
MPI_GROUP_EMPTY  
Hai nhóm có thể có tiến trình giống nhau, nhưng  
khác nhau về thứ tự phụ thuộc vào ma trận member  
12  
Đnh tuyến MPI_group_excl  
Tạo ra nhóm mới từ nhóm đã tồn tại bằng cách chỉ  
định các tiến trình không phải thành viên nhóm mới  
13  
Ví dto nhóm mi  
14  
Ví dto nhóm mi  
15  
Đnh tuyến MPI_group_excl  
Vị trí tiến trình gọi trong nhóm mới tương ứng với  
rank của nó trong nhóm cũ  
Thứ tự các phần tử trong mảng nonmember không  
ảnh hưởng đến rank của tiến trình trong nhóm mới  
Nếu count=0, nhóm mới tạo ra giống hệt nhóm cũ  
Các rank của các tiến trình trong mảng nonmember:  
Không được trùng nhau.  
Phải hợp lệ (tồn tại)  
16  
Các đnh tuyến ly thông tin nhóm  
Lấy về rank của tiến trình trong nhóm  
MPI_Group_rank (MPI_Group group, int *rank);  
Lấy về kích thước của nhóm tiến trình  
MPI_Group_size (MPI_Group group, int *size);  
So sánh mối quan hệ giữa hai nhóm tiến trình  
MPI_Group_compare (MPI_Group group1, MPI_Group group2,  
int *result);  
Giá trị trả về, biến result:  
MPI_IDENL: các tiến trình trong hai nhóm giống nhau, được đánh thứ tự  
rank giống nhau  
MPI_SIMILAR: các tiến trình trong hai nhóm giống nhau, được đánh thứ  
tự rank khác nhau  
MPI_UNEQUAL: mỗi quan hệ khác  
17  
Đnh tuyến MPI_Group_rank  
Trước khi tạo nhóm  
MPI_COM_WORLD: (0, 1, …, p-1)  
Worker_group:  
Sau khi tạo nhóm  
MPI_COM_WORLD: 0  
Worker_group: (0, 1, …, p-2)  
Nếu tiến trình đang gọi có rank = 0: giá trị group_rank là  
MPI_UNDEFINED  
18  
Đnh tuyến MPI_Group_free  
Trả group về cho hệ thống  
Không giải phóng communicator chứa đựng group đó.  
Dùng định tuyến MPI_Comm_free để giải phóng  
communicator  
19  
MPI_Comm_Create  
Tạo ra communicator từ một communicator đã có sẵn  
Tất cả các tiến trình cần gọi một hàm giống nhau với các  
tham số giống nhau  
Các tiến trình không tham dự trong nhóm cho kết quả  
MPI_Comm_Null  
Giải phóng bằng MPI_Comm_Free  
Tải về để xem bản đầy đủ
pdf 26 trang Thùy Anh 29/04/2022 5840
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tính toán lưới - Bài 6: Các thao tác trên communicator - Nguyễn Hữu Đức", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tinh_toan_luoi_bai_6_cac_thao_tac_tren_communicato.pdf