Top Banner
MEETUP R ADDICTS – PARALLELISATION ET CALCULS HAUTE PERFORMANCE Package Rmpi
8
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduction à Rmpi

MEETUP R ADDICTS – PARALLELISATION ET CALCULS HAUTE PERFORMANCE

Package Rmpi

Page 2: Introduction à 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

Page 3: Introduction à Rmpi

© 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

Page 4: Introduction à Rmpi

© 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 »)

Page 5: Introduction à Rmpi

© 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

Page 6: Introduction à Rmpi

© 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

Page 7: Introduction à Rmpi

© 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

Page 8: Introduction à Rmpi

© 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