Hi MPI-users,

I am currently facing some troubles with persitance calling. The following
code describe the abstract I am trying to get out of:

I am trying to implement some form of persistent calling. Somehow the
following code keeps hanging - I guessed I must have introduced a deadlock
but can't really wrap my head around it...

    MPI_Request r[2];
    MPI_Request s[2];
    int num_send = 1000;
    [...]
    MPI_Send_init(&Arr[1][1], num_send, MPI_DOUBLE, 1, A, MPI_COMM_WORLD,
&s[0]);
    MPI_Recv_init(&Arr[1][0], num_send, MPI_DOUBLE, 0, A, MPI_COMM_WORLD,
&r[0]);

    MPI_Send_init(&Arr[2][1], num_send, MPI_DOUBLE, 0, B, MPI_COMM_WORLD,
&s[1]);
    MPI_Recv_init(&Arr[2][0], num_send, MPI_DOUBLE, 1, B, MPI_COMM_WORLD,
&r[1]);
    [...]
    MPI_Startall(2, r);
    MPI_Waitall(2, r, MPI_STATUSES_IGNORE);


This works kinda-fine if num_send is acceptably small. Once I reached
something like 10,000 or 50,000, the code just hang there without changing
anything.

Is this phenomenon kinda expected? May I have some explanation for this
behaviour please?

Many thanks,
Quang
_______________________________________________
users mailing list
users@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/users

Reply via email to