69 votes

R avec un processeur multi-core

J'ai remarqué que R n'utilise qu'un seul core lors de l'exécution d'un de mes programmes qui nécessite beaucoup d'un calcul. Je voudrais profiter de mon processeur multi-core pour faire mon programme courir plus vite. En fait je n'ai pas encore étudier la question en profondeur, mais j'aimerais bénéficier de vos commentaires car je n'ai pas de bonnes connaissances en informatique et c'est difficile pour moi d'obtenir des informations faciles à comprendre sur le sujet. Je me demande si un package existe donc que R utilise automatiquement plusieurs cœurs en cas de besoin. Je suppose qu'il n'est pas si simple...

Tout commentaire sera apprécié

Mieux, Marco

52voto

Gavin Simpson Points 72349

R ne peut faire usage de plusieurs cœurs avec l'aide de paquets add-on, et seulement pour certains types d'opérations. Les options sont discutées en détail sur le Calcul de Haute Performance de la Tâche de Vue sur CRAN

Mise à jour: à Partir de Version R 2.14.0 ajouter les packages ne sont pas nécessairement requis en raison de l'inclusion de la parallèle paquet recommandé, colis expédié avec R. parallèle inclut des fonctionnalités de la multicœur et la neige paquets, en grande partie inchangée.

34voto

JD Long Points 20477

La façon la plus simple pour profiter des multiprocesseurs est l' multicore package qui inclut la fonction mclapply(). mclapply() est un multicœur version de lapply(). Ainsi, tout processus qui peut utiliser lapply() peut être facilement converti en une mclapply() processus. Cependant, multicœur ne fonctionne pas sur Windows. J'ai écrit un billet de blog à propos de cette dernière année, ce qui peut être utile. Le package de Revolution Analytics créé, doSMP, n'est PAS une version multi-thread de R. C'est effectivement une version de Windows multicœur.

Si votre travail est parallèle gênant, c'est une bonne idée pour obtenir à l'aise avec la lapply() type de structuration. Qui vous donnera facile d'enchaîner sur mclapply() et même de l'informatique distribuée à l'aide de la même abstraction.

Les choses deviennent beaucoup plus difficiles pour les opérations qui ne sont pas "parallèle gênant".

[MODIFIER]

Comme une note de côté, Rstudio est de plus en plus populaire comme un front-end pour R. j'aime Rstudio et de l'utiliser tous les jours. Toutefois, il convient de noter que Rstudio ne pas jouer gentil avec Multicœur (au moins à partir d'octobre 2011... je comprends que le RStudio équipe va résoudre ce problème). C'est parce que Rstudio fait un fork de derrière les scènes et ces fourches conflit avec Multicœur tentatives de la fourche à la fourchette. Donc, si vous avez besoin d'Multicœur, vous pouvez écrire votre code dans Rstuido, mais de l'exécuter dans une plaine Jane R session.

15voto

Joris Meys Points 38980

Sur cette question, vous obtenez toujours très courtes réponses. La solution la plus simple selon moi est le package des chutes de neige, basé sur la neige. C'est, sur un seul ordinateur Windows avec plusieurs cœurs. Voir aussi l' article de Knaus et al pour un exemple simple. La neige est un wrapper autour de la neige paquet, et vous permet de configurer un multicœur avec quelques commandes. C'est certainement moins de tracas que la plupart des autres paquets (je n'ai pas tous les essayer).

Sur une note, il y a en effet que peu de tâches qui peuvent être mises en parallèle, pour la raison très simple que vous devez être en mesure de répartir les tâches à accomplir avant multicœur calcul du sens. l' apply famille est évidemment un choix logique pour ce : multiples et indépendants de calculs, ce qui est crucial pour le multicœur utilisation. Rien d'autre n'est pas toujours facilement multicored.

Lire aussi cette discussion sur sfApply et des fonctions personnalisées.

4voto

Manoel Galdino Points 713

Comme David Heffernan dit, prendre un coup d'oeil sur le Blog de la révolution de l'analyse. Mais vous devez savoir que la plupart des paquets sont pour Linux. Donc, si vous utilisez windows, il sera beaucoup plus difficile. De toute façon, jetez un oeil à ces sites:

De la révolution. Ici, vous trouverez une conférence sur parallerization dans R. La conférence est effectivement très bon, mais, comme je l'ai dit, la plupart des conseils sont pour Linux.

Et ce fil ici à Stackoverflow sera disscuss certains de la mise en œuvre dans Windows.

2voto

Eric Points 21

Je connais bien R, et je lis actuellement le sujet à partir de différentes sources. Je suis tombé sur l'article suivant qui parlait de la sous-utilisation d'un processeur multi-core dans nos ordinateurs. J'ai fourni le code et le lien ci-dessous, désolé, je n'ai pas l'expérience nécessaire pour expliquer les détails. Regardez les lignes 347 à 370. https://gist.github.com/bobthecat/3361094

J'espère que cela aide un peu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X