If I add a loop to make sure I account for all receives on the master, and
correctly set the tags a basic application based on your scheme seems to
work as intended. Can you post a reproducer for you issue instead ?

Thanks,
  George.


On Thu, Mar 28, 2019 at 6:52 AM carlos aguni <aguni...@gmail.com> wrote:

> Hi Gilles.
>
> Thank you for ur reply.
> Here's some code:
>
> // MASTER NODE
> printf("[%s][RECV] src=%d tag=%d\n", processor_name, src, hashtag);
> fflush(stdout);
> MPI_Request req;
> rs = MPI_Irecv(buf, count, MPI_DOUBLE, src, hashtag, comm, &req);
> MPI_Wait(&req, status);
> printf("[%s][RECV] src=%d tag=%d OK\n", processor_name, src, hashtag);
> fflush(stdout);
>
> // WORKER NODES
> printf("[exec_cmd] Send double buff to %d, %d\n", dest, msg_tag);
> fflush(stdout);
> int bufsize = msg_size * sizeof(double) + MPI_BSEND_OVERHEAD;
> double * buff = malloc(bufsize);
> MPI_Buffer_attach(buff, bufsize);
> MPI_Bsend(rec_msg, msg_size, MPI_DOUBLE, dest, msg_tag, comm);
> MPI_Buffer_detach(buff, &bufsize);
> printf("[exec_cmd] Send double buff to %d, %d OK\n", dest, msg_tag);
> fflush(stdout);
>
> //Attempt with Isend
> //MPI_Request req;
> //MPI_Status status;
> //MPI_Isend(rec_msg, msg_size, MPI_DOUBLE, dest, msg_tag, comm, &req);
> //MPI_Wait(&req, &status);
>
> Output log:
> Sending 91 rows to task 9 offset=728
> Sending 91 rows to task 10 offset=819
> Sending 90 rows to task 11 offset=910
> Received results from task 1
> [exec_cmd] Send to 0, 508
> [exec_cmd] Send to 0, 508 OK
> [exec_cmd] Send to 0, 508
> [exec_cmd] Send to 0, 508 OK
> [exec_cmd] Send double buff to 0, 508
> [exec_cmd] Send to 0, 510pir
> [exec_cmd] Send to 0, 510 OK
> [exec_cmd] Send to 0, 510
> [exec_cmd] Send to 0, 510 OK
> [exec_cmd] Send double buff to 0, 510
> Received results from task 2
> Received results from task 3
> [controller][RECV] src=4 tag=506
> output hangs here....
>
> Is there any way to instrument this to assess If the problem is actually
> on the receive end or at the send part?
>
> Regards,
> Carlos.
>
>
>
>
>
>
>
>
>
> On Wed, Mar 27, 2019 at 11:13 AM Gilles Gouaillardet <
> gilles.gouaillar...@gmail.com> wrote:
>
>> Carlos,
>>
>> can you post a trimmed version of your code that evidences the issue ?
>>
>> Keep in mind that if you want to write MPI code that is correct with
>> respect to the standard, you should assume MPI_Send() might block until a
>> matching receive is posted.
>>
>> Cheers,
>>
>> Gilles
>>
>> Sent from my iPod
>>
>> On Mar 27, 2019, at 20:46, carlos aguni <aguni...@gmail.com> wrote:
>>
>> Not "MPI_Send from 0"..
>> MPI_Send from 1 to 0
>> MPI_Send from 7 to 0
>> And so on..
>>
>> On Wed, Mar 27, 2019, 8:43 AM carlos aguni <aguni...@gmail.com> wrote:
>>
>>> Hi all.
>>>
>>> I've an MPI application in which at one moment one rank receives a slice
>>> of an array from the other nodes.
>>> Thing is that my application hangs there.
>>>
>>> One thing I could get from printint out logs are:
>>> (Rank 0) Starts MPI_Recv from source 4
>>> But then it receives:
>>> MPI_Send from 0
>>> MPI_Send from 1
>>> ... From 10
>>> ... From 7
>>> ... From 6
>>>
>>> Then at one neither of them are responding.
>>> The message is a double array type of size 100.000.
>>> Later it would receive the message from 4.
>>>
>>> So i assume the buffer on the Recv side is overflowing.
>>>
>>> Few tests:
>>> - Using smaller array size works
>>> - alreay tried using isend. Irecv. Bsend. And the ranks still get stuck.
>>>
>>> So that leaves me to a few questions rather than how to solve this issue:
>>> - how can i know the size of mpi's interbal buffer?
>>> - how would one debug this?
>>>
>>> Regards,
>>> Carlos.
>>>
>> _______________________________________________
>> users mailing list
>> users@lists.open-mpi.org
>> https://lists.open-mpi.org/mailman/listinfo/users
>>
>> _______________________________________________
>> users mailing list
>> users@lists.open-mpi.org
>> https://lists.open-mpi.org/mailman/listinfo/users
>
> _______________________________________________
> users mailing list
> users@lists.open-mpi.org
> https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/users

Reply via email to