vendredi 29 juillet 2011

Être plus nombreux permet-il d'aller plus vite ?

Comment un projet prend-il un an de retard ? ... Un jour à la fois. (Frederick Phillips Brooks, Jr.)
Dans de nombreux projets, le travail nécessaire pour accomplir une tâche est estimé en hommes-heures, ou dans une unité similaire. Cela laisse supposer que le même travail peut être réalisé plus rapidement en augmentant le nombre de collaborateurs affectés à ce travail. Mais cette logique ne fonctionne.pas toujours. On peut s'en convaincre par divers arguments, mais il me paraît intéressant d'aborder la question par une transposition de connaissances provenant de l'informatique, et plus spécifiquement du calcul parallèle.

Parallelisation et efficacité

Le principe du calcul parallèle consiste en l'utilisation de plusieurs processeurs pour réaliser une tâche de calcul donnée. L'intérêt est évidemment de réaliser cette tâche plus vite, ce qui est particulièrement critique en calcul scientifique lorque le problème à résoudre nécessite de déterminer la valeur d'un nombre gigantesque de variables.
En effet, un problème physique se traduit souvent par la recherche d'au moins une fonction mathématique f(x,y,z) définie sur un domaine spatial à trois dimensions. Mais il est rarement possible de trouver une expression exacte de la solution, et on cherche souvent une approximation de cette fonction sous la forme d'une interpolation : en gros, on cherche la valeur de la fonction en certains points, et la valeur de la fonction en d'autres points est évaluée par une sorte de moyenne des valeurs des points les plus proches.
Or le nombre de points nécessaires augmente vite si vous avez besoin d'une solution précise : si le domaine de calcul est un cube d'un mètre cube, vous aurez besoin de 10^3=1 000 points pour avoir des valeurs tous les décimètres, 100^3=1 000 000 points (un million) si vous en voulez tous les centimètres et un milliard s'il vous faut des valeurs tous les millimètres. Je vous laisse imaginer les besoins informatiques lorsqu'il faut calculer beaucoup de fonctions de ce type, voire quand il faut travailler avec plus de trois dimensions (l'équation de Boltzmann des gaz raréfiés en comporte sept !). Autant dire que les calculs peuvent être extrêmement longs.
C'est pourquoi les scientifiques ayant ce genre de calculs à réaliser ont développé des solutions pour accélérer les calculs, et notamment des solutions de calcul parallèle. Le calcul parallèle, sur le papier, c'est une solution évidente : plus vous pouvez affecter d'ordinateurs sur un même calcul, plus vous devriez aller vite. Idéalement, si vous utilisez 100 ordinateurs, vous pouvez espérer une accélération du calcul de 100 fois. Un calcul pouvant nécessiter un an sur un seul ordinateur est ramené alors à moins de quatre jours.
Mais dans la pratique, les spécialistes du calcul à haute performance (HPC pour High Performance Computation) se sont vite rendus compte que ce n'était pas si simple.La loi d'Amdahl exprime une limite à cette accélération infinie.
Que dit cette loi ? Tout simplement que, dans la mesure où il existe toujours des sous-tâches non traitables en parallèle, non fractionnables, il y a toujours besoin du temps nécessaire pour réaliser ces sous-tâches. Ne seraient-ce que les opérations consistant à envoyer les instructions à réaliser à chaque processeur.
Par exemple, si vous avez 10% de telles tâches non fractionnables, l'accélération attendue avec deux processeurs est de 1,8, avec dix processeurs de 5,3, avec cent processeurs de 9,2 et avec mille processeurs de 9,9. Autrement dit, inutile d'espérer mieux qu'une accélération supérieure à dix ici, et l'utilisation de plus d'une dizaine de processeurs n'est pas très utile.
Notons toutefois que moins il y a d'opérations non fractionnables, plus la parallélisation est intéressante.
Enfin, une autre manière d'envisager la parallelisation existe. Si, au lieu de considérer la résolution d'un problème donné et de chercher à le faire le plus rapidement possible, vous supposez que vous disposez d'une durée donnée (le temps d'un projet, par exemple) et que vous chercher à réaliser le calcul le plus précis ou complexe possible, les choses changent. En effet, souvent le temps à consacrer aux opérations non fractionnables n'augmente que lentement avec la taille du problème à traiter, et leur part diminue alors lorque la taille du problème augmente.
Reprenons l'exemple précédent, et supposons que le calcul sur un processeur dure dix heures, dont une consacrée à des opérations non fractionnables, indépendamment de la taille du problème. Avec deux processeurs, on peut doubler le nombres d'opérations des neuf heures fractionnables, soit une augmentation de charge de 1,9 ; avec dix processeurs, on arrive à 9,1, pour cent processeurs à 90,1 et pour mille processeurs à 900,1. Il est donc plus intéressant de paralléliser massivement dans cette optique-là.

Analogie avec la gestion de projets 

Transposons les observations précédentes à la gestion d'un projet et de ses ressources humaines.
La loi d'Amdahl se traduit par le fait que, comme le savent bien les chefs de projet expérimentés, lorsqu'une tâche a pris du retard, le rattrapage du temps perdu en affectant des ressources humaines supplémentaires à cette tâche est inefficace : il faut affecter plus de ressources humaines que ne le laisse penser le nombre d'hommes-heures restant, et parfois le respect du timing prévu est impossible. Voilà pourquoi tant de projets qui prennent du retard ne le rattrapent jamais.
Autre leçon de la loi d'Amdahl : pour réduire le temps nécessaire à la réalisation d'une tâche, il est possible d'augmenter le nombre de collaborateurs qui y sont affectés, mais ce ne sera efficace que si la part des opérations non fractionnables est réduite. Or le temps consacré au management est souvent essentiellement non fractionnable : explications à donner à l'équipe, contrôle des opérations...
Cela signifie que la clé de la réduction des délais par l'apport de collaborateurs est l'efficacité du management. Celui-ci est d'autant plus efficace que les collaborateurs sont formés et autonomes. Ainsi, les entreprises faisant face à des problématiques d'intervention très rapide auront intérêt à former leurs employés et â les rendre autonomes afin que les équipes constituées pour l'occasion, qu'on appelle parfois des task forces, soient véritablement efficaces. Mais quoi qu'il en soit, une task force ne peut pas multiplier indéfiniment la vitesse d'intervention, et il n'est probablement jamais utile de multiplier par 10 ou plus les effectifs consacrés ordinairement à une tâche.
Par contre, il est pertinent de multiplier les effectifs pour réaliser des projets très ambitieux. Pour peu que le surcoût économique dû aux tâches non fractionnables comme le management soit plus que compensé par des économies d'échelle, on comprend qu'une grande entreprise soit capable de faire travailler un grand nombre d'employés sur des projets ambitieux, mais qu'elle ne sera pas forcément plus performante qu'une PME pour de plus petits projets.

Parallélisme et médiation technique 

Une mission de médiation technique est sensiblement constituée de tâches non fractionnables : la définition du besoin se fractionne difficilement, la créativité s'assimile a une task force mais ne requiert pas forcément plus qu'un médiateur et deux ou trois employés de l'entreprise cliente, la recherche peut se paralléliser si le nombre d'entreprises à sonder est important, la négociation aussi mais c'est plus délicat, enfin les tâches d'élicitation, de modélisation et de formalisation des connaissances s'y prêtent assez peu car l'entreprise sélectionnée ne peut généralement pas mettre un nombre élevé d'experts à disposition.
Par conséquent, il n'est pas pertinent de mettre plusieurs médiateurs techniques sur la même mission dans la plupart des cas. Rien n'empêche, toutefois, de faire intervenir plusieurs médiateurs techniques uniquement pour la prospection. Mais cela ne se justifie que pour des missions particulièrement ouvertes et très exploratoires.