Estoy escribiendo un programa para verificar la ruta más corta usando la biblioteca MPI
. Hay dos escenarios:
O encontré una mejor ruta, en caso de que la primera ranura del búfer indicará resultBuff[0] = 1
y tendré que pasar el resto del contenido del búfer para obtener la mejor ruta.
El otro caso es resultBuff[0] = 0
, y no voy a esperar ningún valor en las otras celdas del buffer.MPI_Recv: Recibo un tamaño diferente al enviado
¿Es posible para mí utilizar por separado MPI_Isend
llamadas:
En caso he encontrado un mejor camino y almacenados en resultBuff[1]
a resultBuff[10]
:
MPI_Isend((void*)sendBuff, 11, MPI_INT, 0, 1, MPI_COMM_WORLD, &request);
En caso de no encontrar un mejor camino :
MPI_Isend((void*)sendBuff, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, &request);
Y en ambos casos usaré
MPI_Recv((void*)resultBuff, 11, MPI_INT, MPI_ANY_SOURCE, 1, MPI_COMM_WORLD, &status);
para recibir el resultado.
¿Funcionará?
Si lo hace, ¿ahorraría los costos de comunicación si no enviara una mejor ruta?
Nota: resultBuff
es de tamaño 11.
Eso no responde a la pregunta, simplemente lo soluciona. – Nayish
Aún necesito saber cuándo ha finalizado el cálculo de la ruta. Necesito enviar un mensaje que diga "He terminado", solo entonces sabré si encontró una mejor ruta o no. – hizki