Giải pháp cho ứng dụng

Một phần của tài liệu NGHIÊN cứu mô PHỎNG và TÍNH GIÁ THÀNH (Trang 69 - 73)

a) Về cách tính độ dài “cable length”

Nhƣ đã trình bày trong mục 2.1.1 về chi phí thiết lập mạng, việc bố trí các tủ mạng theo một layout xác định trong server room hoàn toàn có thể tính đƣợc độ dài cáp mạng, từ đó ta có thể tính đƣợc chi phí quy đổi theo giá hiện hành.

70

Khi biết đƣợc số node mạng, topology mạng, theo mô tả đƣa ra ở trên, ta có thể tính đƣợc số node mạng trong mỗi tủ mạng và tính đƣợc tọa độ của các tủ mạng trong layout. Khoảng cách giữa hai node mạng trong cùng một tủ mạng đƣợc quy định trƣớc, khoảng cách giữa hai node mạng đƣợc tính theo công thức manhattan, dựa trên tọa độ của tủ mạng chứa node mạng đó.

b) Về mô hình giả lập trên Simgrid

Việc giả lập việc tính toán song song phân tán trong trƣờng hợp này đƣợc thực hiện sử dụng giao diện lập trình ứng dụng SMPI của Simgrid. Để hoạt động với SMPI chúng ta cần:

- Xây dựng platform: chúng tôi sử dụng một công cụ đƣợc xây dựng để sinh các file platform tự động theo các chuẩn của Simgrid [19]. Các platform đƣợc sử dụng chỉ khác nhau về topology, các thông số về thuật toán định tuyến, năng lực tính toán, số core của host, băng thông, độ trễ của link giống nhau:

+ Topology: Các platform đƣợc sử dụng bao gồm 4 loại topology, với 64 nút mạng: 3D-torus 4-4-4, ring, mesh 4-4-4 và hypercube

+ Routing: Floyd

71

+ Link gồm 2 loại: <link id='xx' bandwidth='5000000000.0' latency='8.799999999999999e-07'/> <link id='xx' bandwidth='1.0e+16' latency='2.0e-07'/>

- 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 ở lệnh dịch

+ Thuật toán nhân ma trận: Chƣơng trình sử dụng phƣơng pháp song 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

MPI_Init, khởi động thực thi song song, truyền các tham số 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

72

o MPI_Comm_size(MPI_COMM_WORLD, &size): trả về tổng 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

o MPI_Barrier(MPI_COMM_WORLD): Đồng bộ các tiến trình 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ệu trong buf có kiểu datatype đến tiến trình dest

o MPI_Recv(void *buf, int count, MPI_Datatype datatype, int 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

- Xây dựng file triển khai cấu hình cho biết các node mạng sẽ tham gia vào quá trình chạy ứng dụng nhân ma trận

- Dịch và chạy chƣơng trình với SMPI:

+ Lệnh dịch: opt/simgrid/bin/smpicc matrix_mul.c –o MM_mpi o opt/simgrid/bin là đƣờng dẫn cài đặt simgrid trên máy,

smpicc là lệnh dịch chƣơng trình MPI sử dụng SMPI

o matrix_mul.c là file mã nguồn viết bằng ngôn ngữ C, kết hợp cú pháp của MPI

o MM_mpi là tên file chƣơng trình chạy sẽ đƣợc biên dịch ra + Lệnh chạy: opt/simgrid/bin/smpirun -np 2 -platform platform.xml

-hostfile hostfile.txt ./MM_mpi

o smpirun là lệnh chạy ứng dụng MPI trên môi trƣờng giả lập SMPI

73

o –np 2: Sử dụng 2 tiến trình chạy song song, nếu không có tham số này, số tiến trình bằng số host đƣợc cấu hình trong file hostfile.txt

o –platform platform.xml: khai báo file cấu hình nền tảng o –hostfile hostfile.txt: khai báo file cấu hình các tiến trình

chạy trên các host cụ thể

Một phần của tài liệu NGHIÊN cứu mô PHỎNG và TÍNH GIÁ THÀNH (Trang 69 - 73)