Re: [OMPI users] When is it save to free the buffer after MPI_Isend?

2019-07-27 Thread Gilles Gouaillardet via users
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


Re: [OMPI users] When is it save to free the buffer after MPI_Isend?

2019-07-27 Thread carlos aguni via users
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 <
> users@lists.open-mpi.org> 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