introduction à rmpi
TRANSCRIPT
MEETUP R ADDICTS – PARALLELISATION ET CALCULS HAUTE PERFORMANCE
Package Rmpi
© K
eyru
s -
All
right
s re
serv
ed
2
CARTOGRAPHIE DU MONDE R HAUTE PERFORMANCE
Parallélisme File Systems Algorithmique
bigmemory
ff
biglmRODBC
biglars
biganalytics
multicore
snow
rmrrhdfs
bigtabulate
bigalgebra
rhbase
RHadoop
The Bigmemory
Project
Rmpi
Forking de sessions ; unix only
Cloning de sessions + gestion manuelle de la communication
entre sessions
Couche d’abstraction pour MPI, PVD et sockets
Implémentation MapReduce
Matrices numériques only
© K
eyru
s -
All
right
s re
serv
ed
3
PRÉSENTATION DE RMPI
MPI
MPI signifie Message Passing Interface. MPI définit un environnement dans lequel des
programmes fonctionnent en paralléle et communiquent entre eux en s’envoyant des
messages.
Chaque programme possède une file de message (FIFO) et peut placer un message dans la file
d’un autre programme
Lorsqu’il le souhaite, un programme peut traiter un message dans sa file
OpenMPI
Implémentation Open Source de MPI
Maintenue et en développment actif
Implémentation préconisée par le développeur du package Rmpi
Rmpi
Requiert l’installation d’une implémentation de MPI (ex: OpenMPI)
Package Rmpi_x.y-r.tar.gz à télécharger sur le CRAN
© K
eyru
s -
All
right
s re
serv
ed
4
FONCTIONS PRINCIPALES
Ouvrir/fermer les slaves
mpi.spawn.Rslaves(nslaves)
mpi.close.Rslaves()
Identifier les slaves
mpi.comm.size()
mpi.comm.rank()
Envoyer/recevoir des objets
mpi.send.Robj(obj, ,destination,tag)
mpi.recv.Robj(source,tag)
mpi.bcast.Robj2slave(thedata)
Faire exécuter du code aux slaves
mpi.bcast.cmd(« Rcode »)
mpi.remote.exec(« Rcode »)
© K
eyru
s -
All
right
s re
serv
ed
5
COMMUNIQUER ENTRE SESSIONS PARALLELLES
Brute force
N tâches = n slaves
Le master distribue les n tâches aux n slaves
Task push
N tâches >> n slaves
Le master attribue N1, N2, N3… Nn tâches aux n slaves
Chaque slave réalise une tâche puis demande la suivante au master
Par rapport au brute force, moins coûteux en mémoire
Task pull
N tâches >> n slaves
Le master donne une tâche aux slaves disponibles
Quand une tâche est traitée, le slave informe le master de sa disponibilité
Par rapport au task push :
On ne sait pas par avance quel slave va réaliser quelle tâche
Gére automatiquement des différences de perf entre slaves
© K
eyru
s -
All
right
s re
serv
ed
6
TASK PULL
MasterSlave 1 Slave 2
Slave 1 Ready
Do Task 1
Done Task 1
Do Task 3
Done Task 3
All Tasks Sent
Slave 1 Done
Stop Slave 1 Stop Master Stop Slave 2
Slave 2 Ready
Do Task 2
Done Task 2
All Tasks Sent
Slave 2 Done
Do Task 1
Do Task 3
Do Task 2
Slave 1 Ready
© K
eyru
s -
All
right
s re
serv
ed
7
CONCLUSION
Permet une gestion low-level du parallélisme
Nécessite plus de développement que des solutions « packagées » (foreach, snow…)
Très souple
Très performante (communications « instantanées »)
Plus simple qu’il n’en a l’air
Ressources
http://math.acadiau.ca
http://www.stats.uwo.ca/faculty/yu/Rmpi/install.htm
© K
eyru
s -
All
right
s re
serv
ed
8
CONTACT
Pierre PetroninPorteur de l’offre StatistiquesKeyrus France
[email protected] : +33 (0)6 99 33 19 97