Carlos,
MPI_Isend() does not automatically frees the buffer after it sends the message.
(it simply cannot do it since the buffer might be pointing to a global
variable or to the stack).
Can you please extract a reproducer from your program ?
Out of curiosity, what if you insert an (useless) MPI_Wait() like this ?
MPI_Test(req, , );
if (flag){
MPI_Wait(req, MPI_STATUS_IGNORE);
free(buffer);
}
Cheers,
Gilles
On Sun, Jul 28, 2019 at 5:45 AM carlos aguni via users
wrote:
>
> Hi Jeff,
>
> Thank you for your reply.
>
> If i don't free the program completes but I'm not sure whether MPI_Isend
> automatically frees the buffer after it sends the message. Does it?
>
> I put a long sleep at the end to check the memory used using pmap.
>
> The pmap command reported I'm using around 2GB which I'm guessing it isn't
> freeing it.
>
> Is there anything I could try?
>
> Regards,
> C.
>
> On Mon, Jul 22, 2019 at 10:59 AM Jeff Squyres (jsquyres)
> wrote:
>>
>> > On Jul 21, 2019, at 11:31 AM, carlos aguni via users
>> > wrote:
>> >
>> > MPI_Isend()
>> > ... some stuff..
>> > flag = 0;
>> > MPI_Test(req, , );
>> > if (flag){
>> > free(buffer);
>> > }
>> >
>> > After the free() i'm getting errors like:
>> > [[58327,1],0][btl_tcp_frag.c:130:mca_btl_tcp_frag_send]
>> > mca_btl_tcp_frag_send: writev error (0x2b9daf474000, 12800)
>> > Bad address(1)
>> > [[58327,1],0][btl_tcp_frag.c:130:mca_btl_tcp_frag_send]
>> > mca_btl_tcp_frag_send: writev error (0x2b9daf473ee8, 19608)
>> > Bad address(1)
>> > pml_ob1_sendreq.c:308 FATAL
>>
>> Do you get the same error if you don't free()?
>>
>> --
>> Jeff Squyres
>> jsquy...@cisco.com
>>
> ___
> 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