Giảm là một phép toán giảm (khử) nhiều giá trị thành một giá trị duy nhất. Giá trị duy nhất này có thể là giá trị cực đại (cực tiểu), tổng (nhân) của tất cả các thành phần, hoặc là kết quả của việc áp dụng một toán tử nhị phân kết hợp cho một kết quả duy nhất. PVM hỗ trợ giảm thông qua việc sử dụng hàm pvm_ reduce(). Định dạng của hàm này như sau:
info=pvm_reduce(func, data, n, datatype, tag, group_name, root)
BẢNG 8.3 Các thông số hoạt động giảm Tham số Ý nghĩa
Func: Hàm xác định phép toán được thực hiện. Data: Một mảng phần tử dữ liệu.
n:số phần tử trong mảng dữ liệu.
datatype: Các loại đối tượng trong mảng dữ liệu. tag: Thẻ tin nhắn
group_name: Tên của nhóm tồn tại.
root: Số trường hợp (số nhận dạng) của một thành viên trong nhóm nhận kết quả.
Hàm trả về một mã trạng thái số nguyên (info). Các thông số khác nhau và ý nghĩa của chúng được tóm tắt trong Bảng 8.3.
Phép tốn giảm được thực hiện dựa trên các yếu tố tương ứng trong mảng dữ liệu qua nhóm. Giá trị giảm đối với mỗi phần tử trong mảng qua nhóm sẽ được trả về root (định nghĩa ở trên) được xác định trong các thông số. Trong thực tế, mảng dữ liệu trên root sẽ được ghi đè với kết quả của phép tốn giảm trên nhóm. Người dùng có thể định nghĩa các hàm riêng của mình hoặc có thể sử dụng một số hàm định nghĩa trước như PvmMin, PvmMax, PvmSum, và PvmProduct lần lượt cho cực tiểu, cực đại, tổng, và tích.
Ví dụ 6: Hình 8.8 trình bày ví dụ về một phép cộng giảm các mục của data_array
trên nhóm " slave ", nhóm này có ba thành viên: T0, T1, và T2 Các giá trị giảm (khử) được trả về root, được giả sử là tác vụ T1 trong ví dụ này. Hàm sau đây phải được gọi bởi ba tác vụ.
Hình 8,8 hoạt động giảm trên các thành viên của nhóm slave