Oznacza to, że każda funkcja w MPI, która wymaga określenia rozmiaru danych wiadomości, akceptuje zero, ale to nie znaczy, że prowadziłoby to do poprawnego kodu aplikacji.
Na przykład MPI_Send
przyjmuje 0 jako liczbę i zawsze wysyła pusty komunikat, który nie zawiera żadnych danych, ale nadal ma kopertę i może zostać odebrany przez dowolny pasujący znak MPI_Recv
. Z drugiej strony, jeśli podasz 0 jako liczbę w MPI_Recv
, otrzymasz błąd obcinania wiadomości dla każdej pasującej niepustej wiadomości, która dotarła. To jest 0 prawie nigdy nie jest poprawną (z punktu widzenia aplikacji) wartość zliczania dla MPI_Recv
, mimo że jest całkowicie dopuszczalna dla MPI.
Zera są powszechnie akceptowane w MPI ponieważ umożliwia jeden napisać więcej kodu symetryczny (np kod bez partii if (count != 0) ...
+1. Krótko mówiąc, nawet bez ładunku, sam fakt, że komunikat został odebrany może być wystarczająco dużo informacji, np. aby zasygnalizować, że osiągnięto pewien punkt w wykonaniu. – suszterpatt
ale dlaczego nie powiedziałoby, że liczba zero jest zawsze ważna? (Zgadzam się, że wiadomości bez ładunku są przydatne) – mgilson
Masz rację zero jest zawsze poprawne Zajrzałem do standardu (sekcja 3.2.2 standardu MPI 2.2) – mgilson