2013-08-13 2 views
3

Je tente d'accélérer une fonction lente auto.arima en l'exécutant sur un ordinateur avec 4 processeurs dual-core (j'utilise Ubuntu 13.04 et R 2.15.2). La fonction adapte une série temporelle avec 350 000 points de données et environ 50 variables exogènes. J'utilise le code ci-dessousauto.arima non paralléliser

fit<-auto.arima(orders,xreg=exogen, stepwise=FALSE, parallel=TRUE, num.cores=4) 

Cependant, je dispose de plusieurs processeurs (chacun avec plusieurs cœurs), pas seulement un CPU avec plusieurs cœurs. Dans le cas où R a été assez intelligent pour contourner cette différenciation des noyaux/processeurs, je pris un coup d'œil à mon moniteur de ressources et vu ceci:

enter image description here

qui montre que seulement CPU3 est maximisé.

Des idées sur la façon de résoudre? Est-ce que le package forecast fonctionne avec DoSNOW?

+0

Quel paquet utilisez-vous? Très probablement, il y a un problème avec votre environnement parallèle, car la plupart des implémentations parallèles exécutent le code sur un noyau si quelque chose ne fonctionne pas, par exemple. mclapply passer à lapply. Pour contourner ce problème, vous pouvez essayer (en utilisant le paquetage 'parallel') ' mclapply (ordre, auto.arima, xreg = exogen, pas à pas = FALSE, parallel = FALSE, mc.cores = 2) ' – holzben

Répondre

1

Essayez num.cores=8 et num.cores=7, utilisez system.time() pour voir lequel fonctionne le plus rapidement. Si je me souviens bien, R traite 1 core comme un processeur. Vous avez 8 cœurs, si je vous ai bien compris: "4 processeurs dual-core".