RProvider icon indicating copy to clipboard operation
RProvider copied to clipboard

Parallel processing fails

Open evelinag opened this issue 9 years ago • 2 comments

I tried calling R from a parallel loop but it fails with Error: unprotect_ptr: pointer not found, the sequential version works without problems.

#r "packages/R.NET.Community/lib/net40/RDotNet.dll"
#r "packages/RProvider/lib/net40/RProvider.dll"
#r "packages/RProvider/lib/net40/RProvider.Runtime.dll"
open RProvider
open RProvider.stats
open RDotNet

// this works
[| 0..10 |]
|> Array.map (fun _ -> R.rnorm(10) )

// this fails
[| 0..10 |]
|> Array.Parallel.map (fun _ -> R.rnorm(10) )

evelinag avatar May 22 '15 10:05 evelinag

Hi! I have the similar question: Is it possible to call RProvider functions in parallel? For example cal R.lm from different Threads/Tasks (PLINQ) simultaneously?

mae1st0rm avatar Nov 16 '15 08:11 mae1st0rm

As far as I understand it, the underlying R engine can only be called from a single thread - so only a single thread can access it (and additionally, I think it also starts doing odd things when you call it from multiple threads, even when the calls are not concurrent).

In principle, I suspect that you can create multiple instances of the R.NET engine (@jmp75 would probably know), but this is not something that we are currently exposing in the R type provider (you cannot really currently initialize the R provider multiple times in a single process).

tpetricek avatar Nov 17 '15 01:11 tpetricek