2011-01-26 8 views
5

Piszę program, aby sprawdzić najkrótszą ścieżkę przy użyciu biblioteki MPI. Istnieją dwa scenariusze:
Albo znalazłem lepszą ścieżkę, w przypadku, gdy pierwsza szczelina bufora będzie oznaczać resultBuff[0] = 1 i będę musiał przejrzeć resztę zawartości bufora, aby uzyskać lepszą ścieżkę.
Innym przykładem jest resultBuff[0] = 0, a ja nie będę wykluczać żadnych wartości w innych komórkach bufora.MPI_Recv: Odbieranie innego rozmiaru niż wysłany

Czy jest możliwe dla mnie do korzystania z oddzielnych MPI_Isend połączenia:

W przypadku znalazłem lepszą drogę i przechowywane go w resultBuff[1] do resultBuff[10]:

MPI_Isend((void*)sendBuff, 11, MPI_INT, 0, 1, MPI_COMM_WORLD, &request); 

W przypadku nie znaleźć lepszego ścieżkę :

MPI_Isend((void*)sendBuff, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, &request); 

I w obu przypadkach użyję

MPI_Recv((void*)resultBuff, 11, MPI_INT, MPI_ANY_SOURCE, 1, MPI_COMM_WORLD, &status); 

, aby otrzymać wynik.

Czy to zadziała?
Jeśli tak, czy mogę zaoszczędzić koszty komunikacji, jeśli nie wyślę lepszej ścieżki?

Uwaga: resultBuff jest od rozmiaru 11.

Odpowiedz

1

Tak, możesz to zrobić. Ze standardu MPI i man pages dla MPI_Recv "argument liczba wskazuje maksymalną długość wiadomości, rzeczywistą liczbę można określić przy pomocy MPI_Get_count", którą wywołujesz za pomocą obiektu status, który otrzymałeś z MPI_Recv().

Jeśli chodzi o obniżenie kosztów komunikacji, prawdopodobnie nie będzie - takie krótkie wiadomości są zdominowane przez opóźnienie wysyłania wiadomości, a nie przepustowość.

0

Nie trzeba wysłać wiadomość do powiedzenia „nic nie znalazłem”: w brakuje komunikatu może przekazać te informacje tak samo dobrze. Odbiornik (y) może okresowo wywoływać MPI_Test i sprawdzać obiekt stanu, aby zobaczyć, czy odebrano nową wiadomość, czy nie.

+1

To nie odpowiada na pytanie, po prostu się kręci. – Nayish

+1

Nadal muszę wiedzieć, kiedy obliczenie ścieżki się skończyło. Muszę wysłać wiadomość z napisem "Gotowe", tylko wtedy będę wiedział, czy znalazła lepszą ścieżkę, czy nie. – hizki

Powiązane problemy