Nicolas Boulay a écrit 15824 commentaires

  • [^] # Re: concrete

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 2.

    Quand tu passes à 32 bits, tu augmentes encore la complexité. Ici, on parle d'élément minuscule qui ne consomme rien, et on remplacer les µp 8 bits.

    "La première sécurité est la liberté"

  • [^] # Re: concrete

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 2.

    Le jeu d'instruction x86 est totalement bordélique et traine un historique très lourd. Il faut une sacré expertise pour trouver un sous-ensemble complet et orthogonal dans la foret des instructions disponibles.

    On peut aussi parler de la fpu à pile, qui est une exception à elle toute seul.

    "La première sécurité est la liberté"

  • [^] # Re: concrete

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 2.

    Le msp 430 est super clean. J'ai pas franchement l'impression que cela soit le cas des AVR.

    "La première sécurité est la liberté"

  • [^] # Re: Sinon ARM c'est pas si déconnant que ça

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 3.

    Pour le 2) tu parles bien d'un jeu d'instruction d'un cpu qui n'est pas encore disponible à la vente ?

    "La première sécurité est la liberté"

  • [^] # Re: Prof qui répond

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 2.

    Il y a encore des gens qui utilisent ça ? Ce n'est même pas portable dans la révision du cpu suivante. De plus, la distance optimal de prefetch soit même changer avec les fréquences du cpu et de la mémoire (trop tôt et la donnée sera viré du cache avant usage, trop tard et elle encombre l'unité de load 2 fois au lieu d'une).Le pentium 4 avait 4 instructions, les core les réduisait à 2 (de mémoire).

    Je croyais que la technique n'était plus vraiment utilisé au profit du preload.

    "La première sécurité est la liberté"

  • [^] # Re: Prof qui répond

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 2.

    Ou est-ce que tu "vois" le cache au niveau de l'assembleur ?

    "La première sécurité est la liberté"

  • [^] # Re: Dommage

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 3.

    Merci pour le lien. En fait, les cpu sont toujours en arithmétique en complément à 2, mais les compilateurs jouent sur la norme C, ce qui devient faux, après activation des optimisations !

    "La première sécurité est la liberté"

  • [^] # Re: Dommage

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 2.

    Oui, je parlais bien des résultats intermédiaires pas du final (a+b < c).

    "La première sécurité est la liberté"

  • [^] # Re: Sinon ARM c'est pas si déconnant que ça

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 3.

    ARM dispose maintenant d'un grand nombre de mode d'adressage qui l'éloigne du concept RISC.

    Ses derniers évolutions utilisent un jeu d'instruction avec 2 tailles d'instruction : 16 et 32 bits. Cela commence à se complexifier.

    Par ma part, j'ai vu l'assembleur sur hc11 et 68000. Je trouve que l'assembleur du msp430 de TI est extrêmement propre, c'est un microcontroleur 16/32 bits très efficace.

    "La première sécurité est la liberté"

  • [^] # Re: Dommage

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 3.

    Il est parfaitement défini. Il s'agit de l'arithmétique en complément à 2 qui fonctionne avec les joies des calcul sous modulo ou (a+b)%c = a%c + b%c, si je me rappelle bien. Cela permet d'avoir des débordements intermédiaires sans conséquence sur le résultat finale.

    Tes histoires de boucles infinis ne sont pas lié à des mélanges signed/unsigned ?

    "La première sécurité est la liberté"

  • [^] # Re: MMIX ?

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 1.

    Tu peux simuler le même comportement avec des instructions cmp*.

    Concernant les ref, on s'en était aperçu sur le f-cpu et lu sur de la doc ARM.

    "La première sécurité est la liberté"

  • [^] # Re: Dommage

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 2.

    Sauf en exploitation ou sur un système "temps réel", tu préfères qu'il continue de fonctionner malgré le glitch.

    "La première sécurité est la liberté"

  • [^] # Re: MMIX ?

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 3.

    Les registres spéciaux contenant les carry et autre résultat de test utilisé comme prédicat sont une vrai plaie pour les pipelines car cela créait une dépendance forte entre 2 instructions (celle qui génère la carry et la suivante, chaque instruction pouvant modifier ces bits). Donc, c'est pas plus mal :)

    "La première sécurité est la liberté"

  • [^] # Re: Dommage

    Posté par  (site web personnel) . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 3.

    C'est vrai cela permet de passer en auto-teste en cas de débordement d'entier dont tu n'as rien à faire…

    "La première sécurité est la liberté"

  • [^] # Re: Liaison dynamique

    Posté par  (site web personnel) . En réponse au journal Pythran 0.2 : Python peut-il être aussi rapide que du C ?. Évalué à 1.

    Le point 2 parle surtout des problèmes de mantisses quand on additionne 2 nombres de tailles différentes. C'est bien une forme d'accumulation d'erreur. C'est le "fameux" problème d'addition des souris et des éléphants. Ici, la souris passe sous le lsb dans l'addition avec l'éléphant.

    Pour illustrer son point 4, il utilise chop comme fonction d'arrondit. IEEE754 utilise round to even, c'est pas pour rien. En moyenne, cet arrondi annule les effets cumulatifs. Et il parle de problème très particuliers.

    Je suis bien conscient que le cas général ne peut pas être géré facilement, mais les cas particuliers utiles pourraient l'être.

    "La première sécurité est la liberté"

  • [^] # Re: Liaison dynamique

    Posté par  (site web personnel) . En réponse au journal Pythran 0.2 : Python peut-il être aussi rapide que du C ?. Évalué à 2.

    Métier, quand il ne s'agit pas de système, justement :) Un avion, une voiture, un train, une grue, un bateau…

    "La première sécurité est la liberté"

  • [^] # Re: Liaison dynamique

    Posté par  (site web personnel) . En réponse au journal Pythran 0.2 : Python peut-il être aussi rapide que du C ?. Évalué à 1. Dernière modification le 21 février 2013 à 12:33.

    Concernant la stabilité, c'est par exemple la répétition de x= x(-1)*.1 ? A part dans le monde des calculs scientifiques, ce genre de chose est évité dans le traitement du signal, parce ce que les valeurs d'entrés ne sont de toute façon jamais connu de façon précise.

    Je veux dire par là, qu'il existe toute une gamme d'équation non simplifiable du style de celle que tu décris, mais elles ne sont pas tant utilisé tant que ça dans les faits.

    Connaître la précision requise des opérations de base (+,-,*,/) c'est bien beau mais ce qui compte réellement c'est la précision globale de l'algo.

    Oui mais en partant des erreurs connu de "+" (0.5 lsb) tu peux en déduire la propagation d'erreur dans une équation et la borner d'une façon ou d'une autre, dans l'implémentation choisi par le compilo. Genre ((a+b)*c+de)+a pourrait être traduit en (ac+bd)+(de+a) si on peut supporter la perte de 2 ou 3 lsb dans le résultat attendu.

    Mais si tu connais une solution, je suis preneur et la communauté scientifique aussi. Je crois même qu'il est probable que tu recevras une récompense pour ça…

    Sacré motivation :) Je pensais simplement à simplifier des équation mathématique, genre un -fast-math avec résultat contrôlé. En voulant faire ça, je me suis rendu compte que l'on ne pouvait rien faire avec du code C ou C++ utilisant des flottants : il manque trop d'information.

    L'idée ressemble beaucoup au ROM (reduce order modeling) dont j'ai entendu parlé récemment, le compilo travaillerai au niveau equation et non plus au niveau model 3D.
    http://www.bris.ac.uk/aerodynamics-research/roms/

    "La première sécurité est la liberté"

  • [^] # Re: Liaison dynamique

    Posté par  (site web personnel) . En réponse au journal Pythran 0.2 : Python peut-il être aussi rapide que du C ?. Évalué à 1.

    Exactement. Il y a des tas d'optimisation simple à faire pour augmenter la vitesse d'un code numérique qui sont très dure à faire si on ne connait pas les besoins réels du codeur concernant la précision requise.

    On peut même imaginer une implémentation sans code flottant, et sans devoir faire totalement la conversion à la main.

    Le gros hic, c'est la stabilité numérique :/ Et ça, je vois très mal un compilo être capable de l'estimer.

    Tu parles des équations bizarres qui peuvent diverger autour de points spéciaux ? Parce que dans l'embarqué, qui utilise des code rétroactif, il utilise en général des équations qui évitent d'être sensible aux bits de poids faible d'une grandeur, car elles sont physiques et donc soumises elle-même à une erreur de mesure. Les équations instables sont évitées comme la peste : comment prouver que le système ne peut par partir en sucette ? Si il y a des hommes dedans, cela peut être gênant.

    "La première sécurité est la liberté"

  • [^] # Re: Liaison dynamique

    Posté par  (site web personnel) . En réponse au journal Pythran 0.2 : Python peut-il être aussi rapide que du C ?. Évalué à 1.

    C'est le truc à résoudre avant de commencer à coder.

    "La première sécurité est la liberté"

  • [^] # Re: Liaison dynamique

    Posté par  (site web personnel) . En réponse au journal Pythran 0.2 : Python peut-il être aussi rapide que du C ?. Évalué à 1. Dernière modification le 20 février 2013 à 17:28.

    Non, je veux un type de donné qui correspond aux problèmes systèmes, c'est ensuite au compilateur de faire son boulot pour trouver la meilleur représentation machine et de faire des simplications mathématique qui rende le code plus simple. On peut imaginer des factorisations pour réduire le nombre de division et l'inverse pour augmenter le parallélisme du code. On peut encore imaginer aller plus loin avec une linéarisation des équations valides dans le range précisé et la précision voulue.

    Tout cela n'est possible qu'avec range et précision absolu (ou absolu + relatif même si c'est plus chiant) et que l'on considère les équations comme avec des réels et non comme avec des nombres flottants.

    math.acos( math.cos(xmin+step*i)*math.cos( t[k,0] ) pour une précision donnée se réduit à un polynôme ou presque.

    "La première sécurité est la liberté"

  • [^] # Re: Liaison dynamique

    Posté par  (site web personnel) . En réponse au journal Pythran 0.2 : Python peut-il être aussi rapide que du C ?. Évalué à 2.

    Quand tu fais un logiciel, du point de vue système tu te fou de savoir si tu utilises des flottants ou des virgules fixes. Il s'agit toujours de "nombre". En compta, il utilise un big number ou équivalent. Un nombre avec range + précision peut être mappé sur n'importe quelle représentation informatique.

    Un float c'est Significant digits × baseexponent. Donc la précision varie en fonction de ces 3 paramètres. Le range ne donne rien de ces trois paramètres (y a pas que le IEEE dans la vie).

    Sauf qu'il y a très peu de variantes pour ses 3 variables. Si ta fpu n'est pas IEEE754, je ne vois pas ce que tu peux faire au niveau précision car tu ne sais même pas ce que la fpu va te perdre.

    Si tu veux de l'absolu, tu utilise le point fixe. Les flottants donnent toujours une précision variable quelque soit l'intervalle choisi (Il y a évidement une précision minimale - ensemble fini d'éléments donc différences 2 à 2 finies).

    Oui, mais on veut une précision minimum, pas une précision fixe. On veut une précision finale du point de vue système, on se contre fou de la manière d'y arriver.

    "La première sécurité est la liberté"

  • [^] # Re: erreur d'historique?

    Posté par  (site web personnel) . En réponse à la dépêche Sortie du noyau Linux 3.8. Évalué à 4.

    Vers l'alpha, je pense, premier port de Linux.

    "La première sécurité est la liberté"

  • [^] # Re: Liaison dynamique

    Posté par  (site web personnel) . En réponse au journal Pythran 0.2 : Python peut-il être aussi rapide que du C ?. Évalué à 1.

    Une relative est plus raisonnable…

    En fait, non. Si tu prends une précision relative, que faire autour de zéro et que faire des nombres dénormalisés ? Il va te falloir en plus une précision absolue juste pour ce cas-là.

    De plus, si tu regardes des spécifications, les grandeurs d'entrée ou de sorties de calcul sont toujours en absolue : précisions d'ADC, précision de capteur, "lsb" de nombre entier pour la musique, pixel pour des images, etc…
    Dans le cas de comptabilité, on a envie d'avoir une erreur inférieur au centime, quelque soit les sommes intermédiaires.

    Les nombres flottants peuvent être utilisés avec une précision absolue si tu as le range, donc, c'est bon.

    "La première sécurité est la liberté"

  • [^] # Re: oui mais non

    Posté par  (site web personnel) . En réponse au journal C'est pas passé loin !. Évalué à 3.

    Même que les versions en métal, s'appelle des … canons.

    "La première sécurité est la liberté"

  • [^] # Re: Liaison dynamique

    Posté par  (site web personnel) . En réponse au journal Pythran 0.2 : Python peut-il être aussi rapide que du C ?. Évalué à 1.

    Déjà si les types incluaient range et précision absolu, on pourrait faire des transformations avec "perte maitrisée" de la précision de calcul. Là avec le code IEEE754, on ne peut rien en faire de "maitrisable".

    J'imagine que générer du code openMP, et du gcc vectorisable par gcc ne doit pas être sorcier, à condition de maitriser le layout mémoire des données.

    "La première sécurité est la liberté"