Articulo de referencia

Programación con Big Data en R

Programación con Big Data en R (pbdR) [ 1 ] es una serie de paquetes de R y un entorno para computación estadística con big data mediante computación estadística de alto rendimi...

Programación con Big Data en R (pbdR) [ 1 ] es una serie de paquetes de R y un entorno para computación estadística con big data mediante computación estadística de alto rendimiento. [ 2 ] [ 3 ] pbdR utiliza el mismo lenguaje de programación que R con clases y métodos S3/S4 que es utilizado por estadísticos y mineros de datos para desarrollar software estadístico . La diferencia significativa entre pbdR y el código R es que pbdR se centra principalmente en sistemas de memoria distribuida , donde los datos se distribuyen entre varios procesadores y se analizan en modo por lotes , mientras que las comunicaciones entre procesadores se basan en MPI que se utiliza fácilmente en grandes sistemas de computación de alto rendimiento (HPC) . El sistema R se centra principalmente en máquinas multinúcleo únicas para el análisis de datos a través de un modo interactivo como la interfaz GUI .

Dos implementaciones principales en R que utilizan MPI son Rmpi ​​[ 4 ] y pbdMPI de pbdR.

La idea del paralelismo SPMD es permitir que cada procesador realice la misma cantidad de trabajo, pero en diferentes partes de un conjunto de datos grande. Por ejemplo, una GPU moderna es una gran colección de coprocesadores más lentos que pueden simplemente aplicar el mismo cálculo a diferentes partes de datos relativamente más pequeños, pero el paralelismo SPMD resulta en una forma eficiente de obtener soluciones finales (es decir, el tiempo de solución es menor). [ 5 ]

Diseño de envases

La programación con pbdR requiere el uso de varios paquetes desarrollados por el equipo central de pbdR. Los paquetes desarrollados son los siguientes:

Las imágenes describen cómo se correlacionan los distintos paquetes pbdr.

Entre estos paquetes, pbdMPI proporciona funciones de envoltura para la biblioteca MPI , y también genera una biblioteca compartida y un archivo de configuración para entornos MPI. Todos los demás paquetes dependen de esta configuración para la instalación y carga de la biblioteca, lo que evita las dificultades de enlace y compilación. Todos los demás paquetes pueden usar las funciones MPI directamente y con facilidad.

  • pbdMPI --- una interfaz eficiente para MPI, ya sea OpenMPI o MPICH2, con énfasis en el estilo de programación paralela de Programa Único/Datos Múltiples ( SPMD ).
  • pbdSLAP --- agrupa bibliotecas de álgebra lineal densa y escalable en doble precisión para R, basadas en ScaLAPACK versión 2.0.2 que incluye varios paquetes de álgebra lineal escalable (a saber, BLACS , PBLAS y ScaLAPACK ).
  • pbdNCDF4 --- interfaz para archivos de datos en formato Parallel Unidata NetCDF 4
  • pbdBASE --- códigos y envoltorios de bajo nivel de ScaLAPACK
  • pbdDMAT --- clases de matrices distribuidas y métodos computacionales, con énfasis en álgebra lineal y estadística.
  • pbdDEMO --- conjunto de demostraciones y ejemplos de paquetes, y esta viñeta unificadora
  • pmclust --- agrupamiento paralelo basado en modelos usando pbdR
  • pbdPROF --- paquete de análisis de rendimiento para códigos MPI y visualización de estadísticas analizadas
  • pbdZMQ --- interfaz para ØMQ
  • remoter --- Cliente R con servidores R remotos
  • pbdCS --- Cliente pbdR con servidores pbdR remotos
  • pbdRPC --- llamada a procedimiento remoto
  • kazaam --- matrices distribuidas muy altas y delgadas
  • pbdML --- caja de herramientas de aprendizaje automático

Entre esos paquetes, el paquete pbdDEMO es una colección de más de 20 demostraciones de paquetes que ofrecen ejemplos de uso de los diversos paquetes pbdR, y contiene una viñeta que ofrece explicaciones detalladas de las demostraciones y proporciona información matemática o estadística.

Ejemplos

Ejemplo 1

¡Hola mundo! Guarda el siguiente código en un archivo llamado "demo.r".

### Inicialización de la biblioteca MPI ( pbdMPI , quiet = TRUE ) init ()comm.cat ( "Hola Mundo!\n" )### Finalizar ()

y utilice el comando

mpiexec -np 2 Rscript demo.r 

para ejecutar el código donde Rscript es uno de los programas ejecutables de línea de comandos.

Ejemplo 2

El siguiente ejemplo, modificado a partir de pbdMPI, ilustra la sintaxis básica del lenguaje pbdR. Dado que pbdR está diseñado en SPMD , todos los scripts de R se almacenan en archivos y se ejecutan desde la línea de comandos mediante mpiexec, mpirun, etc. Guarde el siguiente código en un archivo llamado "demo.r".

### Inicialización de la biblioteca MPI ( pbdMPI , quiet = TRUE ) init () .comm.size <- comm.size () .comm.rank <- comm.rank ()### Establecer un vector x en todos los procesadores con valores diferentes N <- 5 x <- ( 1 : N ) + N * .comm.rank### Reducir todos los x usando la operación de suma y <- allreduce ( as.integer ( x ), op = "sum" ) comm.print ( y ) y <- allreduce ( as.double ( x ), op = "sum" ) comm.print ( y )### Finalizar ()

y utilice el comando

mpiexec -np 4 Rscript demo.r 

para ejecutar el código donde Rscript es uno de los programas ejecutables de línea de comandos.

Ejemplo 3

El siguiente ejemplo, modificado a partir de pbdDEMO, ilustra el cálculo básico de ddmatrix de pbdR, que realiza la descomposición en valores singulares de una matriz dada. Guarde el siguiente código en un archivo llamado "demo.r".

# Inicializar la biblioteca de cuadrícula de procesos ( pbdDMAT , quiet = T ) if ( comm.size () != 2 ) comm.stop ( "Se requieren exactamente 2 procesadores para esta demostración." ) init.grid ()# Configuración para el resto comm.set.seed ( diff = TRUE ) M <- N <- 16 BL <- 2 # bloqueo --- pasar un solo valor BL asume bloqueo BLxBL dA <- ddmatrix ( "rnorm" , nrow = M , ncol = N , mean = 100 , sd = 10 )# LA SVD svd1 <- La.svd ( dA ) comm.print ( svd1 $ d )# Finalizar ()

y utilice el comando

mpiexec -np 2 Rscript demo.r 

para ejecutar el código donde Rscript es uno de los programas ejecutables de línea de comandos.

Lecturas adicionales

  • Raim, AM (2013). Introducción a la computación distribuida con pbdR en el Centro de Computación de Alto Rendimiento de la UMBC (PDF) (Informe técnico). Centro de Computación de Alto Rendimiento de la UMBC, Universidad de Maryland, Condado de Baltimore. HPCF-2013-2. Archivado del original (PDF) el 4 de febrero de 2014. Recuperado el 26 de junio de 2013 .
  • Bachmann, MG, Dyas, AD, Kilmer, SC y Sass, J. (2013). Distribución cíclica de datos en bloques en pbdR y sus efectos en la eficiencia computacional (PDF) (Informe técnico). UMBC High Performance Computing Facility, Universidad de Maryland, Condado de Baltimore. HPCF-2013-11. Archivado del original (PDF) el 4 de febrero de 2014. Recuperado el 1 de febrero de 2014 .{{cite tech report}}: CS1 maint: varios nombres: lista de autores ( enlace )
  • Bailey, WJ, Chambless, CA, Cho, BM y Smith, JD (2013). Identificación de correlaciones no lineales en datos de alta dimensión con aplicación a simulaciones de dinámica molecular de proteínas (PDF) (Informe técnico). UMBC High Performance Computing Facility, Universidad de Maryland, Condado de Baltimore. HPCF-2013-12. Archivado del original (PDF) el 4 de febrero de 2014. Recuperado el 1 de febrero de 2014 .{{cite tech report}}: CS1 maint: varios nombres: lista de autores ( enlace )
  • Dirk Eddelbuettel (13 de noviembre de 2022). "Computación paralela y de alto rendimiento con R" .
  • "R a 12.000 núcleos" .Este artículo fue leído 22.584 veces en 2012 desde que se publicó el 16 de octubre de 2012, y ocupó el puesto número 3 [ 6 ].
  • Google Summer of Code - R 2013. "Herramientas de perfilado para computación paralela con R" .{{cite web}}: |author=tiene nombre genérico ( ayuda ) CS1 maint: servicio de archivo obsoleto ( enlace ) CS1 maint: nombres numéricos: lista de autores ( enlace )
  • Wush Wu (2014). "在雲端運算環境使用R和MPI" .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  • Wush Wu (2013) (25 de septiembre de 2013). "快速在AWS建立R和pbdMPI的使用環境" . YouTube .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )

Referencias

  1. Ostrouchov, G., Chen, W.-C., Schmidt, D., Patel, P. (2012). "Programación con Big Data en R" .{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  2. Chen, W.-C. y Ostrouchov, G. (2011). "HPSC: Computación estadística de alto rendimiento para investigación intensiva en datos" . Archivado del original el 19 de julio de 2013. Recuperado el 25 de junio de 2013 .
  3. "Tutoriales básicos de R para empezar a analizar datos" . 3 de noviembre de 2022.
  4. 1 2 Yu, H. (2002). "Rmpi: Computación estadística paralela en R" . R News .
  5. Mike Houston. "Folding@Home - GPGPU" . Consultado el 4 de octubre de 2007 .
  6. "Las 100 publicaciones de R más leídas en 2012 (estadísticas de blogueros de R): big data, visualización, manipulación de datos y otros lenguajes" .
  • Sitio web oficial