Calcul parallèle avec R



Similar documents
Personnalisez votre intérieur avec les revêtements imprimés ALYOS design

Introduction au BIM. ESEB Seyssinet-Pariset Economie de la construction contact@eseb.fr

POB-JAVA Documentation

Note concernant votre accord de souscription au service «Trusted Certificate Service» (TCS)

Thursday, February 7, DOM via PHP

"Internationalization vs. Localization: The Translation of Videogame Advertising"

System Requirements Orion

Archived Content. Contenu archivé

Méthodes ensemblistes pour une localisation robuste de robots sous-marins

ATP Co C pyr y ight 2013 B l B ue C o C at S y S s y tems I nc. All R i R ghts R e R serve v d. 1

Memory Eye SSTIC Yoann Guillot. Sogeti / ESEC R&D yoann.guillot(at)sogeti.com

Office of the Auditor General / Bureau du vérificateur général FOLLOW-UP TO THE 2010 AUDIT OF COMPRESSED WORK WEEK AGREEMENTS 2012 SUIVI DE LA


Administrer les solutions Citrix XenApp et XenDesktop 7.6 CXD-203

BILL C-665 PROJET DE LOI C-665 C-665 C-665 HOUSE OF COMMONS OF CANADA CHAMBRE DES COMMUNES DU CANADA

Liste d'adresses URL

TP1 : Correction. Rappels : Stream, Thread et Socket TCP

Langages Orientés Objet Java

Machine de Soufflage defibre

FINAL DRAFT INTERNATIONAL STANDARD

General Certificate of Education Advanced Level Examination June 2012

DHI a.s. Na Vrsich 51490/5, , Prague 10, Czech Republic ( t.metelka@dhi.cz, z.svitak@dhi.cz )

The wolf who wanted to change his color Week 1. Day 0. Day 1. Day 2. Day 3. - Lecture de l album

Numéro de projet CISPR Amd 2 Ed IEC/TC or SC: CISPR/A CEI/CE ou SC: Date of circulation Date de diffusion

In-Home Caregivers Teleconference with Canadian Bar Association September 17, 2015

RÉPONSE DE ÉNERGIE LA LIÈVRE S.E.C. ET D ÉNERGIE BROOKFIELD MARKETING INC. À LA DEMANDE DE RENSEIGNEMENT N o 1 DE LA RÉGIE DE L ÉNERGIE («RÉGIE»)

Remote Method Invocation

Archived Content. Contenu archivé

Technical Service Bulletin

CSS : petits compléments

"Templating as a Strategy for Translating Official Documents from Spanish to English"

Troncatures dans les modèles linéaires simples et à effets mixtes sous R

Archived Content. Contenu archivé

Fondation Rennes 1. Atelier de l innovation. Fondation Rennes 1. Fondation Rennes 1 MANAGEMENT AGILE. Fondation Rennes 1 ET INNOVATION

Licence Informatique Année Exceptions

«Object-Oriented Multi-Methods in Cecil» Craig Chambers (Cours IFT6310, H08)

Sélection adaptative de codes polyédriques pour GPU/CPU

Audit de sécurité avec Backtrack 5

Stockage distribué sous Linux

"Simultaneous Consecutive Interpreting: A New Technique Put to the Test"

Proposition d intervention

AgroMarketDay. Research Application Summary pp: Abstract

HEALTH CARE DIRECTIVES ACT

TP : Système de messagerie - Fichiers properties - PrepareStatement

Archived Content. Contenu archivé

The Top the creating of product then Questions. There such, browsers: using features may directly line and can Access experience, and the while

Bibliothèque numérique de l enssib

Repris de : Version Debian (de base)

A STUDY OF THE SENSITIVITY, STABILITY AND SPECIFICITY OF PHENOLPHTHALEIN AS AN INDICATOR TEST FOR BLOOD R. S. HIGAKI 1 and W. M. S.

Archived Content. Contenu archivé

I will explain to you in English why everything from now on will be in French

FINAL DRAFT INTERNATIONAL STANDARD

OCC1 546 STRATEGIES IN OCCUPATIONAL THERAPY PROFESSIONAL PRACTICE

EPREUVE D EXPRESSION ORALE. SAVOIR et SAVOIR-FAIRE

Interfaces de programmation pour les composants de la solution LiveCycle ES (juillet 2008)

Millier Dickinson Blais

Archived Content. Contenu archivé

CERN EUROPEAN ORGANIZATION FOR NUCLEAR RESEARCH

Report to Rapport au: Council Conseil 9 December 2015 / 9 décembre Submitted on October 26, 2015 Soumis le 26 octobre 2015

Web - Travaux Pratiques 1

Covert Channels inside DNS

Measuring Policing Complexity: A Research Based Agenda

Sun Management Center Change Manager Release Notes

Une campagne de sensibilisation est lancée (1) pour lutter (1) contre les conséquences de l'alcool au volant. Il faut absolument réussir (2).

ACP-EU Cooperation Programme in Science and Technology (S&T II) / Programme de Coopération ACP-UE pour la Science et la Technologie

STAGE YOGA & RANDONNEES à MADERE

June 2016 Language and cultural workshops In-between session workshops à la carte June weeks All levels

Future Entreprise. Jean-Dominique Meunier NEM Executive Director Nov. 23, 2009 FIA Stockholm

Introduction. GEAL Bibliothèque Java pour écrire des algorithmes évolutionnaires. Objectifs. Simplicité Evolution et coévolution Parallélisme

VIREMENTS BANCAIRES INTERNATIONAUX

This document is a preview generated by EVS

Post-Secondary Opportunities For Student-Athletes / Opportunités post-secondaire pour les étudiantathlètes

Power Distribution System. Additional Information on page 2 See Page 2 Page 6. Eaton. See Page 2. Additional Information on page 2

Bibliothèque numérique de l enssib

TP JSP : déployer chaque TP sous forme d'archive war

Introduction ToIP/Asterisk Quelques applications Trixbox/FOP Autres distributions Conclusion. Asterisk et la ToIP. Projet tuteuré

sept-2002 Computer architecture and software cells for broadband networks Va avec

[ dessins, collages, illustrations, etcetera ]

BALVIN SERVICE. and THE MINISTER OF CITIZENSHIP AND IMMIGRATION REASONS FOR JUDGMENT AND JUDGMENT

User Manual Culturethèque Thailand

RAPPORT FINANCIER ANNUEL PORTANT SUR LES COMPTES 2014

Product / Produit Description Duration /Days Total / Total

Il est repris ci-dessous sans aucune complétude - quelques éléments de cet article, dont il est fait des citations (texte entre guillemets).

A GREEN PARADISE AT THE GATES OF LISBON UN PARADIS VERT AUX PORTES DE LISBONNE

Transcription:

Calcul parallèle avec R ANF R Vincent Miele CNRS 07/10/2015 Pour chaque exercice, il est nécessaire d ouvrir une fenètre de visualisation des processes (Terminal + top sous Linux et Mac OS X, Gestionnaire des t^aches sous Windows) et d observer le comportement des processes R. Par ailleurs, si votre machine a plus que 4 GB de RAM, remplacer dans ce qui suit m=3000 par m=5000. Enfin, avant chaque exercice, il est préférable de relancer R (sans sauvegarde de l environnement). Exercice 1 (Parallel apply) 1. tester la version séquentielle M = matrix(rnorm(n*m), ncol=m) V = matrix(rnorm(10*m), ncol=m) eucd <- function(u){ euc.distu = apply(v, 1, function(w) sqrt(sum((u - w)^2))) euc.dist1 = apply(m, 1, eucd) 2. tester la version snow-like clusterexport(cl, list("v")) euc.dist2 = parapply(cl, M, 1, eucd) 3. tester la version multicore-like

cl <- makecluster(2, type="fork") euc.dist3 = parapply(cl, M, 1, eucd) Exercice 2 (Parallel lapply) 1. tester la version séquentielle L = lapply(1:n, rnorm, n = m ) V = matrix(rnorm(10*m), ncol=m) eucd <- function(u){ euc.distu = apply(v, 1, function(w) sqrt(sum((u - w)^2))) euc.dist1 = lapply(l, eucd) 2. tester tester la version snow-like clusterexport(cl, list("v")) euc.dist2 = parlapply(cl, L, eucd) 3. tester tester les deux versions multicore-like euc.dist1 = mclapply(l, eucd, mc.co=2) cl <- makecluster(2, type="fork") euc.dist3 = parlapply(cl, L, eucd)

Exercice 3 (mcparallel et mccollect) Tester le lancement de tâches (Linux et Mac OS X seulement) 1. library(igraph) mis <- function(g){ lis = largest.independent.vertex.sets(g)[1] t = cat("graph with ",vcount(g)," vertices : DONE in ",as.numeric(t[3]),"\n") lis g1 <- erdos.renyi.game(70, 1/25) mis1 = mcparallel(mis(g1)) mccollect(mis1, wait=false) g2 <- erdos.renyi.game(60, 1/25) mis2 = mcparallel(mis(g2)) mccollect(list(mis1, mis2), wait=true) Exercice 4 (Parallel foreach) 1. tester la version séquentielle library(foreach) M = matrix(rnorm(n*m), ncol=m) V = matrix(rnorm(10*m), ncol=m) euc.dist4 = foreach(i=1:n,.combine=c) %do% eucd(m[i,]) 2. tester tester la version snow-like library(foreach) library(doparallel) registerdoparallel(cl) euc.dist6 = foreach(i=1:n,.combine=c) %dopar% eucd(m[i,]) 3. tester tester la version multicore-like registerdoparallel(co=2) euc.dist5 = foreach(i=1:n,.combine=c) %dopar% eucd(m[i,])

Exercice 5 (Scheduling) 1. un peu d initialisation... lazy <- function(i){ Sys.sleep(i) cat(sys.getpid()," waited ",i," seconds\n") Sys.getpid() L = list(5,30,5,10,5,10) 2. comparer les 2 versions multicore-like (Linux et Mac OS X) = mclapply(l, lazy, mc.co=2) # pchedule 1 by 1 = mclapply(l, lazy, mc.co=2, mc.pchedule = FALSE) 3. comparer les 2 versions snow-like clustersplit(cl, L) = parlapply(cl, L, lazy) # pchedule by chunks = parlapplylb(cl, L, lazy) # fake, watch the source 4. reprendre avec une vrai function parlapplylb définie sur http://examples.oreilly.com/0636920021421/ snow/loadbalancing.r parlapplylb <- function(cl, x, fun,...) { clustercall(cl, LB.init, fun,...) r <- clusterapplylb(cl, x, LB.worker) clusterevalq(cl, rm(.lb.fun,.lb.args, pos=globalenv())) r LB.init <- function(fun,...) { assign(.lb.fun, fun, pos=globalenv()) assign(.lb.args, list(...), pos=globalenv())

NULL LB.worker <- function(x) { do.call(.lb.fun, c(list(x),.lb.args)) Exercice 6 (Scheduling for real) 1. un peu d initialisation... (notamment tirage aléatoire de graphes) library(igraph) L = lapply(list(50,10,50,25,50,25), function(i){g <- erdos.renyi.game(70, 1/i)) mis <- function(g){ lis = largest.independent.vertex.sets(g)[1] t = cat("graph with ",vcount(g)," vertices : DONE in ",as.numeric(t[3]),"\n") lis 2. comparer les 2 versions multicore-like (Linux et Mac OS X) = mclapply(l, mis, mc.co=2) = mclapply(l, mis, mc.co=2, mc.pchedule = FALSE) 3. comparer les 2 versions snow-like clusterevalq(cl, {library(igraph); NULL) = parlapply(cl, L, mis) # pchedule by chunks clusterevalq(cl, {library(igraph); NULL) = parlapplylb(cl, L, mis) # fake, watch the source 4. éventuellement reprendre depuis le début de l exercice pour tirer de nouveaux graphes

Exercice 7 (clusterexport) Tester la présence et l absence du clusterexport M <- matrix(rnorm(n*m), ncol=m) # M is in GlobalEnv dosleep1 <- function(i) {Sys.sleep(i); M[1,1]=0; # clusterexport(cl, list("m")) = parlapply(cl, list(20,20), dosleep1) Exercice 8 (Serialization et mal de tête) 1. après avoir relancé R, observer la consommation mémoire des processes au fur et à mesure de l execution de la fonction parsleep. Comprendre le contenu des fichiers de sorties output xxx.txt. parsleep <- function(){ M <- matrix(rnorm(n*m), ncol=m) # M is not in GlobalEnv # then clusterexport is impossible M2 <- matrix(rnorm(n*m), ncol=m) dosleep1 <- function(i) { library(pryr) fileconn<-file(paste("output_",sys.getpid(),".txt",sep="")) writelines(paste("memory in dosleep1 :",mem_used()), fileconn) close(fileconn) Sys.sleep(i); # without, M and M2 will be serialized dosleep2 <- function(i) { library(pryr) fileconn<-file(paste("output_",sys.getpid(),".txt",sep="")) writelines(paste("memory in dosleep1 :",mem_used()), fileconn) close(fileconn) Sys.sleep(i); environment(dosleep2) <-.GlobalEnv # without, M and M2 would be serialized dosleep3 <- function(i, M) { # M in parameter library(pryr) fileconn<-file(paste("output_",sys.getpid(),".txt",sep="")) writelines(paste("memory in dosleep1 :",mem_used()), fileconn) close(fileconn) Sys.sleep(i);

M[1,1]=0; environment(dosleep3) <-.GlobalEnv # without, M is serialized but M2 too cat("dosleep1\n") = parlapply(cl, list(20,20), dosleep1) cat("dosleep2\n") = parlapply(cl, list(20,20), dosleep2) cat("dosleep3\n") = parlapply(cl, list(30,30), dosleep3, M) NULL parsleep() 2. reprendre la question précédente (dont la relance de R) en enlevant la/les ligne(s) environment(dosleep... et comparer