Ts hƠm thông d ng trong PV:

Một phần của tài liệu Bài giảng xử lý song song (Trang 45)

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 Bài giảng xử lý song song (Trang 45)