2010-11-27 8 views
4

J'ai installé la version R (64 bits) 2.11.1 sous Windows 7 et également les paquetages doSMP et revoIPC de "REvolution foreach Windows bundle" pour le traitement parallèle. J'ai alors téléchargé la bibliothèque doSMP dans R et ai reçu les messages suivants de RTraitement parallèle en R avec le paquet Windows 7 - doSMP

> library(doSMP) 
Loading required package: revoIPC 
Error: package 'revoIPC' is not installed for 'arch=x64' 

Comment contourner ce problème? Il semble que doSMP fonctionne sur une distribution 32 bits de R mais pas sur la distribution 64 bits.

J'ai aussi testé le programme suivant

------------------------------------------------------ 
require(doSMP) 
workers <- startWorkers(4) # My computer has 2 cores 
registerDoSMP(workers) 

# create a function to run in each itteration of the loop 
check <-function(n) { 
for(i in 1:1000) 
{ 
    sme <- matrix(rnorm(100), 10,10) 
    solve(sme) 
} 
} 


times <- 10 # times to run the loop 

# comparing the running time for each loop 
system.time(x <- foreach(j=1:times) %dopar% check(j)) # 2.56 seconds (notice that the first run would be slower, because of R's lazy loading) 
system.time(for(j in 1:times) x <- check(j)) # 4.82 seconds 

# stop workers 
--------------------------------------------------------------------------- 

et moi avons eu les messages suivants de R

> workers <- startWorkers(4) # My computer has 2 cores 
Error: could not find function "startWorkers" 
> registerDoSMP(workers) 
Error: could not find function "registerDoSMP" 

Un grand merci pour votre aide.

Tony

Répondre

1

Le message d'erreur

Loading required package: revoIPC 
Error: package 'revoIPC' is not installed for 'arch=x64' 

est assez explicite: vous exécutez R 64 bits, mais vous n'avez pas tous les sous-composants nécessaires pour charger doSMP, notamment le paquet revoIPC est manquant.

Si vous êtes un client Revo, contactez-les. Si non, alors peut-être vous devez considérer différentes solutions de calcul parallèles pour R.

+0

Merci Dirk. Peut-être que je vais essayer sur la plate-forme Linux avec doMC. Ai-je raison de dire que doSMP fonctionne uniquement pour R sur Windows 32 bits pour le moment? – Tony

+0

Je suis assez satisfait du paquet de neige: http://cran.r-project.org/web/packages/snowfall/index.html –

+0

Je viens de tester un programme parallèle à cpu = 8 en utilisant des chutes de neige, c'est assez rapide . Cheers- Tony – Tony

0

Il y a un bon document .pdf dans le dossier d'installation de Revolution R, sous Start..All Programs..Revolution R..Documentation..foreach and iterators - User's Guide. Le document décrit comment paralléliser une tâche dans R lors de l'exécution de Windows. Voici les sujets qu'il couvre:

Parallelizing Loops 
1.1 Using foreach 
1.2 Parallel Backends 
1.2.1 Using the doMC parallel backend 
1.2.2 Using the doParallel parallel backend 
1.2.3 The doSMP parallel backend 
1.2.4 Getting information about the parallel backend 
1.3 Nesting Calls to foreach 
1.4 Using Iterators 
1.4.1 Some Special Iterators 
1.4.2 Writing Iterators 
1

Cela a été corrigé depuis longtemps, et fonctionne très bien dans la dernière version de la Révolution R v6.1 64 bits.

L'exemple ci-dessous provient de Parallel Multicore Processing with R (on Windows) et fonctionne bien sur ma machine qui exécute Revolution R v6.1 x64 sous Windows 7 x64.

require(doSMP) 
workers <- startWorkers(2) # My computer has 2 cores 
registerDoSMP(workers) 

# create a function to run in each itteration of the loop 
check <-function(n) { 
    for(i in 1:1000) 
    { 
     sme <- matrix(rnorm(100), 10,10) 
     solve(sme) 
    } 
} 


times <- 10 # times to run the loop 

# comparing the running time for each loop 
system.time(x <- foreach(j=1:times) %dopar% check(j)) # 2.56 seconds (notice that the first run would be slower, because of R's lazy loading) 
system.time(for(j in 1:times) x <- check(j)) # 4.82 seconds 

# stop workers 
stopWorkers(workers) 

Notez que le paquet doSMP est construit dans la construction de base de la révolution R, de sorte que vous ne devez pas l'installer de Cran (pour cette raison, vous ne trouverez pas sur la liste des paquets). Tout ce que vous avez à faire est de le charger avec require(SMP). Sur une note similaire, le paquet parallel est également intégré dans toutes les versions de R à partir de v2.14.0, chargez-le avec require(parallel).

Pour des remarques plus importantes sur cet exemple, voir l'article complet Parallel Multicore Processing with R (on Windows).

Questions connexes