LẬP TRÌNH TRÊN CỤM MÁY TÍNH

Một phần của tài liệu Parallel Processing - xử lý song song (Trang 45 - 46)

267

IV. LẬP TRÌNH TRÊN CỤM MÁY TÍNH

Nhận xét 1:

• Mô hình truyền thông điệp được sử dụng rất hiệu quả để lập trình song song theo cụm máy tính.

• PVM cung cấp môi trường phần mềm để truyền thông điệp cho các cụm máy tính thuần nhất và cả không thuần nhất. • PVM có một tập hợp các hàm thư viện được viết bằng C

hoặc Fortran.

• Mỗi chương trình được viết bằng C, được biên dịch để chạy trên những kiểu máy tính xác định trên mạng.

• Mỗi nút trong mạng (LAN) phải truy cập đến hệ thống tệp chứa các chương trình đã được dịch để thực hiện.

268

IV. LẬP TRÌNH TRÊN CỤM MÁY TÍNH

Nhận xét 2:

• Cụm máy tính trong PVM phải được xác định theo các mức ưu tiên để thực hiện các chương trình.

• Cách thực hiện tốt nhất là tạo ra một danh sách tên gọi của các máy tính và đặt ở hostfile. Tệp này được PVM đọc để thực hiện các chương trình.

• Mỗi máy tính có thể chạy một hay nhiều tiến trình (chương trình ứng dụng).

• Các chương trình ứng dụng chạy trong các máy tính thông qua các tiến trình của PVM để trao đổi với nhau trên mạng. Các tiến trình PVM yêu cầu đủ thông tin để chọn lựa đường truyền dữ liệu.

269

IV. LẬP TRÌNH TRÊN CỤM MÁY TÍNH

PVMCh.trình Ch.trình ứng dụng PVM Ch.trình ứng dụng PVM Ch.trình ứng dụng Máy tính trạm Máy tính trạm Máy tính trạm

Trao đổi thông điệp trên mạng

Sự trao đổi thông điệp của các máy tính trong hệ PVM

270

IV. LẬP TRÌNH TRÊN CỤM MÁY TÍNH

• Các chương trình của PVM thường được tổ chức theo mô hình chủ-tớ (master-slave), trong đó tiến trình chủ được thực hiện trước tiên, sau đó các tiến trình tớ sẽ được tạo ra trong tiến trình chủ đó.

Một số hàm thông dụng trong PVM:

pvm_spawn():phát sinh tiến trình mới trong PVM

pvm_mytid():ghi danh tiến trình muốn tham gia vào hệ PVM • pvm_exit():huỷ bỏ tiến trình

pvm_send() pvm_recv():Các chương trình trao đổi thông điệp với nhau.

271

IV. LẬP TRÌNH TRÊN CỤM MÁY TÍNH

• Tất cả các thủ tục gửi đều không bị chặn (dị bộ) còn các thủ tục nhận thì hoặc bị chặn (được đồng bộ) hoặc không bị chặn. • Các thao tác chính của việc gửi và nhận dữ liệu được thực

hiện ở các bộ đệm buffer.

Nếu dữ liệu được gửi đi là một danh sách các mục có cùng kiểu thì trong PVM sử dụng

pvm_psend()pvm_precv().

272

IV. LẬP TRÌNH TRÊN CỤM MÁY TÍNH

Hình dưới đây mô tả hoạt động của hai tiến trình trao đổi một mảng dữ liệu với nhau.

.. . . pvm_precv(); . . . Tiến trình 2 send buffer . . . pvm_send(); . . . Tiến trình 1 Chờ thông điệp Tiếp tục xử lý

Gọi hàm pvm_psend() và pvm_precv()

273

IV. LẬP TRÌNH TRÊN CỤM MÁY TÍNH

• Khi dữ liệu chuyển đi là phức tạp, gồm nhiều kiểu khác nhau thì chúng phải được đóng gói lại (pack) để gửi đến buffer, sau đó tiến trình nhận lại mở gói (unpack) để nhận về dữ liệu tương ứng. Đó là các hàm:

pvm_pkint() pvm_upkint()dùng cho dữ liệu kiểu int

pvm_pkfloat() pvm_upkfloat()dùng cho dữ liệu kiểu float

pvm_pkstr() pvm_upkstr()dùng cho dữ liệu kiểu string, v.v.

Lưu ý: thứ tự mở gói để lấy dữ liệu ra phải đúng theo thứ tự mà chúng được đóng gói ở tiến trình gửi. Bộ đệm bufferđể gửi dữ liệu là mặc định và nó phải được khởi tạo ở tiến trình gửi bằng lệnh pvm_inítend().

274

IV. LẬP TRÌNH TRÊN CỤM MÁY TÍNH

Tương tự, các lệnh khác về trao đổi thông điệp theo nhóm như: • pvm_bcast()

pvm_scatter()

pvm_gather()

pvm_reduce(),v.v.

Xem ví dụ ở tài liệu

275Tiểu luận: tìm hiểu về PVM Tiểu luận: tìm hiểu về PVM

http://www.csm.ornl.gov/pvm/manpages.html http://www.netlib.org/pvm3/

276

Một phần của tài liệu Parallel Processing - xử lý song song (Trang 45 - 46)

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

(54 trang)