Bonjour, depuis peu je me suis mis à reprendre mes codes classiques pour tous les paralléliser sur le serveur de ma boîte.
En gros ce que font mes programmes c'est pour chaque itération i, remplir à la ligne i des colonnes contenant des informations comme le nom des variables en cours, la taille de population, les résultats pour différentes méthodes d'analyse multivariée.
Finalement mon code se résume en une boucle for que j'ai transformé en foreach pour accéder au mode parallélisé (je suis bien sous Revolution R).
Mais voilà, j'ai un souci pour remplir ma fameuse matrice de résultat, en fin de programme j'ai que des 0 (soit l'état originel de ma matrice) et j'ai téléchargé le manuel ParallelR Lite User's Guide version 3.2 et j'ai l'impression que sous parallélisation il faut reconsidérer totalement cette approche, ce qui m'étonne un peu étant donné que je trouvais naturel que pour une table de données vide à n lignes quand i varie entre 1 et n et bien les résultats calculés à l'étape i étaient insérés à la ligne i du tableau. Et puis je suis persuadé que les developpeurs ont mis en place le parallélisme sous R en se doutant bien qu'une majeure partie de programme se base sur ce type de squelette.
Un exemple simplifié et totalement représentatif de la structure de mes programmes:
En vous remerciant d'avance pour votre intérêt à mon problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 library(foreach) library(doMC) registerDoMC(8) Resultat = matrix(0,nbCombi,5) foreach(i = nbCombi, .combine = c) %dopar% { Resultat[i,1] = "variables" Resultat[i,2] = population Resultat[i,3] = Reg_log Resultat[i,4] = Analyse_discrim Resultat[i,5] = SVM }
Partager