day 27 : ProActivisation laborieuse
Par darksword le vendredi, avril 1 2005, 20:49 - stage maitrise - Lien permanent
La première étape consistant à utiliser simplement ProActive d'une façon plus ou moins similaire à celle utilisé dans l'exemple des n-reines s'est achevé en demi-teinte.
%
Certes mon appli tourne sur deux machines. Certes on obtient un gain en utilisant deux machines au lieu d'une (33% de gain pour l'instant). Mais qu'est-ce-que c'est redevenu lent.
Mon exemple canonique (comme dirait M. Marquis ^^) qui, après maintes optimisation, mettait en peu moins de quatre minute sur une machine (en utilisant un processeur), en mets désormais plus de 15(j'ai du partir avant la fin) sur deux machines en utilisant deux processeurs.
Il y a bien sur differents points à modifier:
- Le fait de communiquer la meilleure solution une fois la tache accomplie est une mauvaise méthode. Les autres noeuds en cours (et ceux crée avant que le noeud actuel se termine) vont parcourir un nombre plus ou moins important de noeuds non-utile.
- Je met à jour la liste du cout maximum pour toutes les tâches à venir à chaque fois qu'une solution est trouvée, il est plus intelligent de mettre à jour la tache juste avant de l'affecter.
Et d'autres à tester :
- Il faut également que je vérifie mon algorithme de resolution. Il est possible qu'il y ait une couille dans le paté.
- Il faut absolument que je calcule le cout de la création d'un worker. Peut-être vaut-il mieux ne pas créer plein de workers, mais plutôt de leur transmettre au fur et à mesure des nouveaux problèmes à résoudre.
Ce qui m'inquiete le plus, c'est que la topologie du cluster (4 machines très puissante) risque de masquer l'interêt de l'utilisation de celui-ci. Le gain entrainé par l'utilisation de plusieurs machines risquant en effet d'être masqué, au moins en partie, par le cout engendré par cette distribution (utilisation du réseau, de code objet).
Si le surcout crée par la création de worker sur les machines était trop important, il est toujours possible d'augmenter la durée de la tâche. Bref c'est loin d'être fini, mais au moins je peux montrer quelque chose qui fonctionne de manière distribuée :)
Commentaires