Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
439,47 KB
Nội dung
Các thao tác communicator Hà nội, 6/2008 Đại học Bách khoa Hà Nội Center of High Performance Computing Hanoi University of Technology {hpcc@mail.hut.edu.vn} Nội dung học Communicator Các loại communicator Thao tác với intra-communicator Thao tác với inter-communicator Communicator Một communicator (comm) bao gồm tập tiến trình, hay nhóm tiến trình Truyền thơng tiến trình thực ngữ cảnh communicator MPI_COMM_WORLD: Là communicator mặc định khởi tạo chương trình Cho phép tiến trình truyền thơng điểm điểm cộng tác Một số ứng dụng địi hỏi truyền thơng nhóm nhỏ tiến trình Communicator Một communicator gồm: Một nhóm tiến trình Một ngữ cảnh (context) hạ tầng trao đổi thông tin, tạo comm thiết lập Nhóm = Tập hợp tiến trình Mỗi communicator có định danh nhóm hay group handle liên kết với Group handle dùng cho thao tác thêm bớt tiến trình, tạo communicator Các loại communicator Intra-communicators: Inter-communicators: Liên quan đến truyền thơng tiến trình communicator Về bản, intra-communicator gồm tập tiến trình MPI_COM_WORLD Thường xử lý tác vụ: xử lý dòng, cột, ma trận ma trận, tăng tính sáng chương trình,… Liên quan đến truyền thơng intra-communicator Có cách tạo communicator: Tạo communicator từ group (nhóm tiến trình) Tạo communicator từ communicator Qui trình tạo communicator từ nhóm call MPI_COMM_GROUP(…) Định tuyến MPI_Comm_group Lấy group handle communicator Ví dụ lấy group handle Định tuyến MPI_group_incl Tạo nhóm từ nhóm tồn cách định tiến trình thành viên nhóm Ví dụ tạo nhóm tiến trình 10 Định tuyến MPI_Group_incl Vị trí tiến trình gọi nhóm xác định mảng member Tiến trình gọi có rank member(i) có rank i nhóm i nằm khoảng (0, count -1) Nếu count = 0, định danh nhóm có giá trị MPI_GROUP_EMPTY Hai nhóm có tiến trình giống nhau, khác thứ tự phụ thuộc vào ma trận member 12 Định tuyến MPI_group_excl Tạo nhóm từ nhóm tồn cách định tiến trình khơng phải thành viên nhóm 13 Ví dụ tạo nhóm 14 Ví dụ tạo nhóm 15 Định tuyến MPI_group_excl Vị trí tiến trình gọi nhóm tương ứng với rank nhóm cũ Thứ tự phần tử mảng nonmember không ảnh hưởng đến rank tiến trình nhóm Nếu count=0, nhóm tạo giống hệt nhóm cũ Các rank tiến trình mảng nonmember: Khơng trùng Phải hợp lệ (tồn tại) 16 Các định tuyến lấy thơng tin nhóm Lấy rank tiến trình nhóm Lấy kích thước nhóm tiến trình MPI_Group_rank (MPI_Group group, int *rank); MPI_Group_size (MPI_Group group, int *size); So sánh mối quan hệ 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: tiến trình hai nhóm giống nhau, đánh thứ tự rank giống MPI_SIMILAR: tiến trình hai nhóm giống nhau, đánh thứ tự rank khác MPI_UNEQUAL: quan hệ khác 17 Định tuyến MPI_Group_rank Trước tạo nhóm Sau tạo nhóm MPI_COM_WORLD: (0, 1, …, p-1) Worker_group: MPI_COM_WORLD: Worker_group: (0, 1, …, p-2) Nếu tiến trình gọi có rank = 0: giá trị group_rank MPI_UNDEFINED 18 Định tuyến MPI_Group_free Trả group 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 communicator từ communicator có sẵn Tất tiến trình cần gọi hàm giống với tham số giống Các tiến trình khơng tham dự nhóm cho kết MPI_Comm_Null Giải phóng MPI_Comm_Free Tạo comm từ comm khác: MPI_Comm_Split Truyền thơng inter-communicator Mục đích inter-communicator Kết nối hạ tầng truyền thống hai nhóm rời Cấu trúc communicator: Tách thành nhóm cục nhóm từ xa Có tính đối xứng Kiểm tra communicator intra hay inter, dùng định tuyến: int MPI_Comm_test_inter ( MPI_Comm comm, int *flag ) Tạo inter-communicator từ hai intra-communicator MPI_Intercomm_create (MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm, int remote_leader, int tag, MPI_Comm *intercomm_out) Tạo inter-communicator cách kết nối hai intracommunicator: Tiến trình có rank local_leader nhóm local_comm truyền thơng với tiến trình remote_leader nhóm peer_comm Hai tiến trình hai nhóm tạo thành cầu nối hai intra-communicators Inter-communicator tạo xác định trỏ intercomm_out Đây định tuyến truyền thông cộng tác: Phải gọi tiến trình tham gia vào định tuyến 23 Ví dụ tạo inter-communicator 24 Tạo inter-communicator từ inter-communicator có sẵn MPI_Intercomm_merge (MPI_Comm intercomm, int high, MPI_Comm *newintercomm); Tổ hợp nhóm gồm nhóm intercomm kết hợp để tạo thành newintercomm Giá trị high xác định thứ tự bên tổ hợp nhóm Tất tiến trình nhóm phải truyền giá trị high giống Nhóm có giá trị high = false xếp trước nhóm có giá trị high = true tổ hợp nhóm Nếu tất tiến trình có giá trị high giống thứ tự phân phối tùy ý 25 Kết luận Nhóm ngữ cảnh truyền thông tạo communicator Communicator định nghĩa khả trao đổi thông tin tiến trình Communicator sử dụng để tách bạch hạ tầng truyền thơng Tất q trình truyền tin cần đến communicator Cho phép tránh nhầm lẫn lựa chọn thông báo Cho phép thực việc lập trình cấu trúc hệ thống song song, tách biệt modul ...Nội dung học Communicator Các loại communicator Thao tác với intra -communicator Thao tác với inter -communicator Communicator Một communicator (comm) bao gồm tập tiến... thao tác thêm bớt tiến trình, tạo communicator Các loại communicator Intra-communicators: Inter-communicators: Liên quan đến truyền thông tiến trình communicator Về bản, intra -communicator. .. MPI_COM_WORLD Thường xử lý tác vụ: xử lý dòng, cột, ma trận ma trận, tăng tính sáng chương trình,… Liên quan đến truyền thơng intra -communicator Có cách tạo communicator: Tạo communicator từ group