C'est uniquement ça ? Il me semblait que cela pouvait aller bien plus loin. Par exemple, les règles d'arrondies un peu assouplie (moins/pas de garde bit).
A moins que le mode dont tu parles, c'est le fonctionnement sur x86 ?
icc est connu pour inclure --fast-math dans -o2, ce que ne ce permet pas gcc.
Sinon, on semble dire la même chose. Quand il y a execution en parrallèle on ne peut plus vraiment parler d'ordre. Le flot d'instruction est déterminé par leur liaison par les registres et par les accès à la mémoire.
Si on fournis au codeur un moyen d'estimer la précision, et/ou d'optimiser en lui garantissant la précision qu'il demande, je ne pense pas qu'il nous en veulent beaucoup...
Effectuer une premiere estimation en precision simple, puis affiner en precision double.
Pour la mise au point du calcul, j'imagine pas à l'utilisation ? Sinon, je ne vois pas l'interet de faire 2x ce calcul.
Comme les processeurs ne supportent generalement pas ces dernieres (et encore parfois meme pas la division), le resultat s'obtient par une serie de calcul
C'est encore la supériorité de la fpu x87 par rapport à SSE. Le x87 contient toute la trigo en hardware, contrairement à SSE. D'ailleurs, AMD était connu pour avoir une implémentation x87 musclé par rapport au processeur Intel qui favorisait plutot le SSE. Cela se voyait dans certain tests "scientifiques".
Une etude de l'erreur est effectuee. Mais auparavant, on effectue une etude de stabilite: quel est la variation du resultat si l'on ajoute sur l'une des donnees en entree une petite valeur (epsilon).
Cela revient à une étude d'interval, non ?
Reussir a prouver l'implementation de son calcul, c'est deja pas mal. On repasse generalement plus tard pour reduire la precision.
- Je trouve l'algo
- Je prouve qu'il est stable numériquement
- Je regarde les cas bizarre par expérimentation
- si cela roule en double, j'essais de passer à la vecorisation ou au float 32 bits ?
Je peux résumé par :
"On veut de la répétabilité, et parfois on veut une idée précise de la précision." ?
Par contre, concernant les arrondis, l'utilisation de fonction explicite ou des mode de fpu influe sur quoi ? Uniquement la vitesse ? Ou il existe encore des subtilités ?
Comment utilises-t-on les modes "fast" ? En général, ces modes sont taxés de mal calculer. Je crois que l'itanium en a un. Les cartes graphiques utilisent aussi ces modes.
Si j'ai bien compris, il ne détecte pas les NaN dans le pipelines flottant pour éviter de gérer des interruptions en plein milieu. Mais si j'ai bien compris d'autres interventions, cela n'est génant que pour la detection d'errreur et non pour le fonctionnement nominal. J'ai bon ?
vu les nombres que tu manipules dans ton exemple, est-ce que tu ne cherches pas plutôt à faire du "fixed point", ce qui revient à faire des calculs entiers.
Si tu prends tout tes nombres et que tu les multiplies par 16, tu as 4 bits après la virgules.
Un autre truc qui ralentit monstrueusement le code c'est les nombres denormalisés, tous ceux qui font du traitement du signal avec des filtres récursifs en font l'experience un jour ou l'autre.
Quand est-ce qu'arrive ses nombres ? Je croyais que les fpu IEEE754 normalisait le nombre tout seul comme des grands.
Je ne comprends pas trop. Les gros systèmes type IBM utilise des formats infini entier justement pour ne jamais avoir de problème. Le support est même hardware.
Je ne connais pas bien le domaine mais comme il existe des calculs en "entier infini", il existe aussi des calculs en flottant infini.
Je ne vois pas en quoi l'ordre change la vitesse.
Par ce que a+b+c+d sera plus lent que (a+b)+(c+d) car tu enlèves une dépendance read-after-write.
Au passage, les derniers gcc vectorisent tout seul !
Enfin, si on l'aide beaucoup beaucoup beaucoup...
Sachez que GCC ne modifient pas les calculs sur les flottants car justement l'ordre des opérandes joue énormément sur la précision du résultat. Il ne pas simplifier x*2.0/2.0 par exemple.
C'est le cas par défaut. Mais cela n'est plus vrai avec l'option --fast-math.
D'ailleurs comment choisi-t-on d'utiliser un type d'arrondi plutôt qu'un autre ?
Selon le résultat attendu ?
C'est choix par équation ou par opération ?
Les gérer ? Comment ça ? Il suffit de vérifier à la fin qu'on n'a pas de NaN, -INF ou INF je pense. Si on sait ce qu'on fait, on ne trimballe pas de NaN.
Par exemple, "<" définit tous les comportements à avoir avec NaN < NaN, NaN < nombre, etc... Ce qui est tellement lent qu'il existe des intrasecs pour faire un test qui se fout des NAN. Je me demandais donc quelle était l'utilité. En gros, le but est de faire de la détection d'errreurs ?
J'avais eu un soucis d'épaisseur de disque, c'était pour un ultra portable. Le nouveau disque était un poil plus gros et cela déformait un peu la coque plastique.
[^] # Re: Autre expérience
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Le changement de password pue du rond. Évalué à 10.
"La première sécurité est la liberté"
[^] # Re: Ecrire du code avec des flottants
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
C'est uniquement ça ? Il me semblait que cela pouvait aller bien plus loin. Par exemple, les règles d'arrondies un peu assouplie (moins/pas de garde bit).
A moins que le mode dont tu parles, c'est le fonctionnement sur x86 ?
"La première sécurité est la liberté"
[^] # Re: Quelques infos
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 1.
"La première sécurité est la liberté"
[^] # Re: Quelques infos
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
(a+b)-a
se comprend
((a+b) & 0xFFFFFFFF - a) & 0xFFFFFFFF
Or c'est différent de b & 0xFFFFFFFF selon la valeur de a et de b.
"La première sécurité est la liberté"
[^] # Re: moué
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Avec Free, tout est possible !. Évalué à 8.
"La première sécurité est la liberté"
[^] # Re: Quelques infos
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Quelques infos
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
Sinon, on semble dire la même chose. Quand il y a execution en parrallèle on ne peut plus vraiment parler d'ordre. Le flot d'instruction est déterminé par leur liaison par les registres et par les accès à la mémoire.
"La première sécurité est la liberté"
[^] # Re: Calcul par intervalle
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Quelques infos
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
a+b+c+d équivaux à (((a+b)+c)+d)
C'est à vérifier mais je suis sur à 90% que le compilo C ne doit pas y toucher.
Car a+b+c+d veut en fait dire :
trunc<32>(trunc<32>(trunc<32>(a+b)+c)+d)
Ce qui est non équivalent à :
trunc<32>(trunc<32>(a+b)+trunc<32>(c+d))
"La première sécurité est la liberté"
[^] # Re: plop again
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 1.
euh, non il me semble pas.
Le SSE2 à ajouter les doubles. SSE3 a définit des opérations binaire sur le vecteurs 128 bits. Je ne pense pas qu'il y est des opérations entières.
Le SSE2 introduit aussi des opérations flottantes scalaires.
"La première sécurité est la liberté"
[^] # Re: Calcul par intervalle
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
Le but est évidement de rafiner tout ça pour trouver un modèle propre pour Lisaac.
"La première sécurité est la liberté"
[^] # Re: plop again
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
Pour la mise au point du calcul, j'imagine pas à l'utilisation ? Sinon, je ne vois pas l'interet de faire 2x ce calcul.
Comme les processeurs ne supportent generalement pas ces dernieres (et encore parfois meme pas la division), le resultat s'obtient par une serie de calcul
C'est encore la supériorité de la fpu x87 par rapport à SSE. Le x87 contient toute la trigo en hardware, contrairement à SSE. D'ailleurs, AMD était connu pour avoir une implémentation x87 musclé par rapport au processeur Intel qui favorisait plutot le SSE. Cela se voyait dans certain tests "scientifiques".
Une etude de l'erreur est effectuee. Mais auparavant, on effectue une etude de stabilite: quel est la variation du resultat si l'on ajoute sur l'une des donnees en entree une petite valeur (epsilon).
Cela revient à une étude d'interval, non ?
Reussir a prouver l'implementation de son calcul, c'est deja pas mal. On repasse generalement plus tard pour reduire la precision.
- Je trouve l'algo
- Je prouve qu'il est stable numériquement
- Je regarde les cas bizarre par expérimentation
- si cela roule en double, j'essais de passer à la vecorisation ou au float 32 bits ?
J'ai bon ?
"La première sécurité est la liberté"
[^] # Re: Quelques infos
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 4.
J'avais fais un paquet de tests, il y a quelques années et gcc ne faisait rien du tout dans ce domaine.
Tout ceci sans parler des processeurs qui exécutent les instructions dans le désordre, bien entendu.
Sauf avec les dépendances RAW où tu ne peux rien faire du tout !
"La première sécurité est la liberté"
[^] # Re: Calcul par intervalle
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
J'imagine que cela peut arriver vite dans un 1/(a-b), avec a et b proche.
"La première sécurité est la liberté"
[^] # Re: Ecrire du code avec des flottants
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
Je peux résumé par :
"On veut de la répétabilité, et parfois on veut une idée précise de la précision." ?
Par contre, concernant les arrondis, l'utilisation de fonction explicite ou des mode de fpu influe sur quoi ? Uniquement la vitesse ? Ou il existe encore des subtilités ?
Comment utilises-t-on les modes "fast" ? En général, ces modes sont taxés de mal calculer. Je crois que l'itanium en a un. Les cartes graphiques utilisent aussi ces modes.
Si j'ai bien compris, il ne détecte pas les NaN dans le pipelines flottant pour éviter de gérer des interruptions en plein milieu. Mais si j'ai bien compris d'autres interventions, cela n'est génant que pour la detection d'errreur et non pour le fonctionnement nominal. J'ai bon ?
"La première sécurité est la liberté"
[^] # Re: plop again
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 4.
Si tu prends tout tes nombres et que tu les multiplies par 16, tu as 4 bits après la virgules.
"La première sécurité est la liberté"
[^] # Re: plop again
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
Quand est-ce qu'arrive ses nombres ? Je croyais que les fpu IEEE754 normalisait le nombre tout seul comme des grands.
"La première sécurité est la liberté"
[^] # Re: Et les bibliothèques ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 2.
Imagines n'importe quel filtre numérique.
"La première sécurité est la liberté"
[^] # Re: plop again
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 10.
"La première sécurité est la liberté"
[^] # Re: Quelques infos
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment les programmeurs écrivent du code flottant ?. Évalué à 4.
Je ne connais pas bien le domaine mais comme il existe des calculs en "entier infini", il existe aussi des calculs en flottant infini.
Je ne vois pas en quoi l'ordre change la vitesse.
Par ce que a+b+c+d sera plus lent que (a+b)+(c+d) car tu enlèves une dépendance read-after-write.
Au passage, les derniers gcc vectorisent tout seul !
Enfin, si on l'aide beaucoup beaucoup beaucoup...
Sachez que GCC ne modifient pas les calculs sur les flottants car justement l'ordre des opérandes joue énormément sur la précision du résultat. Il ne pas simplifier x*2.0/2.0 par exemple.
C'est le cas par défaut. Mais cela n'est plus vrai avec l'option --fast-math.
D'ailleurs comment choisi-t-on d'utiliser un type d'arrondi plutôt qu'un autre ?
Selon le résultat attendu ?
C'est choix par équation ou par opération ?
Les gérer ? Comment ça ? Il suffit de vérifier à la fin qu'on n'a pas de NaN, -INF ou INF je pense. Si on sait ce qu'on fait, on ne trimballe pas de NaN.
Par exemple, "<" définit tous les comportements à avoir avec NaN < NaN, NaN < nombre, etc... Ce qui est tellement lent qu'il existe des intrasecs pour faire un test qui se fout des NAN. Je me demandais donc quelle était l'utilité. En gros, le but est de faire de la détection d'errreurs ?
"La première sécurité est la liberté"
[^] # Re: Oui mais bon
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Un cluster Kerrighed de 252 coeurs basé sur un noyau Linux 2.6.20. Évalué à 5.
Est-ce que les disques dures sont aussi partagé l'est la RAM ?
Bref par rapport au autres technos, ou cela se situe-t-il ?
"La première sécurité est la liberté"
[^] # Re: facile
Posté par Nicolas Boulay (site web personnel) . En réponse au message Remplacement DD portable. Évalué à 3.
"La première sécurité est la liberté"
[^] # Re: Les ordinosaures, c'est vieux; LTSP c'est mieux.
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Vos solutions contre la fracture numérique. Évalué à 2.
Il y a peut-être moins de client finaux potentiel qu'ailleurs mais la mairie peut peut-être compenser le cout des travaux.
"La première sécurité est la liberté"
[^] # Re: Les ordinosaures, c'est vieux; LTSP c'est mieux.
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Vos solutions contre la fracture numérique. Évalué à 2.
Oula. Si tu as plus d'une dizaine de connection, sur un seul AP situé au sous sol de l'immeuble, je ne vois pas comment les ondes vont passer.
Les 2 solutions en parrallèle peuvent être fait. Le cable ethernet, c'est quand même plus fiable.
"La première sécurité est la liberté"
[^] # Re: Les ordinosaures, c'est vieux; LTSP c'est mieux.
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Vos solutions contre la fracture numérique. Évalué à 2.
D'ailleurs, est-ce qu'il serait légal d'avoir une connection internet haut débit à partager entre un immeuble ? (l'association étant responsable)
Il faut "juste" cablé l'immeuble en ethernet et avoir un peu de QoS.
"La première sécurité est la liberté"