The Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Making C++ objects persistent between mex calls, and robust.
Replies: 38   Last Post: Aug 5, 2017 8:06 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Gabri Gwala

Posts: 4
Registered: 8/24/11
Re: Making C++ objects persistent between mex calls, and robust.
Posted: Sep 22, 2013 11:34 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Gabri Gwala" <djgwla-aux@yahoo.it> wrote in message <l1n16j$19e$1@newscl01ah.mathworks.com>...
> "Oliver Woodford" wrote in message <kedm4o$7ns$1@newscl01ah.mathworks.com>...
> > "Gabri Gwala" wrote:
> > > Many thanks to Oliver Woodford and all the other contributors of this effective strategy. Anyway I would like to submit a potential issue when using Matlab Parallel Computation Toolbox. In particular i'm trying to use this scheme inside a parfor, obtaining a segmentation fault while trying to convert a matlab handle in C++ pointer.
> > > Since this is not a pure Matlab topic, I posted the detailed question on stackoverflow.
> > >
> > > http://stackoverflow.com/questions/14607109/matlab-c-segmentation-fault-on-parallel-computing-with-c-mex-persistent-obj
> > >
> > > Regards,
> > > Gabriele Gualandi

> >
> > If all your workers are threads on the same computer then you might be able to solve the problem by making the class instance and all the memory allocated by it in shared memory, e.g. by using the approach described here:
> > http://www.boost.org/doc/libs/1_51_0/doc/html/interprocess/sharedmemorybetweenprocesses.html
> >
> > If the workers are on different computers, then, as Steve points out, this won't work.

>
> As Edric suggested on StackOverflow, the solution to my previous problem was simply that I had to perform a deep copy at C++ side and transfer all the data thru numeric arrays at Matlab side. Adopting a deep copy, this framework really works good also in parallel computing.
>
> However there is something unclear to me:
>
> 1)
> I see that at every invocation of a function on the interface, a new instance of class CLASS_HANDLE is created (since is called convertPtr2Mat). This class offers also a destroyer, but I cannot see where it is called.
>
> 2)
> Every time an instance of CLASS_HANDLE is created, its constructor calls mexLock(): Is this really necessary, since the whole code is compiled as a single MEX-function?
>
> 3)
> The usage of the wrapping class CLASS_HANDLE is necessary for the interface to work, or it only provides usefull auxilary methods, for example the check !ptr->isValid()?
>
> Thank you!!


Sorry, I have to correct my previous sentence #2: mexLock() is not called from the constructor of CLASS_HANDLE, but just before creating a new instance of CLASS_HANDLE. However what I want to highlight is that this happens every time a function is invoked on the interface.


Date Subject Author
4/1/10
Read Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
6/7/10
Read Re: Making C++ objects persistent between mex calls, and robust.
Anthony Halley
6/8/10
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
6/8/10
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
6/8/10
Read Re: Making C++ objects persistent between mex calls, and robust.
Walter Roberson
6/8/10
Read Re: Making C++ objects persistent between mex calls, and robust.
Anthony Halley
6/8/10
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
1/22/11
Read Re: Making C++ objects persistent between mex calls, and robust.
newuser asdf
1/22/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Bruno Luong
1/23/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Rune Allnor
1/23/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Bruno Luong
1/23/11
Read Re: Making C++ objects persistent between mex calls, and robust.
newuser asdf
1/24/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
2/3/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Pierre
2/3/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
2/3/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Pierre
2/3/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
2/15/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Pierre
7/6/11
Read Re: Making C++ objects persistent between mex calls, and robust.
mathias
7/6/11
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
5/24/12
Read Re: Making C++ objects persistent between mex calls, and robust.
Ajay
5/25/12
Read Re: Making C++ objects persistent between mex calls, and robust.
Pierre
10/2/12
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
11/7/12
Read Re: Making C++ objects persistent between mex calls, and robust.
Francesco Montorsi
11/8/12
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
11/9/12
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
1/21/13
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
1/22/13
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
1/30/13
Read Re: Making C++ objects persistent between mex calls, and robust.
Gabri Gwala
1/30/13
Read Re: Making C++ objects persistent between mex calls, and robust.
Steven Lord
1/31/13
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
9/22/13
Read Re: Making C++ objects persistent between mex calls, and robust.
Gabri Gwala
9/22/13
Read Re: Making C++ objects persistent between mex calls, and robust.
Gabri Gwala
9/27/13
Read Re: Making C++ objects persistent between mex calls, and robust.
Oliver Woodford
6/8/10
Read Re: Making C++ objects persistent between mex calls, and robust.
Anthony Halley
6/8/10
Read Re: Making C++ objects persistent between mex calls, and robust.
Anthony Halley
8/5/17
Read Re: Making C++ objects persistent between mex calls, and robust.
Raunak Borker

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.