[Rcpp-devel] Rcpp & Multithreading
Dirk Eddelbuettel
edd at debian.org
Sat May 1 00:56:51 CEST 2010
Hi again,
On 30 April 2010 at 18:21, Jaiganesh Balasubramanian wrote:
| Well, we already do that when RInside sets itself up:
|
| #ifdef CSTACK_DEFNS
| R_CStackLimit = (uintptr_t)-1; // Don't do any stack checking,
| see R Exts, '8.1.5 Threading issues'
| #endif
|
|
| Yes, i noticed this, and added the MACRO definition in my code as
| #define CSTACK_DEFNS 1
|
|
| What I would do now is to create a sample program with two threads, then
|
| initialize R in one and the query from the other. If that already tickles
| the
| issue then you are out of luck, and R has to stay in one thread. You may
| be
| able to use inter-thread communication to 'request' data from the
| R-containing thread by carefully brokering the requests.
|
|
| This is exactly what my program is doing right now, and it does not work.
|
| If it works, it would be awesome, because, we could then perform multi-core
| programming with Rcpp/RInside in a seamless fashion with any native threading
| mechanism like Pthreads.
Yes, but we have right now is just wishing that by simply layering multi-
threading around the single-threaded R engine we would get multi-threaded
programming.
So let's just ask: why should it work? Do you have a good answer?
I don't. So in the interim your best bet may the examples/mpi directory --
by wrapping mpi around the single-threaded apps we do get parallel
processing. The open question is whether we can get something more
lightweight. I don't have a lead on that. *Maybe* borrowing some ideas from
Simon's multicore package may help but I don't think that will be trivial.
You would have to lead this and try a few things.
No sorry, no entirely free lunch yet.
--
Regards, Dirk
More information about the Rcpp-devel
mailing list