2012-05-01 33 views

Trả lời

9

Tôi nghĩ bạn đang đọc quá nhiều vào đó. Tôi nghĩ điều đó có nghĩa đơn giản là tùy thuộc vào việc thực hiện người dùng, bất kỳ thứ gì từ 0 một số nguyên dương ngẫu nhiên đều là số đếm hợp lệ. Không khó để tưởng tượng một thẻ thông báo không yêu cầu tham số.

Nếu thẻ thông báo không yêu cầu tham số, thì nó chỉ hợp lệ để gửi số không (và, trên thực tế, có thể không hợp lệ để gửi nhiều hơn thế). Bạn phải ghi nhớ rằng không có tham số nào không giống với dữ liệu, vì thẻ thông điệp là một "tham số" trong và của nó.

+0

1. Nói tóm lại, thậm chí không có một tải trọng, chính sự kiện là một thông điệp đã được nhận có thể đủ thông tin, ví dụ như để báo hiệu rằng một điểm nhất định trong thực thi đã đạt được – suszterpatt

+0

nhưng sau đó tại sao nó sẽ không nói rằng một số không phải là luôn luôn hợp lệ? (Tôi đồng ý rằng tin nhắn mà không có một tải trọng hữu ích) – mgilson

+2

Tôi đã xem xét tiêu chuẩn (phần 3.2.2 của tiêu chuẩn MPI 2.2) – mgilson

5

Điều này có nghĩa là bất kỳ chức năng nào trong MPI yêu cầu kích thước dữ liệu thư phải được xác định bằng 0 nhưng điều đó không có nghĩa là nó sẽ dẫn đến mã ứng dụng chính xác.

Ví dụ: MPI_Send chấp nhận 0 là số và sẽ luôn gửi một thư trống không mang dữ liệu nhưng vẫn có phong bì và có thể nhận được bằng bất kỳ kết hợp nào MPI_Recv. Mặt khác, nếu bạn chỉ định 0 là số trong MPI_Recv, bạn sẽ nhận được thông báo lỗi cắt ngắn cho bất kỳ thư không trống nào phù hợp đã đến. Đó là 0 gần như không bao giờ hợp lệ (từ điểm ứng dụng xem) giá trị đếm cho MPI_Recv mặc dù nó hoàn toàn có thể chấp nhận được đối với MPI.

Zeroes được chấp nhận rộng rãi trong MPI từ cho phép một để viết mã đối xứng hơn (ví dụ như mã mà không nhiều if (count != 0) ...

+0

Tôi không chắc rằng tôi hiểu đối số mã 'đối xứng' ... Đôi khi thông tin từ phong bì thư là tất cả những gì bạn cần (để đồng bộ hóa hai quy trình ví dụ). – mgilson

+1

Đối xứng nghĩa là không có 'if'-s trong mã và do đó dễ đọc và dễ hiểu hơn. Một ví dụ khác là sử dụng 'MPI_PROC_NULL' để ngăn chặn logic cụ thể theo xếp hạng trong các quy trình biên giới trong một cấu trúc liên kết Descartes không định kỳ, ví dụ: "nếu tôi không phải là cấp bậc cao nhất, sau đó gửi một tin nhắn để xếp hạng + 1" hoặc "nếu tôi không xếp hạng 0, sau đó nhận được một tin nhắn từ rank-1". –

Các vấn đề liên quan