28 votos

¿Alguna sugerencia para hacer que el código R utilice múltiples procesadores?

Tengo scripts en R para leer grandes cantidades de datos csv de diferentes archivos y luego realizar tareas de aprendizaje automático como svm para la clasificación.
¿Existen librerías para hacer uso de múltiples núcleos en el servidor para R.
o
¿Cuál es la forma más adecuada de conseguirlo?

9voto

Jon Galloway Puntos 28243

Si es en Linux, lo más sencillo es multinúcleo . Aparte de eso, le sugiero que eche un vistazo a MPI (especialmente con el nieve paquete).

En términos más generales, eche un vistazo a:

  1. Les Informática de alto rendimiento en CRAN.
  2. "Estado del arte en computación paralela con R"

Por último, recomiendo utilizar el foreach para abstraer el backend paralelo de tu código. Esto lo hará más útil a largo plazo.

6voto

Scott Cowan Puntos 1564

Si estás usando GNU/Linux las respuestas anteriores de Shane y Dirk son geniales.

Si necesitas una solución para windows, hay una en este post:

Procesamiento paralelo multinúcleo con R (en Windows)

Aunque el paquete aún no está en CRAN, se puede descargar desde ese enlace.

5voto

ESRogs Puntos 1381

He observado que en las respuestas anteriores faltan algunas consideraciones generales sobre el HPC.
En primer lugar, ninguno de esos paquetes le permitirá ejecutar un SVM en paralelo. Así que lo que puede acelerar es la optimización de los parámetros o la validación cruzada, todavía debe escribir sus propias funciones para eso. O, por supuesto, puede ejecutar el trabajo para diferentes conjuntos de datos en paralelo, si es un caso.
La segunda cuestión es la memoria; si se quiere repartir el cálculo entre unos cuantos ordenadores físicos, no hay almuerzo gratis y hay que copiar los datos -- aquí hay que considerar si tiene sentido predistribuir una copia de los datos entre los ordenadores para ahorrar algo de comunicación. Por otro lado, si desea utilizar varios núcleos en un ordenador, entonces el multinúcleo es especialmente apropiado porque permite a todos los procesos hijos acceder a la memoria del proceso padre, por lo que puede ahorrar algo de tiempo y mucho espacio de memoria.

2voto

aphoria Puntos 304

Tanto las respuestas de Shane como las de Dirk dan en el clavo.

No obstante, puede que quieras echar un vistazo a una versión comercial de R, llamada Revolución R que está construido para tratar con grandes conjuntos de datos y ejecutarse en múltiples núcleos. Este software es gratuito para los académicos (que podría ser su caso, no lo sé)

0voto

Jay Puntos 395

Shane tiene razón. Ambos multinúcleo y Rmpi son ganadores.

Una cobertura ligeramente más amplia del tema se encuentra en el Vista de tareas de CRAN sobre computación de alto rendimiento . Esto también enlaza con un artículo de encuesta bastante reciente sobre Computación paralela con R de JSS.

Por último, hay algunos ejemplos prácticos y consejos en el Introducción a HPC con R tutorial que doy de vez en cuando -- ver mi página de presentaciones para la copia más reciente de la semana pasada en useR.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X