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.
To nie odpowiada na pytanie, po prostu się kręci. – Nayish
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