Parallel Processing vs Parallel Thinking

Ce billet est du genre rugueux. Il est l'oeuvre d'un dinosaure de l'informatique qui se prend pour un philosophe. D'où une logique de présentation partant des machines informatiques avant de traiter des capacités humaines, et enfin nous replacer dans le grand mystère de la Nature.

Les paragraphes 1 et 2 peuvent être lus comme des commentaires du billet précédent. Ils traitent des techniques informatiques du parallélisme et de leurs limites, telles que chacun peut les observer en informatique domestique sur PC.

1/ Observation et mathématique pratique contre fausses théories et fictions publicitaires

Dans l'article référencé par le billet précédent, l'algorithme de recherche des diviseurs entiers d'un nombre entier N est à considérer comme un instrument d'observation, et sa simplicité est un atout - disons de qualité pour faire court, notamment pour comparer les performances de divers langages de programmation. L'algorithme parcourt tous les entiers inférieurs à N en tant que candidats diviseurs. La seule "finesse" consiste à limiter a priori le champ de recherche au segment 1,racine de N, compte tenu que les diviseurs au-delà sont obtenus en résultats des divisions de N par les diviseurs trouvés dans le segment. La seule "optimisation" consiste à sauter les candidats pairs lorsque le nombre N est impair.

Hypero.jpg

Le résultat principal des tests est que les points de mesures du temps d'exécution pour N donné en fonction du nombre de coeurs... sont alignés sur une hyperbole, quasi parfaitement. Le modèle hyperbolique donne la limite optimiste du gain relatif en puissance de calcul par augmentation du niveau de parallélisme, c'est à dire concrètement par l'augmentation du nombre des coeurs de cpus assignés à l'algorithme de recherche. Le modèle hyperbolique est juste un peu optimiste. En effet, avec l'augmentation du nombre de coeurs assignés, on constate un léger écart défavorable ponctuel autour du dépassement des 50 % de coeurs assignés - hypothèse : l'automate interne au système d'exploitation qui réalloue périodiquement les processus actifs entre les coeurs de cpu peine à s'adapter au contexte d'assignation intégrale de coeurs de cpu et finit par "lâcher prise" au-delà d'un niveau critique d'assignations ? Aucune formule pseudo mathématique ne pourra en rendre compte !

Pas d'accord avec le résumé affirmant que la loi d'Amdahl est confirmée. Par rapport à ce que montre l'hyperbole, la pseudo "loi" d'Amdahl telle qu'elle est formulée prétentieusement dans certains articles ne peut concerner qu'un phénomène de troisième ordre. Ou alors, c'est l'hyperbole qui doit remplacer la fameuse loi, et elle est valable à partir de 2 coeurs !

Le modèle hyperbolique représente le temps d'exécution d'un vrai programme en fonction du niveau de parallélisme mis en oeuvre. Il montre que, dans la résolution d'un problème réel, une machine à 20 coeurs n'est pas, ne peut être, 2 fois "plus puissante" qu'une machine à 10 coeurs à configuration égale par ailleurs - sauf en termes d'énergie électrique absorbée au cours d'un test de laboratoire inepte qui chargerait chaque coeur par une boucle infinie.

DicoN.jpg

Une remarque dans le texte mérite un approfondissement. Cette remarque affirme, en gros, que toute complexification du logiciel ne peut qu'augmenter son temps d'exécution. C'est a priori contestable. En effet, la programmation de l'"optimisation" de la recherche pour N impair est bien une complexification, et elle s'avère pourtant favorable. Pourrait-on généraliser cette optimisation : si N n'est PAS divisible par P premier, alors il est inutile de tester les candidats qui sont divisibles par P ! Cette généralisation a été faite, en se limitant aux petits nombres premiers, car au-delà le gain marginal potentiel diminue et l'adaptation de la boucle de recherche devient difficile si on veut obtenir le gain espéré. Cependant, à l'évidence, ce genre d'optimisation ne fait que creuser l'écart des temps d'exécution entre de "bonnes" valeurs de N et les "mauvaises" : où est l'intérêt dans une étude du parallélisme ? Si l'objectif était de déterminer le plus rapidement possible les diviseurs de très grands nombres N, il faudrait explorer d'autres voies.

Notons, en passant, que la programmation des méthodes des manuels d'arithmétique pour tester la divisibilité de N par P premier à partir des chiffres de N s'avère à la fois lourde et inefficace en comparaison des instructions modulo - encore un choc entre théorie et pratique.

Donc, oui, on pourrait.... autrement et pour d'autres objectifs.

2/ Evolution du parallélisme domestique sur PC

L'article référencé par le billet précédent suscite des doutes sur l'utilisation effective du parallélisme entre coeurs de cpu par les logiciels dans les PCs.

Pourtant, un observateur du fonctionnement courant de son PC pourra constater, avec un logiciel d'affichage graphique des charges des cpus : - la possibilité de faire exécuter en parallèle divers logiciels, par exemple navigateur Internet, édition et impression de documents, calculs domestiques, visualisation d'images et de vidéos, etc. - la faible charge de chaque coeur de cpu en moyenne dans la durée et une quasi égalisation de la charge des coeurs, à part quelques pics momentanés, à part un plateau de charge spécifiquement provoqué par une application exigeante (par exemple dans le cas d'un décodage lourd d'une vidéo)

Précision importante. Les graphiques de charge par coeur de cpu affichés dans les logiciels courants de "monitoring" sont fortement lissés. C'est-à-dire qu'ils montrent des charges très moyennées dans le temps. A juste titre. En effet, une observation brute serait inexploitable : typiquement, une succession de pics de charge d'intensités variables.

Alors, les tests de l'article de référence seraient-ils des aberrations sans intérêt pratique, et les conclusions de l'article seraient-elles complètement lunaires ?

La réponse est certainement celle d'une faible pertinence pour les utilisateurs de bureautique et Internet munis d'un PC pas trop ancien. Le système d'exploitation leur fait croire que les tâches s'exécutent en parallèle, alors qu'en réalité ce système se débrouille pour allouer successivement quelques milli ou microsecondes à chaque processus en cours ("multitasking"), comme c'était déjà le cas au temps des cpus à coeur unique dans les années 90. En plus, dans le cas des cpus à coeurs multiples, le système en profite pour changer régulièrement la distribution des tâches entre les coeurs - cet automatisme de "load balancing" date des premiers cpus à coeurs multiples, il était destiné à éviter les surchauffes de coeurs... et il est redevenu indispensable, en gros pour les mêmes raisons, aux passages en mode suralimenté "turbo" des cpus récents.

Le jugement des questions posées par l'article de référence sera probablement plus nuancé chez les utilisateurs de calculs intensifs et les joueurs, surtout s'ils ont investi dans des configurations récentes. Dans le secret de leur solitude, ces utilisateurs peinent à s'enthousiasmer des dernières montées en version de leur matériel, de leur système d'exploitation, de leurs logiciels. C'est que, globalement, la stagnation des fréquences de base des cpus des nouvelles générations, les évolutions décoratives des logiciels, le surgonflement du système d'exploitation, les quasi obligations d'abonnements aux services de plates formes... font que l'appréciation objective des progrès est rarement à la hauteur des espérances, sauf sur quelques aspects ponctuels et après encore plus d'investissements et de dépenses.

La principale cause du piétinement de l'informatique sur PC est que la programmation des logiciels demeure une industrie lourde. Et subsidiairement depuis quelques années, il s'y ajoute que les compétences sont détournées ailleurs.

Prenons l'exemple des simulations de vol. Un début de parallélisme n'y a été introduit qu'à partir des années 2020-2025, bien après l'apparition des processeurs à coeurs multiples. Ces simulations étaient jusqu'alors programmées entièrement en monoprocesseur : c'est bien pour cela que ces simulations exigeaient un niveau minimal élevé de fréquence du cpu plutôt que des coeurs multiples... Une reconception progressive de ces logiciels sur plusieurs années a été nécessaire pour exploiter les possibilités de parallélisme des machines, cpus et gpus.

Cependant, contre l'impression de piétinement, les rêveries et fictions pseudo scientifiques font écran aux réalités industrielles jusqu'à corrompre non seulement les "informations" journalistiques mais l'enseignement et les productions des chercheurs. Actuellement, il semble que beaucoup de monde dans l'industrie informatique confonde "multitasking" et parallélisme - et les floutages entretenus autour des technologies de l'IA y contribuent. En conséquence de cette confusion, on ne voit plus que la condition première du parallélisme efficace est l'indépendance des tâches exécutées par chaque processeur (au moins durant une période de réallocation par le système d'exploitation) et que cette indépendance exige une conception spécifique ou une reconception profonde du logiciel. Sinon, si chaque tâche logicielle reprogrammée "parallèle" doit s'arrêter fréquemment pour attendre une donnée ou un signal d'autorisation, alors le résultat sur le fonctionnement de la machine sera la démultiplication des découpages temporels et des réallocations des tâches entre les coeurs de cpu, que le système d'exploitation opère automatiquement de toute façon pour son "load balancing" périodique. Autrement dit, lorsqu'un informaticien prétend paralléliser un logiciel par découpages "pour passer en multithreading" sans reconception d'ensemble, il produit un monstre de soumission volontaire à une super "loi" d'Amdahl en mode auto strangulation.

En résumé, ce qu'on appelle couramment "parallélisme" sur PC est un faux parallélisme, un parallélisme d'apparence consacré par une usurpation d'identité. Le vrai parallélisme progresse lentement, concrètement dans quelques types de logiciels, malgré les systèmes d'exploitation et les projets à caractère publicitaire.

3/ Parallélisme mental des héros imaginaires et des gens ordinaires

On peut être tenté d'établir une analogie entre le parallélisme sur machine informatique et le fonctionnement de nos cerveaux humains.

L'analogie est plus facile à partir de séries télévisées où les personnages principaux se caractérisent par un parallélisme scénarisé entre un projet personnel secret et leurs activités publiques, moyennant les habituelles simplifications cinématographiques des incarnations et des péripéties.

ThAmers.jpg ThMental.jpg

Dans The Americans, nous suivons un couple d'américains typiques qui élèvent leurs enfants dans un pavillon de banlieue et vivent de boulots ordinaires. La réalité parallèle : deux espions soviétiques infiltrés conduisant divers types de missions, tout en exploitant, sur longue durée et sous fausses identités, des contacts progressivement soumis à leurs demandes.

Dans The Mentalist, nous suivons les exploits manipulateurs d'un détective consultant non conformiste auprès du California Bureau of Investigation. La réalité parallèle : un personnage obsédé par un projet de vengeance contre un criminel en série insaisissable et protégé par un réseau d'affidés dans de nombreux milieux.

Dans les deux séries, les personnages principaux possèdent des dons spécifiques naturels, qui ont été développés contre leur volonté au cours d'un violent conditionnement préalable : analogie avec la phase d'apprentissage d'une intelligence artificielle. Les personnages poursuivent par la suite plusieurs processus mentaux parallèles au cours de leurs activités : analogie avec l'exécution de processus en parallèle sur une machine informatique. Cependant, si on examine plus précisément la nature du parallélisme chez nos héros de séries, on découvre qu'il combine des activités déterminées par des objectifs de moyen terme mais que c'est bien finalement le projet secret de long terme qui oriente en profondeur l'histoire des personnages. Mieux encore : dans le scénario, les péripéties du jour ou de la semaine peuvent sembler parfois en éloignement du but de long terme, mais c'est toujours pour améliorer des capacités complémentaires des personnages principaux, susciter des synergies potentielles avec d'autres personnages, créer des contextes utiles à la résolution ultime vers le but de long terme.

Pour ce qui nous concerne, si nous ne sommes pas des héros de série et si nous n'avons pas consciemment subi de conditionnement spécifique, devons-nous recourir à une intelligence artificielle pour inventer notre scénario de vie personnelle (à partir de quelles données ?), afin de devenir capables de faire converger des objectifs instantanés vers un but de long terme ? La question s'efface devant l'observation de nos vies courantes : cette maîtrise de la convergence est un art très banal, et sa pratique consciente est au niveau d'un besoin vital chez certains d'entre nous. Clairement, la capacité à concilier divers horizons temporels d'activités contribue à distinguer l'humain de la machine, au contraire des exploits ponctuels de bête à concours qu'une intelligence artificielle réalise au moins aussi bien.

Ainsi donc, en abandonnant la commodité d'une analogie avec une machine informatique "intelligente", les héros des séries citées ne nous apparaissent plus comme des créations artificielles. D'ailleurs, si on remplace leur violent conditionnement préalable par un entraînement assidu à peine moins brutal sur un terrain mental et physique naturellement favorable, ce sont nos sportifs célèbres, nos acteurs préférés, nos savants de référence qui nous viennent à l'esprit.

Et nous les gens ordinaires, sur la base d'un entraînement peut-être moins assidu et brutal à partir d'un terrain moins naturellement favorable, nous pouvons occasionnellement observer de petits miracles instantanés qui ne peuvent être que les produits de ruminations physico mentales initiées de longue date.... Personnellement, il m'est arrivé de découvrir un risque de bogue fatale dans un logiciel livré depuis des mois, alors que j'étais absorbé ailleurs dans l'écriture d'un nouveau logiciel sans lien ni similarité. Et comment expliquer ce jet de boule aérien qui a provoqué l'éviction de trois boules gagnantes pour s'y substituer au plus près du cochonnet, alors que ce voisin de studio de vacance prétendait n'avoir pas une seule fois joué aux boules depuis une dizaine d'années ? Vous trouverez facilement des exemples de tels "miracles" en questionnant autour de vous. Ces découvertes impromptues sont des révélateurs d'un potentiel personnel inexploité, mais de fait entretenu, bonifié et prêt à l'emploi. Cela n'intéresse personne ? De quoi avons-nous peur ?

En résumé, en partant d'une analogie informatique sans préjugé, nous pouvons distinguer quelques aspects propres à notre nature humaine en relation avec le développement des dons individuels selon diverses échelles temporelles. Cela vaut bien des philosophies de l'ontologie ou de la destinée humaine, car les perspectives à explorer au plan social comme au plan du développement individuel pourraient s'avérer immenses, en commençant par l'éducation primaire.

4/ Pour l’invention d’un parallélisme naturel immersif

Des célébrités de notre époque semblent souhaiter l'émergence d'une humanité supérieure par la technologie, quitte à détruire la planète pour cela. Beaucoup d’autres tentent de faire fortune en nous conseillant pour notre bien-être, ou en nous guidant vers une forme de resourcement spirituel ou vers une conscience supérieure.

Ce n’est pas ce qui est proposé ici..

Mais cependant, même sans adhérer à un projet de transcendance par la technologie, ne pourrait-on développer une assistance par intelligence artificielle permettant de détecter les dons innés de chacun et définir un programme adapté de développement spécifique ? A l'évidence, si on se contentait de brancher une telle assistance par intelligence artificielle sur n’importe quel type actuel de systéme éducatif, fondamentalement répressif ou prétendument alternatif, on continuerait d'étouffer les dons "inutiles" et les dons que l'on ne sait même pas imaginer, au profit d'une recherche des "champions"... Résultat garanti : l’amplification du même cauchemar sans issue.

Sortir des cadres de pensée autoritaire n'est plus un luxe, c'est à notre époque une nécessité, à cause de leur obsolescence, à cause des grandes transitions à opérer (c’est maintenant officiel : le monde change et même il bascule). De toute façon, les grandes découvertes scientifiques depuis la fin du 19ème siècle n'autorisent plus le confort de la certitude, même pas l’unicité d’un cadre de raisonnement logique. Les modèles, les théories ne sont plus compatibles entre ceux qui travaillent derrière un télescope et ceux qui observent au microscope.

Et il reste tant à découvrir, sur l'être humain dans la Nature à laquelle il appartient ! Nous osons placer mentalement la Nature dans une case étiquetée "notre environnement", alors que nous ignorons presque tout du fonctionnement de cette Nature comme système complexe - pour prolonger une vague analogie avec des machines informatiques. Parmi d'autres, les événements "pandémiques" récents nous ont rappelé notre humble dépendance physique à ce système complexe, et nous ont confirmé, en retour, l'inadaptation de nos grandes machineries techniques et organisationnelles, ainsi que les dangers monstrueux, pourtant déjà bien expérimentés dans l’Histoire, des théories obsolètes.

Microbs.jpg

Le vrai parallélisme est natif dans un système complexe tel que la Nature. C'est, en première approximation, un parallélisme de symbioses et de réseaux d'interactions à diverses échelles de temps et à diverses échelles de tailles (dont microbienne, cellulaire et infra cellulaire), qui commence seulement depuis quelques dizaines d'années à intéresser des scientifiques, à la suite des progrès des instruments d'observation. Beaucoup de théories explicatives inventées au 19ème siècle en biologie sont remises en cause.

La découverte de ce parallélisme inhumain, ample et varié, non modélisable à notre échelle, nous invite à concevoir, d'abord par l'exploitation à l’essai de quelques analogies, les axes de développement de notre propre parallélisme mental et leur instrumentation, au niveau personnel et social.

Et ne me dites pas que cela va forcément mal finir ! On n'a pas commencé.

C'est que, pour cette fois, les possibilités qui s'ouvrent ne se réduisent pas aux sorties de choix binaires successifs. Chacune de ces possibilités est au minimum milliardaire.