Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1669 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Erreur d'arrondi différentes en mode Debug ou Release

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur d'arrondi différentes en mode Debug ou Release

n°365234
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 17-04-2003 à 17:03:22  profilanswer
 

Je code en C++ sur VS 6.0
 
J'ai remarqué que j'avais des erreurs d'arrondi legerement différentes (de l'ordre de 10^-15 sur des double) selon si je compile en release ou en debug ? En l'occurence, il semble que c'est le mode debug qui est le plus exact.
 
C'est pas vraiment critique mais j'aimerais bien savoir d'où vient ce binz ? Ca serait pas un truc du genre le FPU est emulé en mode debug ?
 
Merci par avance.


Message édité par Tetragrammaton IHVH le 17-04-2003 à 17:09:08

---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
mood
Publicité
Posté le 17-04-2003 à 17:03:22  profilanswer
 

n°365273
theshockwa​ve
I work at a firm named Koslow
Posté le 17-04-2003 à 17:14:52  profilanswer
 

:heink:
 
étrange en effet ...
 
mode "BOOLAY" ON
Ca doit être à cause des asserts ... :D
mode "BOOLAY" OFF
 
:lol:


---------------
last.fm
n°365284
chrisbk
-
Posté le 17-04-2003 à 17:18:26  profilanswer
 

Tetragrammaton IHVH a écrit :

Je code en C++ sur VS 6.0
 
J'ai remarqué que j'avais des erreurs d'arrondi legerement différentes (de l'ordre de 10^-15 sur des double) selon si je compile en release ou en debug ? En l'occurence, il semble que c'est le mode debug qui est le plus exact.
 
C'est pas vraiment critique mais j'aimerais bien savoir d'où vient ce binz ? Ca serait pas un truc du genre le FPU est emulé en mode debug ?
 
Merci par avance.


 
Non, fait un listing asm tu verras que la fpu est bien utilisée
par contre, dans VC7 y'a un truc a propos de la FPU dans les reglages du projet, regarde voir si t'as ca dans ton vc6
 
 

n°365295
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 17-04-2003 à 17:22:02  profilanswer
 

chrisbk a écrit :


 
Non, fait un listing asm tu verras que la fpu est bien utilisée
par contre, dans VC7 y'a un truc a propos de la FPU dans les reglages du projet, regarde voir si t'as ca dans ton vc6
 


 
Je vais vérifier. Au fait, je précise que j'ai bien tracé chaque nombre pour voir d'où venait le stress. Je vais essayer de faire un petit prog pour mettre en valeur ce problème.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°365299
chrisbk
-
Posté le 17-04-2003 à 17:23:32  profilanswer
 

essaye en virant la global optimisation pour voir, parait que ca peut generer des soucis (de mémoire & pas vérifié)

n°365332
bjone
Insert booze to continue
Posté le 17-04-2003 à 17:34:49  profilanswer
 

à priori je dirais qu'en debug, le fpu est configuré pour une précision interne 80 bits, alors qu'en release le fpu est ptet uniquement en 64 bits (ou 56 je sais pu  :cry: )

n°365338
bjone
Insert booze to continue
Posté le 17-04-2003 à 17:37:38  profilanswer
 

en fait deux choses peuvent influencer la consistance des calculs:
 
1) le mode interne: 80/64/32....
 
2) le flux de code: forcément plus le code passe par des registres, si le fpu est mode 80 bits par exemple, plus la précision sera grande car on passera moins par des float/double de ton code en C/C++.
 
à priori je dirais qu'en DEBUG, la précision interne est la plus grande, alors qu'en RELEASE la précision est plus basse, mais le flux utilise "mieux" les registres...  
 
donc désolé d'avoir complexisifé la chose :/

n°365344
theshockwa​ve
I work at a firm named Koslow
Posté le 17-04-2003 à 17:39:00  profilanswer
 

J'ai du mal à voir quel intérêt ca aurait de changer la précision en mode debug ... (attention, je ne dis pas que ce n'est pas ca ... Je dis juste que ce serait vraiment surprenant ...)
 
Ce que propose chrisbk me parait plus plausible ... Une option de compilation qui engendrerait une perte de précision me semble être une cause plus appropriée aux conséquences observées ...


---------------
last.fm
n°365351
theshockwa​ve
I work at a firm named Koslow
Posté le 17-04-2003 à 17:40:39  profilanswer
 

BJOne a écrit :

en fait deux choses peuvent influencer la consistance des calculs:
 
1) le mode interne: 80/64/32....
 
2) le flux de code: forcément plus le code passe par des registres, si le fpu est mode 80 bits par exemple, plus la précision sera grande car on passera moins par des float/double de ton code en C/C++.
 
à priori je dirais qu'en DEBUG, la précision interne est la plus grande, alors qu'en RELEASE la précision est plus basse, mais le flux utilise "mieux" les registres...  
 
donc désolé d'avoir complexisifé la chose :/


ok ... Je retire ce que je viens d'écrire ... :D


---------------
last.fm
n°365357
bjone
Insert booze to continue
Posté le 17-04-2003 à 17:41:48  profilanswer
 

bah je dit ça, mais quand tu est mode "standard" de compilation ça reste du fpu87 en mode par défaut donc problablement 64 ou 80 bits.
en mode release, quand tu fous toutes les optimisations à donf, le compilo va générer du code fpu ciblé pour le ppro, avec un mode de précision "balancé", une utilisation max des registres, et des réciproques là ou c'est rentable ( "fmul 1/valeur" où "1/valeur" est précalculé, au lieu de "fdiv valeur" par exemple)....

mood
Publicité
Posté le 17-04-2003 à 17:41:48  profilanswer
 

n°365360
chrisbk
-
Posté le 17-04-2003 à 17:44:16  profilanswer
 

BJOne a écrit :

bah je dit ça, mais quand tu est mode "standard" de compilation ça reste du fpu87 en mode par défaut donc problablement 64 ou 80 bits.
en mode release, quand tu fous toutes les optimisations à donf, le compilo va générer du code fpu ciblé pour le ppro, avec un mode de précision "balancé", une utilisation max des registres, et des réciproques là ou c'est rentable ( "fmul 1/valeur" où "1/valeur" est précalculé, au lieu de "fdiv valeur" par exemple)....


 
tu crois qu'il se permet ce genre de chose ? Si oui doit avoir moyen de changer ca (sous VC7 c'est "improve floating point consistency", ca vient de me revenir)
 
 

n°365362
bjone
Insert booze to continue
Posté le 17-04-2003 à 17:44:23  profilanswer
 

en fait le fpu est utilisé comme les pipelines à pixels des cartes graphiques ou ta texture est en S3TC en 4bits/pixel, puis étendue dans le pipeline en 32/64/96/128bpp (entier ou flottant), puis ramené une fois dans le framebuffer en 16/32/64/96/128, puis attaqué par le ramdac en 16 ou 32 8:8:8:8 ou 2:10:10:10 :D
 
tout ça de manière "transparente" au programmeur/utilisateur...

n°365363
bjone
Insert booze to continue
Posté le 17-04-2003 à 17:45:40  profilanswer
 

chrisbk a écrit :


 
tu crois qu'il se permet ce genre de chose ? Si oui doit avoir moyen de changer ca (sous VC7 c'est "improve floating point consistency", ca vient de me revenir)
 


 
bin ché pas c'est un exemple, mais je sais que j'ai déja vu passer des options comme ça...
 
ce genre de subtilité c'est le watcom qui me les a jetées au visage :D

n°365368
gatorette
Posté le 17-04-2003 à 17:49:50  profilanswer
 

Sous VC++ 6.0, tu as l'option "Improve Float Consistency" dans les optimisations. Je n'y connais rien, mais vous pouvez aller voir ce lien.


---------------
each day I don't die is cheating
n°365656
LeGreg
Posté le 17-04-2003 à 21:03:17  profilanswer
 

peut-etre qu'il reordonne simplement les instructions
en release pour etre plus efficace d'ou les differences constatees.
 
LeGreg


---------------
voxel terrain render engine | animation mentor

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Erreur d'arrondi différentes en mode Debug ou Release

 

Sujets relatifs
Erreur d'execution 94 avec MS VB ==> besoin aide requete SQLLangages essentiels, à la "mode"?
erreur d'ouverture de base accessErreur lors de l'execution d'un programme en Java
Je ne comprends pas cette erreurSQL ORACLE Erreur: "Impossible d'étendre la table MACHIN.CHOSE de 8 da
[PHP]chtite erreur avec un regExperreur lorsque vérification d'une page html sur w3c.org
Erreur sur ma page perso...ecriture reecriture fichier en mode binaire
Plus de sujets relatifs à : Erreur d'arrondi différentes en mode Debug ou Release


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR