[Rd] How to execute R scripts simultaneously from multiple threads

Erik van Zijst r at erik.prutser.cx
Thu Jan 4 10:54:35 CET 2007


Vladimir Dergachev wrote:
> On Wednesday 03 January 2007 3:47 am, Erik van Zijst wrote:
> 
>>Appearantly the R C-API does not provide a mechanism for parallel
>>execution..
>>
>>It is preferred that the solution is not based on multi-processing (like
>>C/S), because that would introduce IPC overhead.
> 
> One thing to keep in mind is that IPC is very fast in Linux. So unless you are 
> making lots of calls to really tiny functions this should not be an issue.

Using pipes or shared memory to pass things around to other processes on 
the same box is very fast indeed, but if we base our design around 
something like RServe which uses TCP it could be significantly slower.
Our R-based system will be running scripts in response to high-volume 
real-time stock exchange data, so we expect lots of calls to many tiny 
functions indeed.

> What can be an issue is the overhead of starting a new R process. In which 
> case you can make some helper processes that do the same thing you wanted 
> from a multi-thread one and just pass the data around.

Yes, we'll need to keep a pool of processes. Maybe use RServer, or build 
something ourselves around shared memory if the proof of concept proves 
TCP is too heavy for this.

thanks,
Erik


>                              best
> 
>                                   Vladimir Dergachev
> 
> 
>>Hopefully some thread-safe (single-proces) solution is readily
>>available, written in C.
>>
>>What is the best solution to do this?
>>
>>(If there is no single-process solution, what is the alternative?)
>>
>>Regards,
>>Erik.
> 
> 

-- 
USENET would be a better laboratory is there were more labor and less 
oratory.
		-- Elizabeth Haley



More information about the R-devel mailing list