Im help für detectCores()
heißt es:Ob die Funktion detectCores in R verwendet werden soll, um die Anzahl der Kerne für die parallele Verarbeitung anzugeben?
Diese für Gebrauch nicht geeignet ist direkt für die mc.cores Argument von mclapply noch die Anzahl der Kerne in makeCluster angeben. Zuerst , weil es NA zurückgeben kann, und zweitens, weil es die Anzahl der zulässigen Kerne nicht gibt.
Allerdings habe ich ziemlich viel Beispielcode wie folgt gesehen:
library(parallel)
k <- 1000
m <- lapply(1:7, function(X) matrix(rnorm(k^2), nrow=k))
cl <- makeCluster(detectCores() - 1, type = "FORK")
test <- parLapply(cl, m, solve)
stopCluster(cl)
wo detectCores()
verwendet wird, die Anzahl der Kerne in makeCluster
angeben.
Meine Anwendungsfälle beinhalten die parallele Verarbeitung sowohl auf meinem eigenen Multicore-Laptop (OSX) als auch auf verschiedenen Multicore-Servern (Linux). Ich war mir also nicht sicher, ob es eine bessere Möglichkeit gibt, die Anzahl der Kerne anzugeben, oder ob der Ratschlag, keine detectCores
zu verwenden, eher für Paketentwickler gedacht war, deren Code über einen weiten Bereich von Hardware- und Betriebssystemumgebungen laufen sollte.
Also zusammenfassend:
- Sollten Sie verwenden, um die
detectCores
Funktion in R die Anzahl der Kerne für die parallele Verarbeitung zu spezifizieren? - Wie groß ist der Unterschied zwischen erkannten und erlaubten Kernen und wann ist dieser relevant?
auf welcher plattform bist du? 'system ('getconf _NPROCESSORS_ONLN')' – rawr
Sowohl OSX als auch Linux; Ich habe meine Frage aktualisiert, um dies zu sagen; obwohl ich glaube, dass ich an der allgemeinen Antwort interessiert bin, um das für andere nützlich zu machen. –