Introduction à Rmpi

380 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
380
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduction à Rmpi

  1. 1. MEETUP R ADDICTS – PARALLELISATION ET CALCULS HAUTE PERFORMANCE Package Rmpi
  2. 2. ©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
  3. 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. 4. ©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 »)
  5. 5. ©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
  6. 6. ©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
  7. 7. ©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
  8. 8. ©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

×