Ceci est une archive de l'ancien forum de Numerama. Il n'est plus accessible. Vous êtes probablement arrivés ici par erreur. Cliquez ici pour revenir sur la page d'accueil.

Logique floue - une nécessité aujourd’hui

Philippe_Verdy le 06/09/2016 à 22:56

Suite du sujet Ce processeur ne sait pas bien calculer et c'est très bien comme ça:

"Régler la caméra pour avoir une image floue" ne change rien au problème qui est que la caméra continuera à produire un "bruit" numérique qui est toujours aussi gênant et perturbe toujours les méthodes classiques de calcul dit "exact".

Le traitement numérique (en précision finie) est tout aussi perturbant car il produit intrinsèquent (dès le départ) ses propres erreurs dont l'accumulation s'amplifie et finit par donner des résultats totalement arbitraires.

En fait calculer une unique valeur numérique (quelle que soit sa précision) ne suffit pas: pour que le résultat soit utilisable il faut aussi estimer la marge maximale d'erreur commise. Ca double la quantité de calcul à effectuer, mais à la fin ça arrête un calcul divergent (pour lequel on n'obtiendra en fin de compte plus aucun résultat alors qu'on aura dépensé beaucoup d'énergie pour savoir qu'on n'aura pas de résultat).

On peut faire autrement (et beaucoup plus vite) par des méthodes non pas numériques mais probabilistes, qui fourniront également une estimation de la marge d'erreur (et cette marge est même bien souvent bien meilleure: en fin de compte on a le résultat plus vite, et même un résultat exploitable beaucoup plus souvent):

Une barrière à lever est justement le traitement numérique (binaire) du signal, on commence à voir revenir le traitement analogique au premier plan, même si on sait qu'il contient aussi du bruit (mais on sait mieux contenir ce bruit alors qu'on n'y arrive plus maintenant avec les moyens numériques qui atteignent aujourd'hui les limites quantiques).

On a cru depuis les débuts de l'informatique qu'on pourrait tout faire avec une logique binaire qui aujourd'hui s'avère très inefficace, très gourmande en énergie, très polluante et très chère (à la limite de la rentabilité pour les fabricants qui prennent des risques énormes sur des investissements en milliards de dollars et avec une quantité de plus en plus grande de déchets sur les processeurs produits).

Aujourd'hui il faut accepter qu'on va vivre avec des processeurs qui feront des "erreurs" et qu'on ne trouvera bientôt plus aucune paire de processeurs fournissant des résultats toujours identiques pour les mêmes données et programmes en entrée.

Ca change complètement la donne en terme de programmation: il va falloir créer des algorithmes "stables" qui savent limiter les divergences.

Les algos décisionnels d'aujourd'hui seront plutôt destinés à traiter des données peu nombreuses et moins fréquentes (ça ira pour gérer des comptes bancaires individuels, mais pour des algos boursiers on a déjà de graves problèmes et des divergences explosives très dangereuses, que les opérateurs humains ont du mal à prévenir et contrôler).

On continuera donc à utiliser une logique binaire pour gérer des scénarios de jeux, mais pour les rendus scénographiques ou sonores ou pour régler les batailles entre joueurs et savoir qui est mort, on aura aussi une part de "chance" où la dextérité des joueurs ou la rapidité de leur connexion au réseau n'aura plus d'influence (et ce sera aussi plus équitable entre joueurs, à condition que cette part de logique flue tranchée par les hasard soit réellement un hasard non biaisé volontairement par des tricheurs ou par l'éditeur du jeu en ligne agissant dans son seul intérêt économique ou par "copinage" pour faire plaisir à quelques personnes influentes qui leur demanderont d'introduire une tricherie).

Pour l'imagerie 3D, peu importe aussi si une sphère n'apparait pas toujours parfaitement ronde du moment qu'elle parait localement à peut près bien lissée. Dans la réalité aussi la sphère parfaite n'existe pas. Peu importe s'il y a des imperfections dans le rendu des textures d'un mur, d'un rocher, d'un feuillage, d'un tissu ou du grain de peau d'un personnage : dans la réalité aussi ces textures sont aussi imparfaites, même les plus beaux nids d'abeille, et le résultat est même plus probant s'il y a des imperfections (qui ne sont pas non plus des imperfections purement liées au traitement numérique qui donne des résultats aberrants et très indésirables, tels que les effets de "moiré" très visibles dans les images, ou les résonances harmoniques dans un son numérisé)

Je pense même que cela ira au delà des seuls traitements sur ordinateurs: on a maintenant besoin de logique floue aussi pour les télécommunications longue distance (on pourrait encore améliorer les performances des modems sur lignes analogiques en oubliant le traitement numérique du signal DSL, et énormément augmenter le débit "utile" sur des liaisons fibre si on accepte aussi de transmettre des erreurs et ne pas toujours chercher à les éliminer ou les corriger).

Il y aura aussi des applications dans des algos de sécutité, notamment en cryptographie.

L'informatique "quantique" balbutiante va nous produire de nouvelles possibilités, de nouveaux langage de programmation "floue", avec moins de points de synchronisation (qui pénalisent partout les performances), où on demandera d'avoir vite un résultat (si ce résultat a de l'intérêt on pourra continuer à faire tourner le système à la demande pour améliorer la précision, si elle nous intéresse toujours, mais on devra attendre plus longtemps et voir si ça vaut encore la peine d'en payer le prix !)

Ces algos probabilistes ne seront pas faits pour produire une "approximation" (avec une erreur qu'il est impossible de faire converger vers zéro sans changer l'algo et sans tout recommencer depuis le début en se payant dès le départ plus de ressources), mais apprendront d'eux mêmes comment tenir compte des erreurs commises et des résultats intermédiaires obtenus. Les réponses obtenues ne seront pas statiques, elles varieront au cours du temps sans diverger. Ces algos pourront aussi travailler en parallèle et utiliser des résultats "collectifs" (ce que fait notre cerveau avec ses collections de neurones qu'il mobilise plus ou moins mais qu'il peut allouer aussi à d'autres tâches pour pouvoir réagir aussi à d'autres stimulis extérieurs et changer les priorités, ou réagir à ses propres stimulis "induits" en interne, ce qu'on appelle nos émotions et qui sont largement acquises par l'expérience et l'apprentissage, comme l'est aussi notre propre "mémoire")

T82135 le 06/09/2016 à 23:28

Tu mélanges tout.
Les méthodes de calcul numérique ne sont pas de la logique floue, qui n’est pas fi traitement du signal, qui n’a rien à voir avec le calcul quantique etc.

on ne trouvera bientôt plus aucune paire de processeurs fournissant des résultats toujours identiques pour les mêmes données et programmes en entrée.

Change de fournisseur, on t’a vendu de la merde.

Philippe_Verdy le 07/09/2016 à 01:54

Lis intégralement ce que j'ai écrit, que tu cites pourtant. J'ai employé le futur et les mot "pas toujours".

Je n'ai pas parlé de ce que font les processeurs actuellement.

Mais il faut que tu saches que dès aujourd'hui les processeurs ont tous des tas d'erreurs internes (dans certains cas aléatoires, mais en tout cas pas conformes aux spécifications initiales). Et qu'elles changent selon les séries. Pour y palier, ils incluent du microcode qui corrigent une partie de ces erreurs. Il est même devenu très difificle de trouver deux modèles identiques de processeurs (que ce soit chez Intel ou AMD pour les plus connus). Des erreurs sont également acceptées (et non corrigées) dans les GPU (ou la partie GPU des APU modernes).

Généralement ces erreurs sont liées à la gestion des caches internes et transactions supposées atomiques. Des listes impressionnantes de correctifs logiciels sont publiées par les fournisseurs, certaines anomalies ne sont pas corrigées du tout et peuvent provoquer certains comportement inattendus (exemple: non prise en compte d'une interruption, flags non positionnés correctement après certaines instructions; ces erreurs sont encore plus nombreuses aujourd'hui qu'avant, mais toutes ne sont pas jugées critiques pour rejeter le produit de la vente; les OS actuels comme Windows, Linux or MacOS contiennent maintenant des systèmes de détection de ces anomalies, les gestionnaires d'exceptions dans les noyau font appel à du microcode compilé et installé après avoir lancé une procédure de test pour les contourner).

Après la production, les tests des processeurs produits vont conduire à désactiver certaines fonctionnalités trop dysfonctionnelles (et pas corrigeables non plus par reprogrammation interne), pour les vendre dans une gamme inférieure, ou pour brider leurs fréquences de fonctionnement.

Les meilleurs modèles (ayant le moins besoin de bridages et de programmation de microcode) seront vendus plus chers dans une gamme commerciale plus élévée (les Xeon par exemple). Intel a beaucoup de mal à fournir les Xeon les plus rapides, il en sort à peine un exploitable (vendu beaucoup plus cher) sur ses wafers, les autres sont déclassés mais vendus quand même. Selon les cas, il va éliminer une partie des caches défectueux (on trouvera donc des processeurs avec moitié moins de cache, le reste est bridé, ou bridés davantage en fréquence par programmation, sinon ils sont trop instables, et on trouve aussi des processeurs ont des coeurs sont même totalement désactivés, et là encore c'est un autre modèle commercial vendu moins cher);

Quand il y a des erreurs dans les parties GPU, le nombre d'unités ALU peut être plus réduit que sur les spécifications; pour pouvoir garantir un nombre minimum d'ALU correspodnant aux spécifications commerciales, il va là aussi utiliser le bridage par progammation pour n'utiliser qu'une partie des ALU et bloquer les autres. Les processeurs incleunt aussi maintenant divers capteurs de température et de puissance dissipée, afin de metter dynamiquement des parties au repos et limiter les anomalies: des cycles d'attente seront ajoutés. Des compteurs de performance à l'intérieur du processeur ne comptent pas toujours tous les événements comme ils le devraient (ces erreurs, qui surviennent lors de changement d'état d'alimentation ne sont presque jamais corrigées par les microcodes).

On s'aperçoit des différences entre processeurs vendus sous la méme désignation commerciale quand ces systèmes de corrections et de régulation interne s'activent à pleine charge lors de "stress tests", et activent aussi une partie du microcode (intégré ou ajouté par le pilote CPU de l'OS).

Si tu veux tu peux regarder les docs extrêmement techniques diffusées par les fondeurs (ces docs ne sont lisibles réellement que par les meilleurs experts écrivant ou maintenant les noyaux d'OS, ou par les fondeurs de chipsets pour cartes-mères, où peuvent parfois être ajoutés des correctifs matériels externes, ou par les quelques créateurs de BIOS comme AMI ou Award). Les éditeurs de cartes -mères révisent de temps en temps leurs versions de BIOS pour correspondre aux listes de processeurs neufs en vente sur le marché en même temps, mais au delà la compatibilité des processeurs avec les cartes mères n'est plus garantie: quand on change une carte mère, on doit souvent aussi changer le processeur avec, même si c'est le même format matériel de slot, ou bien trouver un ancien processeur encore fonctionnel sur le marché d'occasion, récupéré dans les ateliers de réparation des assembleurs OEM. Et d'une version de la carte mère à la même carte mère dans la version suivante, les compatibilités avec les processeurs peuvent changer (pas toujours de façon ascendante), de même que la compatibilité avec les modules mémoire (les cartes mères et leur BIOS peuvent désactiver certains modes de fonctionnement plus rapides pour maintenir une compatibilité minimale.

Les DRAMs et mémoires flash ont aussi toutes des défauts internes (corrigées en mettant dedans plus de composants que nécessaire et en reprogrammant la matrice pour utiliser les cellules mémoire fonctionnelles, ou en incluant des dispositifs de détection et correction automatique d'erreurs: ces erreurs dépendent largement des fréquences de bus, de la température, de la charge système.

Les "overclockers" jouent à la roulette russe pour garder un système qui fonctionne et qui ne plante pas aussitôt dès le démarrage avant même d'avoir chargé l'OS, s'ils vont au delà des limites commerciales affichées et ne respectent pas bien les schémas d'alimentation, de fréquence et de refroidissement. Le processeur dispose toute fois de systèmes de sécurité qui empêchent de le "crâmer": il se met en arrêt complet, un circuit sur la carte mère détecte et mémorise cet arrêt et il faudra redémarrer pour repartir avec un mode par défaut plus stable (le BIOS signalera l'anomalie et éventuellement cherchera un mode stable précédemment mémorisé comme ayant fonctionné, sinon le BIOS utilisera un mode "safe" par défaut, plus lent mais fonctionnel et ne devant normalement pas causer de surchauffe ou dépassements de puissance consommée ou dépassements de limites de tensions d'alimentation).

Tous les CPU modernes peuvent facilement faire des erreurs, mais il y a de nombreux dispositifs de détection et garde-fous dans nos PC et nos OS.


Dans les rendus 3D très exigeants, je n'ai encore jamais vu deux GPU (ou APU) supposés identiques (par leur désignation commerciale) produire des images complètement identiques par rapport à l'image de référence calculée de façon classique mais beaucoup plus lentement par le CPU seul ou en baissant la fréquence pour simuler ce que devrait produire le GPU. Deux cartes graphiques du même modèle achetées en même temps et montées dans le même PC, sont incapables de produire exactement la même scène (même lorsque ce cartes ne saturent pas les bus PCI, et même en fonctionnant à température convenable et une bonne thermorégulation).

On ne voit pas de différence notable dans les calculs de géométrie, mais on en voit dans les rendus des textures sur les texels et dans les calculs de transparence ou de flous ou lumière diffuse, où même cet aléa améliore visuellement le rendu et le rends moins artificiel, moins binaire, et réduit des effets indésirables de moiré créés par la géométrie des texels et des images 2D utilisées comme textures.

Pour les calculs scientifiques utilisant la puissance des GPU/APU, les noyaux de rendus ne sont pas souvent utilisés (ou utilisées tout en connaissant les limites d'approximation, par exemple pour faire des simulations statistiques), mais les unités géométriques sont mises à haute contribution. Pour assurer une résultat correct, plusieurs calculs sont lancés en parallèle et leurs résultats sont comparés, on retient le résultat le plus fréquent, sinon on retente les parties de calcul détectées comme "erronées", mais au final cela va beaucoup plus vite qu'avec le seul CPU même multicoeur et programmé en multithreading.

Les erreurs produites par les GPU/APU sont d'une toute autre nature ce celles produites par les CPU classiques et elles se traitent très différemment.

Philippe_Verdy le 07/09/2016 à 02:42

De plus c’est toi qui mélanges tout; je n’ai pas confondu les méthodes de calcul numérique avec celles de la logique floue.

Je n’ai pas parlé non plus du calcul quantique, j’ai parlé des limites physiques quantiques atteintes aujourd’hui par le traitement numérique classique (binaire) : on a atteint la taille limite des transistors et jonctions classiques, au delà on ne peut plus les isoler et assurer leur stabilité. il rste quelques optimisations possibles, mais fabriquer les wafers en 2D ne permet plus d’augmenter leur densité. On s’oriente maintenant vers une gravure en 3D mais le problème du refroidissement interne est encore plus difficile et il faut alors baisser les fréquences pour réduire les tensions et courants.

Les jonctions de transistors en arrivent à devoir travailler individuellement sur une poignée d’électrons ou trous, et il est difficile de les placer dans un état stable quand les états quantiques d’excitation des atomes de cristal semicondicteur se chevauchent partiellement avec ceux des jonctions voisines. Les état stables perdent aussi une partie de leur énergie en émettant des radiations radioélectriques. Avec une telle densité de composants les effets de champs superposés sont difficiles à isoler. Lors des transitions d’état, il apparait aussi des résonances qu’il faut amortir (sinon elles peuvent devenir destructrices mais sinon produisent des aléas de calcul) et l’amortissement demande de dissiper de l’énergie thermique qu’il faut encore évacuer. Les composants sont tellement petits qu’ils peuvent aussi se sublimer et diffuser autour si la température de fonctionnement n’est pas maîtrisée.
Même la production à froid des jonctions est aussi difficile en très haute densité et c’est encore plus difficile de produire les substrats cristallins exempts de défauts de structure, là où devait être “gravé” une jonction, un transistor ou un conducteur métallique ultra fin.