Xây dựng ứng dụng nhân ma trận (A, B) theo cách lập trình song song truyền thông điệp sử dụng MPI, việc sử dụng trong môi trường SMPI chỉ khác ở

Một phần của tài liệu Nghiên cứu mô phỏng và tính giá thành cho tô pô mạng liên kết trong siêu máy tính sử dụng công cụ SIMGRID (Trang 68 - 69)

truyền thông điệp sử dụng MPI, việc sử dụng trong môi trường SMPI chỉ khác ở lệnh dịch

+ Thuật toán nhân ma trận: Chương trình sử dụng phương pháp songsong hóa đơn giản, trong phương pháp này, chúng ta truyền ma trận B song hóa đơn giản, trong phương pháp này, chúng ta truyền ma trận B và một phần ma trận A cho mỗi tác vụ. Ma trận A được chia thành các dòng, mỗi tác vụ sẽ thao tác trên một số dòng của A, toàn bộ ma trận B và tính toán một số dòng tương ứng của ma trận C so với A. Kết quả từng phần của mỗi tác vụ sẽ được tập hợp lại để thu được kết quả trọn vẹn. Ma trận A được khởi tạo mặc định với giá trị tất cả các phần tử bằng 1, ma trận B được khởi tạo mặc định với giá trị tất cả các phần tử bằng 2. rank 0 -> 1 1 2 1 1 1 2 5 5 3 <- rank 0 rank 1 -> 1 1 1 0 1 1 1 3 3 3 <- rank 1 rank 2 -> 1 1 2 1 X 1 1 0 = 5 5 3 <- rank 2 rank 0 -> 1 1 1 1 1 1 0 4 4 3 <- rank 0 rank 1 -> 1 1 0 1 3 3 3 <- rank 1 Ma trận A Ma trận B

Ví dụ sử dụng thuật toán với 3 tiến trình song song (rank 0, 1, 2), Ma trận B được sử dụng bởi tất cả các tiến trình

+ Các lệnh lập trình song song truyền thông điệp MPI được sử dụng:o MPI_Init(int* argc, char*** argv): Tất cả tiến trình đều gọi o MPI_Init(int* argc, char*** argv): Tất cả tiến trình đều gọi

MPI_Init, khởi động thực thi song song, truyền các tham sốdòng lệnh dòng lệnh

o MPI_Finalize(void): Tất cả tiến trình đều gọi MPI_Finalize,kết thúc thực thi song song kết thúc thực thi song song

o MPI_Comm_size(MPI_COMM_WORLD, &size): trả về tổngsố tiến trình trong biến size số tiến trình trong biến size

o MPI_Comm_rank(MPI_COMM_WORLD, &rank): trả về sốhiệu tiến trình hiện hành hiệu tiến trình hiện hành

o MPI_Barrier(MPI_COMM_WORLD): Đồng bộ các tiến trìnho MPI_Send(void *buf, int count, MPI_Datatype datatype, int o MPI_Send(void *buf, int count, MPI_Datatype datatype, int

dest, int tag, MPI_Comm comm): Gửi count phần tử dữ liệutrong buf có kiểu datatype đến tiến trình dest trong buf có kiểu datatype đến tiến trình dest

o MPI_Recv(void *buf, int count, MPI_Datatype datatype, intsrc, int tag, MPI_Comm comm, MPI_Status *status): Nhận src, int tag, MPI_Comm comm, MPI_Status *status): Nhận count phần tử dữ liệu có kiểu datatype từ tiến trình src đặt vào trong buf

Một phần của tài liệu Nghiên cứu mô phỏng và tính giá thành cho tô pô mạng liên kết trong siêu máy tính sử dụng công cụ SIMGRID (Trang 68 - 69)

Tải bản đầy đủ (DOCX)

(76 trang)
w