mtext change r

r - change - title in plot



multihilo con R? (5)

Puede efectivamente reenviar múltiples R utilizando KNIME o cualquier otro programa que utilice el ejecutable rserve.exe. En KNIME, puede colocar un fragmento de código R dentro de una serie de nodos de Chunking paralelo para las operaciones que se realicen en forma de fila. Para las operaciones de columna, puede dividir el conjunto de datos en subconjuntos de columnas y ejecutar Fragmentos R en cada conjunto, luego fusionarlos de nuevo.

Espero que esto haga que tu ventilador de CPU gire más rápido!

Al leer el sitio web de R-project , hay algunas referencias (poco claras) al multiproceso con R, pero no está claro cómo se compilan el producto base y las bibliotecas CRAN .

Revolution Analytics ofrece descargas de base multiproceso (?) Para Windows y Redhat.

¿Algunas de las otras distribuciones de Linux también incluirán R (y paquetes) de multiproceso?


Que hay de this Dado que la fecha de modificación de esa página es en mayo de 2014, creo que los paquetes mencionados son relativamente nuevos, o tal vez no se hayan mantenido estables en el momento en que se escribió la primera respuesta.


Usted está confundido.

Los internos de R (y antes de ello, S) son de un solo hilo, y seguramente seguirán siendo de un solo hilo. Como lo entiendo, el trabajo de doctorado de Duncan Temple Lang fue sobre superar esto, y si él no puede hacerlo ...

Dicho esto, hay bolsillos de multihilo:

  • En primer lugar, siempre que realice llamadas externas y con el bloqueo adecuado, puede realizar varias hebras. Eso es lo que ofrecen las bibliotecas BLAS MKL, Goto / Open BLAS, Atlas (si se construyen en multiproceso), ... todo. Revo R "simplemente" se envía con MKL (Intel), ya que Intel es un inversor clave de Revo

  • Si tiene cuidado con lo que hace, puede usar OpenMP (una extensión del compilador para subprocesos múltiples). Esto comenzó con el trabajo de Luke Tierney en pnmath y pnmath0 (que solían ser paquetes experimentales / externos) y desde entonces ha estado llegando a R, de forma lenta pero segura.

  • A continuación, en un mundo multinúcleo y en el sistema operativo correcto, siempre puede fork() . Eso es lo que inició el paquete multinúcleo y qué paquete paralelo ahora continúa.

  • Por último, pero no menos importante, está la ruta de red / RPC con MPI utilizada por paquetes como Rmpi, snow, parallel, ... y se incluye en las introducciones de HPC.



Renjin es una implementación basada en JVM del intérprete. Ellos afirman que:

A diferencia de GNU R, Renjin es multiproceso y se ejecutará felizmente en un entorno de plataforma como servicio como Google Appengine, AWS Elastic Beanstalk, Heroku o Microsoft Azure.

#resource http://www.bedatadriven.com/products/renjin.html

Aún así, los paquetes R reales a los que llamaríamos desde R pueden no ser seguros para subprocesos.

Consulte la documentación de Jep que explica este problema desde el punto de vista de llamar a CPython desde Java/Scala .

https://github.com/ninia/jep/wiki/How-Jep-Works#threading-complications

Debido a las complicaciones y limitaciones de JNI, un subproceso que crea una instancia Jep debe reutilizarse para todas las llamadas de método a esa instancia Jep. Jep aplicará esto y emitirá excepciones que mencionen el acceso de subprocesos no válido. (En el futuro esperamos simplificar o proporcionar utilidades para la administración de subprocesos).

Más de una instancia Jep no debe ejecutarse en el mismo hilo al mismo tiempo. Si bien esto está técnicamente permitido, potencialmente puede alterar el estado del hilo y provocar un interbloqueo en el intérprete de Python. Esto probablemente se modificará para lanzar una excepción si se encuentra en el futuro.

Por lo tanto, parece que hay esperanza con Renjin pero los Renjin binarios reales (C / C ++, etc.) utilizados deben verificarse para la seguridad de los subprocesos.

Hay otras implementaciones de R

https://dynamicecology.wordpress.com/2014/01/14/r-isnt-just-r-anymore/