Publicado el 23 de Febrero del 2019
550 visualizaciones desde el 23 de Febrero del 2019
749,9 KB
25 paginas
Creado hace 9a (15/06/2014)
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Programming with Big Data in R: computación
paralela con datos distribuidos
Carlos Pérez-González - Área de Estadística e Investigación
Operativa (Universidad de La Laguna)
Jornadas ”Desmitificando BigData” - ETSII, Junio, 2014
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Sobre esta presentación
Download
La presentación es una versión simplificada de la que se encuentra
disponible en el proyecto pdbR:
https://github.com/wrathematics/pbd-tutorial/blob/
master/pbdr/useR/pbdr.pdf?raw=true
Speaking Serial R with a Parallel Accent
Los ejemplos presentados se pueden ver con más detalle en el
manual pbdDEMO titulado Speaking Serial R with a Parallel
Accent
http://goo.gl/HZkRt
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
La instalación de pbdR
Instrucciones
Las instrucciones para configurar un entorno pbdR están
disponibles en:
http://r-pbd.org/install.html
Aquí se explica como instalar R, MPI, y pbdR.
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Contenidos
1 Introducción
2 La librería pbdR
3 Ejemplos de operaciones
4 Simulación
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Breve introducción del paralelismo computacional
Paralelismo
Programación en serie o secuencial
Programación en paralelo
hacer sandwich serial.sh
mpirun -np 2 hacer sandwich parallel.sh
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Trabajo Trabajo Retornar Tarea hacer_sandwich (serial) Trabajo Trabajo Combinar Tarea hacer_sandwich (parallel) Tarea hacer_sandwich (parallel) Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Breve introducción del paralelismo computacional
Sistema distribuido
En el sistema de memoria compartida
se trata de saber qué tareas pueden
ser paralelizadas (OpenMP,
multihilo). Ver paquete multicore de
R.
En el sistema distribuido el enfoque
consiste en saber como asignar los
datos a los nodos y cómo funciona la
comunicación entre ellos (MPI,
Hadoop). Utilizamos paquete
pbdMPI de R.
R proporciona una interfaz a las
librerías de cálculo algebraico
BLAS/LAPACK en un entorno HPC
(computación de altas prestaciones),
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Interconnection NetworkPROC+ cachePROC+ cachePROC+ cachePROC+ cacheMemMemMemMemDistributed MemoryMemoryCORE+ cacheCORE+ cacheCORE+ cacheCORE+ cacheNetworkShared Memory Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Características
Programando con BigData en R (pbdR)
Es un conjunto de paquetes de R
(libre).
Permite enlazar el código compilado
de alto rendimiento con la alta
productividad de scripts en R
Proporciona una solución analítica con
big-data.
Los métodos tiene una sintaxis muy
similar a la de R.
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Características
El paradigma pbdR
Los programas pbdR son programa R
La diferencia es que:
Se ejecutan en proceso de lotes o batch mode (la ejecución es
no-interactiva).
La codificación en paralelo utiliza el estilo Un
progama/Múltiples datos (Single Program/Multiple Data ,
SPMD).
Se centra en la paralelización de los datos (distribución de
datos en los nodos).
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Características
Ejecución en lotes
Ejecutar un programa secuencial R en batch:
1 Rscript m y _ s e r i a l _ s c r i p t . r
o, también,
1 R CMD BATCH m y _ s e r i a l _ s c r i p t . r
Ejecutar un programa paralelo en R (con MPI) en batch:
1 mpirun - np 2 Rscript m y _ p a r a l l e l _ s c r i p t . r
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Características
Características de Single Program/Multiple Data (SPMD)
Sólo se escribe un programa, pero se ejecuta en lotes en todos
los procesadores.
Los diferentes procesadores son autónomos; no hay manager.
Es un modelo de programación bastante extendido para
grandes máquinas.
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Gestionar el canal de comunicación
Interfaz de paso de mensajes (Message Passing Interface, MPI)
La librería MPI representa el estándar utilizado en las
comunicaciones (de datos e instrucciones) entre distintos
nodos/computadores.
Implementaciones: OpenMPI, MPICH2, ....
Permite el paralelismo (a través de las comunicaciones) en
sistemas distribuidos.
Comunicador : Es el canal que permite gestionar las
comunicaciones entre procesadores.
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Gestionar el canal de comunicación
Operaciones MPI (1 de 2)
Crear un comunicador: Crear y cerrar canales de
comunicación.
init() — inicializa el comunicador
finalize() — cierra el comunicador
Rango de canal: Se puede determinar la posición o rango de
un procesador en el canal.
comm.rank() — “¿Qué procesador soy?”
comm.size() — “¿Cuántos procesadores habemos en el
canal?”
Visualización: Ver el output en diferentes posiciones del
canal.
comm.print(x)
comm.cat(x)
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Gestionar el canal de comunicación
Operaciones MPI (2 de 2)
Reducción o reducer: Por ejemplo, cada procesador tiene un
número x; los reunimos todos y aplicamos una operación
aritmética (suma, resta, max, min, ...).
reduce(x, op=’sum’) — reduce a un procesador
allreduce(x, op=’sum’) — reduce en todos los
procesadores
Recoger o gather: Por ejemplo, cada procesador tiene un
número; creamos un objeto (array) en algún procesador que
los contenga a todos.
gather(x) — recoger en uno
allgather(x) — recoger en todos
Transmitir o broadcast: Por ejemplo, un procesador tiene un
número x y queremos enviarlo a los demás.
bcast(x)
Barrera: Esta es una instrucción que actúa a modo de
“computation wall” de forma que ningún procesador puede
continuar hasta que todos los demás lo puedan hacer.
barrier()
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Recolección (gather) y reducción (reduce)
Ejemplo sencillo 1
Gather: test gather parallel.r
l i b r a r y ( pbdMPI , q u i e t l y=TRUE)
i n i t ( )
1
2
3 comm . s e t . s e e d ( d i f f =TRUE)
4
5 n <− s a m p l e ( 1 : 1 0 0 ,
6
7 comm . p r i n t ( n ,
8
9
a l l . r a n k =T)
g t <− g a t h e r ( n ,
10 comm . p r i n t ( gt ,
11
12
f i n a l i z e ( )
a l l . r a n k =T)
mpirun -np 2 Rscript test gather parallel.r:
s i z e =10) # s i m u l a r una m u e s t r a en c ad a nodo
# p r i n t
l a m u e s t r a de c a da nodo
r a n k . d e s t =1) # r e c o g e r
t o d a s
l a s m u e s t r a s en e l nodo 1
[ 1 ] ”# s i m u l a r una m u e s t r a en ca d a nodo ”
[ 1 ] 28 52 18 77 83 13 65 43 71 36
3 59 42 50 58 34 57
l a s m u e s t r a s de t o d o s
l o s n o d o s ”
1
2 COMM. RANK = 0
3
4 COMM. RANK = 1
[ 1 ] 60 72 38
5
6
[ 1 ] ”# r e u n i r
7 COMM. RANK = 0
8 NULL
9 COMM. RANK = 1
10
[ 1 ] 28 52 18 77 83 13 65 43 71 36 60 72 38
3 59 42 50 58 34 57
http://r-pbd.org/tutorialCarlos Pérez-González - Área de Estadística e Investigación Operativa (Universidad de La Laguna)
pbdR - Programming with Big Data in R
Introducción
La librería pbdR
Ejemplos de operaciones
Simulación
Recolección (gather) y reducción (reduce)
Ejemplo sencillo 2
Reducción: test reduce parallel.r
l i b r a r y ( pbdMPI , q u i e t l y=TRUE)
i n i t ( )
1
2
3 comm . s e t . s e e d ( d i f f =TRUE)
4
5 n <− s a m p l e ( 1 : 1 0 0 ,
6
7 comm . p r i n t ( n ,
# p r i n t
8
9 sm <− a l l r e d u c e ( n , op=”sum” ) # sumar
10 comm . p r i n t ( sm ,
11
12
a l l . r a n k =T)
a l l . r a n k =T)
f i n a l i z e ( )
s i z e =10) # s i m u l a r una m u e s t r a en c ad a nodo
l a m u e s t r a de c a da nodo
l o s
e l e m e n t o s c o r r e s p . de
Comentarios de: Programming with Big Data in R: computación paralela con datos distribuidos (0)
No hay comentarios