MEETUP R ADDICTS – PARALLELISATION ET CALCULS HAUTE
PERFORMANCE
Package Rmpi
©Keyrus-Allrightsreserved
2
CARTOGRAPHIE DU MONDE R HAUTE PERFORMANCE
Parallélisme File Systems Algorithmique
bigmemory
ff
biglmRODBC
biglars
biganalytics
multicore
snow
rmr
rhdfs
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
©Keyrus-Allrightsreserved
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
©Keyrus-Allrightsreserved
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 »)
©Keyrus-Allrightsreserved
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
©Keyrus-Allrightsreserved
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
©Keyrus-Allrightsreserved
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
©Keyrus-Allrightsreserved
8
CONTACT
Pierre Petronin
Porteur de l’offre Statistiques
Keyrus France
Pierre.Petronin@keyrus.com
Mobile : +33 (0)6 99 33 19 97

Introduction à Rmpi

  • 1.
    MEETUP R ADDICTS– PARALLELISATION ET CALCULS HAUTE PERFORMANCE Package Rmpi
  • 2.
    ©Keyrus-Allrightsreserved 2 CARTOGRAPHIE DU MONDER HAUTE PERFORMANCE Parallélisme File Systems Algorithmique bigmemory ff biglmRODBC biglars biganalytics multicore snow rmr rhdfs 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
  • 3.
    ©Keyrus-Allrightsreserved 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
  • 4.
    ©Keyrus-Allrightsreserved 4 FONCTIONS PRINCIPALES  Ouvrir/fermerles 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 »)
  • 5.
    ©Keyrus-Allrightsreserved 5 COMMUNIQUER ENTRE SESSIONSPARALLELLES  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
  • 6.
    ©Keyrus-Allrightsreserved 6 TASK PULL MasterSlave 1Slave 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
  • 7.
    ©Keyrus-Allrightsreserved 7 CONCLUSION  Permet unegestion 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
  • 8.
    ©Keyrus-Allrightsreserved 8 CONTACT Pierre Petronin Porteur del’offre Statistiques Keyrus France Pierre.Petronin@keyrus.com Mobile : +33 (0)6 99 33 19 97