2013-08-27 12 views
5

Ich versuche, eine Reihe von CSV-Dateien zu verarbeiten und geben Datenrahmen in R, parallel mit mclapply() zurück. Ich habe eine 64-Kern-Maschine, und ich kann nicht mehr scheinen, dass 1 Kern im Moment unter Verwendung mclapply() verwendet wird. In der Tat ist es ein bisschen schneller lapply() statt mclapply() im Moment zu laufen. Hier ist ein Beispiel, das zeigt, dass mclapply() nicht mehr die Kerne zur Verfügung Verwendung:mclapply nicht mehrere Kerne verwenden

library(parallel) 

test <- lapply(1:100,function(x) rnorm(10000)) 
system.time(x <- lapply(test,function(x) loess.smooth(x,x))) 
system.time(x <- mclapply(test,function(x) loess.smooth(x,x), mc.cores=32)) 

user system elapsed 
    0.000 0.000 7.234 
user system elapsed 
    0.000 0.000 8.612 

Gibt es einen Trick, um diese Funktion zu bekommen? Ich musste R von der Quelle auf dieser Maschine kompilieren (v3.0.1), gibt es einige Kompilierungsflaggen, die ich vermisste, um Gabeln zu erlauben? detectCores() sagt mir, dass ich tatsächlich 64 Kerne habe, um mit zu spielen ... Irgendwelche Tipps geschätzt!

+2

Welches Betriebssystem verwenden Sie? Es scheint für Ihren Fall nicht relevant zu sein, aber es ist bemerkenswert, dass 'mclapply' unter Windows nur ein Wrapper für' lapply' ist. – Frank

+0

Linux. Redhat um genau zu sein. – reptilicus

+1

Wenn jemand bestätigen kann, dass das obige Beispiel tatsächlich mit mclapply() beschleunigt, würde das auch helfen. – reptilicus

Antwort

6

Ich bekomme ähnliche Ergebnisse, aber wenn ich rnorm(10000) zu rnorm(100000) ändern, bekomme ich erhebliche Geschwindigkeit. Ich würde vermuten, dass der zusätzliche Overhead den Leistungsvorteil für solch ein kleines Problem beseitigt.

Verwandte Themen