Bài giảng Tính toán lưới - Bài 3: Giới thiệu về lập trình song song theo mô hình truyền thông điệp - Nguyễn Hữu Đức

Gii thiu vlp trình song song  
theo mô hình truyn thông đip  
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  
Mô hình truyn thông đip  
Cu trúc chương trình truyn thông đip  
Các khái nim trong chương trình  
Chun bmôi trường lp trình  
Biên dch, chy chương trình song song  
Demo  
Mô hình truyn thông đip (Message Passing Model)  
ACCESS ?  
Int count = 1  
Process  
Process  
2
1
Procesor  
Procesor  
2
1
Cần cơ chế để các tiến trình truy cập bộ nhớ  
của nhau  
Mô hình truyn thông đip: Chia sdliu  
gia các tiến trình bng cách truyn thông  
đip.  
Chun MPI (Message Passing Interface)  
Chuẩn MPI là kết quả sau hơn 2 năm thảo luận của MPI Forum,  
1 nhóm gồm khoảng 60 người từ 40 tổ chức khác nhau đại diện  
cho những nhà phân phối các hệ thống song song, những  
phòng thí nghiệm quốc gia và những trường đại học danh tiếng  
MPI là một thư viện các hàm có thể chèn vào mã nguồn để  
truyền dữ liệu giữa các tiến trình  
Chun MPI  
Chuẩn MPI-1:  
Xác định quy cách đặt tên, quá trình thực hiện và kết quả trả về của  
các hàm/chương trình con trong thư viện. Mọi hàm/chương trình con  
trong thư viện đều phải tuân theo những quy tắc trên, điều này đảm  
bảo khả năng khả chuyển của các chương trình viết theo chuẩn MPI  
khi biên dịch và chạy trên các kiến trúc máy tính, hệ điều hành khác  
nhau.  
Chi tiết cài đặt của các hàm/chương trình con trong thư viện là do  
những nhà cung cấp quyết định (vd: trường Đại học Indiana, Hoa Kỳ  
phát triển LAM/MPI, MPICH, OPENMPI,…)  
Quá trình cài đặt các hàm/chương trình con trong thư viện phải tương  
thích với hầu hết các kiến trúc máy tính, hệ điều hành phổ biến.  
Năm 1994: MPI-1.0; hiện nay mới nhất là MPI-2.1  
Chuẩn MPI-2.1 định nghĩa thêm các định tuyến nâng cao: vào  
ra song song, truyền thông 1 phía, …  
Tuy nhiên chưa được hỗ trợ nhiều  
Khi nào dùng và không dùng MPI  
MPI dùng khi cần viết chương trình:  
Đoạn mã song song có tính khả chuyển thông qua các  
flatform khác nhau  
Cần đạt hiệu năng cao  
Cần viết thư viện song song  
Khi nào không nên dùng MPI:  
Có thể đạt hiệu năng bằng cách dùng các hàm song song  
sẵn có của thư viện Fortran hoặc của OpenMP  
Đã có các thư viện song song viết bằng MPI, như thư viện  
toán học song song  
Không cần đoạn mã nào chạy song song  
Cu trúc chương trình song song theo chun MPI  
Ngôn ngữ C  
Đnh nghĩa các  
prototype:  
Hàm, macro,  
#include<mpi.h>  
hng,….  
main(int argc,char* argv[])  
{
Khi to môi  
trường MPI  
intitation of variable;  
MPI_Init(&argc,&argv);  
....  
...  
...  
- Dn dp dữ  
liu MPI  
- Hy bcác  
MPI_Finalize();  
}
hàm  
đang  
chy  
Các đc đim cơ bn ca CT truyn thông đip  
Bao gồm nhiều instance của 1 chương trình tuần tự.  
Các instance truyền thông với nhau qua các định  
tuyến trong thư viện MPI  
Các định tuyến được chia thành:  
Khởi tạo, quản lý và ngắt qúa trình truyền thông  
Truyền thông giữa các cặp tiến trình(truyền thông điểm –  
điểm)  
Truyền thống giữa các nhóm nhóm(truyền thông công cộng)  
Tạo các loại dữ liệu có cấu trúc riêng  
Thao tác trên communicator  
Quy ước đt tên  
Tất cả phần tử trong MPI (định tuyến, biến, hằng, ...)  
đều bắt đầu bằng từ MPI_  
Tên định tuyến:  
MPI_Xxxxxx(tham số,...)  
MPI_Init($argc, $args)  
Tên hằng:  
MPI_XXXXX  
MPI_COMM_WORLD, MPI_REAL  
Đnh tuyến MPI và giá trtrvề  
Các định tuyến MPI được thực thi như hàm trong C  
Giá trị trả về của định tuyến là 1 số nguyên (integer)  
cho biết trạng thái kết thúc của hàm (lỗi hay thành  
công)  
int err;  
err = MPI_Init($argc, $args);  
if (err == MPI_SUCCESS)  
{
}
Các kiu dliu ca chun MPI  
Kiểu dữ liệu khai báo là  
MPI_Datatype  
Kiu dliu MPI  
Kiu dliu  
tương ng trong C  
MPI_CHAR  
signed char  
signed short int  
signed int  
signed long int  
unsigned char  
unsigned short int  
u
MPI_SHORT  
Ngoài ra còn có các kiểu  
dữ liệu dẫn xuất từ kiểu  
dữ liệu chuẩn  
MPI_INT  
MPI_LONG  
MPI_UNSIGNED_CHAR  
MPI_UNSIGNED_SHORT  
MPI_UNSIGNED  
MPI_UNSIGNED_LONG  
MPI_FLOAT  
unsigned long int  
float  
MPI_DOUBLE  
double  
MPI_LONG_DOUBLE  
MPI_PACKED  
long double  
(none)  
MPI_BYTE  
(none)  
Communicator  
comm = MPI_COMM_WORLD  
Communicator: Một nhóm các  
tiến trình có thể truyền thống  
với nhau  
1
3
2
Một tiến trình có thể thuộc  
nhiều Communicator  
5
Message  
0
4
Kiểu dữ liệu biểu diễn  
Communicator:  
MPI_Comm  
MPI_Comm comm: xác  
MPI_COM_WORLD: Mọi tiến  
trình đều thuộc communicator  
này  
định communicator của  
node gửi và nhận  
Rank  
Mỗi tiến trình trong 1 communicator  
có 1 định danh, gọi là Rank, đánh số  
bắt đầu từ 0.  
Một tiến trình có thể các rank khác  
nhau khi thuộc về các communicator  
khác nhau  
Rank 0  
Rank 5  
LAN  
Rank 1  
Rank 4  
Rank 2  
Rank 3  
Các đnh tuyến thiết lp môi trường  
và ly các thông svmôi trường  
int MPI_Init()  
Khởi tạo tham số cho môi trường MPI  
int MPI_Comm_rank(MPI_Comm comm, int *rank)  
Trả về rank của tiến trình  
int MPI_Comm_size(MPI_Comm comm, int *size);  
Trả về số tiến trình trong comm  
int MPI_Finalize()  
Giải phóng dữ liệu, ngắt các định tuyến MPI  
Cài đt môi trường thnghim  
Sử dụng hệ thống song song sẵn có  
Không đòi hỏi cấu hình, bảo trì, thay đổi máy tính cá nhân  
Tập trung vào viết chương trình  
Số lượng các nút tính toán nhiều  
Môi trường song song thực sự  
Hệ thống bkluster  
Địa chỉ: bkluster.hut.edu.vn  
Liên hệ người quản trị để lấy tài khoản đăng nhập  
Tự cài đặt môi trường song song trên máy cá nhân  
Số lượng CPU ít  
Đòi hỏi công sức cài đặt, bảo trì  
Các bước cài đt  
Hướng dẫn này áp dụng cài trên 1 máy tính đơn  
Bước 1: Hệ điều hành  
Cài đặt hệ điều hành dựa trên Linux: OpenSuse, Ubuntu,  
Fedora, Debian, …  
Có thể dùng máy ảo để cài hệ điều hành  
Hoặc cài đặt Cygwin trên môi trường Windows để thử nghiệm  
Bước 2: môi trường truyền thông điệp  
Download phần mềm lammpi  
Giải nén  
$ tar xjvf lam-7.1.4.tar.bz2  
Cài đặt  
Gõ lần lượt các lệnh sau: ./configure, make, make install  
Môi trường son tho mã ngun  
Chương trình eclipse, với plugin PTP  
Môi trường son tho mã ngun  
Môi trường lập trình song song trực tuyến PCP  
Viết chương trình helloworld.c  
1. #include <stdio.h>  
2. #include <unistd.h>  
3. #include <mpi.h>  
4. int main(int argc, char* argv[])  
5. {  
6.  
int size, rank;  
7.  
char hostname[50];  
8.  
// Khoi tao tham so cho moi truong MPI  
MPI_Init(&argc, &argv);  
9.  
10.  
11.  
12.  
13.  
14.  
15.  
16.  
17.  
18.  
19.}  
// Lay ve kich thuoc pommunicator  
MPI_Comm_size(MPI_COMM_WORLD, &size);  
// Lay ve so hieu rank  
MPI_Comm_rank(MPI_COMM_WORLD, &rank);  
// Lay ve hostname  
gethostname(hostname,50);  
printf("My rank is %d , %s\n",rank, hostname);  
MPI_Finalize();  
return 0;  
Biên dch chương trình  
Dùng lệnh  
mpicc helloworld.c –o helloworld  
Biên dịch mã nguồn helloworld.c thành chương trình chạy  
có tên helloworld  
Tải về để xem bản đầy đủ
pdf 24 trang Thùy Anh 29/04/2022 7580
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 3: Giới thiệu về lập trình song song theo mô hình truyền thông điệp - 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_3_gioi_thieu_ve_lap_trinh_song.pdf