soww

W jaki sposób można by w aplikacji MPI zrealizować funkcję signal(int rank, int signalno) - możliwość wysłania sygnału do dowolnego innego procesu (może działać na innym węźle) w taki sposób, aby po asynchronicznym przyjściu sygnału była wywoływana funkcja signalhandler()?

odbior:

while (1) { 
    if(flag != 0){
        MPI_Irecv(&res, 1, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &request);
        flag = 0;
    }
    MPI_Test(&request, &flag, &status);
    if (flag != 0) { 
        printf("recv : %d, slave : %d\n", res, status.MPI_SOURCE);
        if (status.MPI_SOURCE != -1)  sum += res;
        flag = -1;
    }
    if (sum == 3) break;
    printf("sum : %d\n", sum);
}

wysylanie

    MPI_Send(&buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
  • wydaje mi sie, ze mozna to osiagnac poprzez okresowe odpytywanie za pomoca funkcji MPI_Irecv i MPI_Test poniewaz funcje te sprawdzaja czy adresat odebral już komunikat
# To jest tylko mój domysl - fajnie by bylo jak by ktos to potwierdzil lub nie