R fait-il du parallèle automatiquement ?

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

R fait-il du parallèle automatiquement ?

Messagepar Stéphane Laurent » 04 Sep 2015, 11:45

Bonjour,
J'ai remarqué que mes 4 CPU tournent quand je lance un prog avec R-3.2.2 alors que je n'ai rien programmé en parallèle. Il le fait automatiquement ? Depuis quelle version ?

Dominique Soudant
Messages : 758
Enregistré le : 23 Avr 2008, 11:12
Contact :

Re: R fait-il du parallèle automatiquement ?

Messagepar Dominique Soudant » 04 Sep 2015, 15:45

Peut être est-ce une fonction particulière d'un package particulier. Si tu te fais une variable numérique assortie d'une variable catégorielle et que tu calcule les moyennes de la première en fonction des catégories définies par la seconde est-ce que tes 4 proc tournent ?
@+
EDIT : je suis en 3.2.0 moi ... et pourtant branché sur le site du CRAN IRSN (ubuntu precise).

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Re: R fait-il du parallèle automatiquement ?

Messagepar Stéphane Laurent » 05 Sep 2015, 09:36

Non non je fais une simple boucle avec des dnorm(), rien de plus spécial.
Je viens de voir ça mais à ce que je sache c'est pas Revolution R-3.2.2 Open que j'ai installé : http://blog.revolutionanalytics.com/2015/09/revolution-r-open-322-now-available.html

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Re: R fait-il du parallèle automatiquement ?

Messagepar Stéphane Laurent » 05 Sep 2015, 09:45

Je viens d'essayer une boucle plus élémentaire mais un seul CPU est utilisé. C'est peut-être parce qu'il y a des matrices dans mon autre code. J'essaierai plus sérieusement d'identifier ce qui déclenche les 4 CPU un autre jour.

Sawadogo amadou
Messages : 6
Enregistré le : 04 Sep 2015, 14:27

Re: R fait-il du parallèle automatiquement ?

Messagepar Sawadogo amadou » 06 Sep 2015, 16:13

Bonjour,

J'aimerais avant tout savoir comment vous savez que vos 4 CPU tournent en même temps ?
Un test?

En ce que je sache, je dirai que R ne fait pas du parallèle automatiquement. Pour faire du parallèle, il y'a des packages notamment les packages parallel , foreach, doMC ...qiui permettent de le faire.

Amadou

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: R fait-il du parallèle automatiquement ?

Messagepar Logez Maxime » 07 Sep 2015, 10:12

Bonjour,

effectivement R ne fait pas de calculs parallèles automatiquement. Si c'est le cas c'est que tu as utilisé une fonction qui utilise la parallélisation, soit tu es sur R Revolution et tu fais du calcul matriciel. Le dnorm ne génère pas de calcul parallèle, quelque soit la version de R utilisé.

Cordialement,
Maxime

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Re: R fait-il du parallèle automatiquement ?

Messagepar Pierre Bady » 07 Sep 2015, 11:29

Bonjour,

ça peut dépendre des librairies BLAS et LAPACK utilisées. Il me semble que Revolution utilise les versions/implémentations/remaniements proposées par Intel (MKL, https://software.intel.com/en-us/intel-mkl). Un certain nombre d'operations/functions sont implicitement multithreadées.
On observe quelques choses de similaires si on utilise OpenBLAS (http://www.openblas.net/) à la place de BLAS (version classique).

HTH

pierre


pour info:
BLAS: https://fr.wikipedia.org/wiki/Basic_Lin ... ubprograms
LAPACK: https://fr.wikipedia.org/wiki/Linear_Algebra_Package
=@===--------¬-------¬------¬-----¬
liens utiles :
http://www.gnurou.org/Writing/SmartQuestionsFr
http://neogrifter.free.fr/welcomeOnInternet.jpg
]<((((*< -------------------------------

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Re: R fait-il du parallèle automatiquement ?

Messagepar Stéphane Laurent » 07 Sep 2015, 13:07

J'ai R-3.2.2 pour Ubuntu 14.04.

Prenez ma fonction Jeffreys() ici : http://stats.stackexchange.com/a/171336/8402.
En fait il se passe même un truc intéressant que je viens de voir.

Si je fais

Code : Tout sélectionner

n <- 40
y <- rnorm(n)
results <- Jeffreys(y, L=100)

j'observe 2 CPU qui tournent à 100% dans mon moniteur système (augmentez L si vous voulez que ça tourne plus longtemps).

Si je fais

Code : Tout sélectionner

f <- function(x) 4+2*x
n <- 20
x <- seq_len(n); y <- f(x)+rnorm(n)
results <- Jeffreys(y, X=model.matrix(~x), L=30)

j'observe 3 CPU qui tournent à 100%.

Intéressant car le premier code génère des "simulations" de deux paramètres, et le deuxième code, trois paramètres.
En plus j'ai remarqué que les CPU à 100% naviguent... ce ne sont pas toujours les trois mêmes.

Dominique Soudant
Messages : 758
Enregistré le : 23 Avr 2008, 11:12
Contact :

Re: R fait-il du parallèle automatiquement ?

Messagepar Dominique Soudant » 07 Sep 2015, 14:25

R 3.2.0 sur xubuntu 12.04, avec tes 2 codes, un seul proc qui tourne à 100%, les autres font mine de regarder ailleurs ...
@+

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: R fait-il du parallèle automatiquement ?

Messagepar Logez Maxime » 08 Sep 2015, 08:53

Pareil sous Windows ...
Ca doit donc dépendre des librairies dont tu disposes pour tes opérations matricielles qui peuvent être parallélisées même avec un code R "normal" (ce qui est le gros avantage de R Révolution).

Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité