• 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() và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()và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() vàpvm_upkint()dùng cho dữ liệu kiểu int
pvm_pkfloat() vàpvm_upkfloat()dùng cho dữ liệu kiểu float
pvm_pkstr() và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