4 votes

Parallélisme entre processeurs uniques (mémoire partagée) et processeurs multiples dans R

J'ai beaucoup utilisé mclapply et je l'adore. Il est gourmand en mémoire mais très pratique. Hélas, j'ai maintenant un problème différent qui n'est pas simplement embarrassant pour le parallèle.

R (en particulier Unix R) peut-il utiliser plusieurs cœurs de processeur sur un seul ordinateur, en partageant le même espace mémoire, sans avoir à copier des processus complets du système d'exploitation, de sorte que

  1. les frais généraux de processus sont minimes

  2. modification des données globales par un CPU sont immédiatement disponibles pour les autres CPU ?

Si oui, est-ce que R peut verrouiller une partie de la mémoire comme les fichiers (flock) ?

Je soupçonne que la réponse est non et il serait très utile de le savoir de manière définitive. Si la réponse est oui, veuillez m'indiquer la bonne voie.

regards,

/iaw

1voto

Carlos Santillan Points 912

Avez-vous jeté un œil à R Open de Microsoft (disponible pour Linux), avec la Math Kernel Library (MKL) personnalisée. J'ai constaté de très bonnes améliorations des performances sans réécrire le code.

https://mran.microsoft.com/documents/rro/multithread

1voto

Ralf Stubner Points 14930

Vous pouvez utiliser le Rdsm pour utiliser distribué le parallélisme de la mémoire partagée, c'est-à-dire plusieurs processus R utilisant le même espace mémoire.

En outre, vous pouvez utiliser des BLAS/LAPACK multithreadés (par exemple OpenBLAS ou Intel MKL) et vous pouvez utiliser du code C/C++ (et probablement Fortran) avec OpenMP. Voir assemblage d'une matrice à partir de tranches diagonales avec mclapply ou %dopar%, comme Matrix::bandSparse pour un exemple.

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