[architecture] différences 32-64 bit
Char Snipeur
Messages postés
10112
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voila mon souci. J'ai un logiciel scientifique écri en C++ et fortran77, il est lourd (1000 fichiers environ) et donc difficilement analysable.
Je compile ce code en deux version : 32 bit grace à l'option -m32 de gcc, et en 64 bit grace à l'option -m64.
Je lance ces deux programme, et j'obtiens deux résultats différents.
Ma question est : pourquoi ??
Le programme n'utilise que des int et des double qui ont la même taille en 32 et 64 bit. D'après vous qu'est-ce qui mêne à cette différence alors qu'a priori la précision est la même.
Merci de m'aider si vous avez des piste.
Salutation !
Quand on sait pas, on touche pas !JBT
Char Snipeur
Voila mon souci. J'ai un logiciel scientifique écri en C++ et fortran77, il est lourd (1000 fichiers environ) et donc difficilement analysable.
Je compile ce code en deux version : 32 bit grace à l'option -m32 de gcc, et en 64 bit grace à l'option -m64.
Je lance ces deux programme, et j'obtiens deux résultats différents.
Ma question est : pourquoi ??
Le programme n'utilise que des int et des double qui ont la même taille en 32 et 64 bit. D'après vous qu'est-ce qui mêne à cette différence alors qu'a priori la précision est la même.
Merci de m'aider si vous avez des piste.
Salutation !
Quand on sait pas, on touche pas !JBT
Char Snipeur
A voir également:
- [architecture] différences 32-64 bit
- Winrar 64 bit - Télécharger - Compression & Décompression
- Power iso 32 bit - Télécharger - Gravure
- 32 bits - Guide
- Cle windows 10 professional 64 bit gratuit - Guide
- Format factory 64 bit - Télécharger - Conversion & Codecs
14 réponses
Ya pas des types long? Parce qu'ils varient entre 32 et 64:
https://fr.wikiversity.org/wiki/Langage_C%2B%2B/Types
https://fr.wikiversity.org/wiki/Langage_C%2B%2B/Types
Non, justement, j'ai remarqué que c'était les seuls type qui variaient entre 32 et 64, et pas de type long (ni long int, ni long double)
malheureusement, non plus...
les real*8 et les real*4 ont toujours la même taille, semblerai-til.
Je n'arrive pas à produire une diffrence de calcul à partir d'un calcul simple.
les real*8 et les real*4 ont toujours la même taille, semblerai-til.
Je n'arrive pas à produire une diffrence de calcul à partir d'un calcul simple.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
L'idéal serait de localiser l'endoit dans le code qui coince... Je sais bien que c'est plus facile à dire qu'à faire :-)
Le problème, c'est que ça coince pas, les résultats sont juste différents.
La première différence visible se produit environ au 200éme pas de temps, mais si ça se trouve il y a des différence depuis bien avant.
La première différence visible se produit environ au 200éme pas de temps, mais si ça se trouve il y a des différence depuis bien avant.
Je ne pourrais pas t'aider... Il faudrait au moins localiser la zone qui coince dans la source.
Donc mettre des printf à différents endroits, ou sortir le debuggeur...
Donc mettre des printf à différents endroits, ou sortir le debuggeur...
Sortir le debugueru, je veux bien, mais l'arreter sur quel critère ?
quand au printf... il y a tellement de variables différentes ! En fesant un maillage avec une seul maille, peut être que ça simplifierai le problème avec seulement une grosse centaines de variables à tester.
En fait, je pensais que quelqu'un aurait une réponse un peu théorique sur les différences entre 32 et 64
quand au printf... il y a tellement de variables différentes ! En fesant un maillage avec une seul maille, peut être que ça simplifierai le problème avec seulement une grosse centaines de variables à tester.
En fait, je pensais que quelqu'un aurait une réponse un peu théorique sur les différences entre 32 et 64
Ben à part ça je ne vois pas.
Les différences théoriques ne devraient pas se voir tant qu'on continue d'utiliser des variables 32 bits.
Tu utilises des doubles?
Peut être que les nombres flottaants 64 bits ne sont pas traités de la même façon.
Les différences théoriques ne devraient pas se voir tant qu'on continue d'utiliser des variables 32 bits.
Tu utilises des doubles?
Peut être que les nombres flottaants 64 bits ne sont pas traités de la même façon.
Oui, 8 octets.
Mais je pense (sans être sûr) que les doubles sur les proc 32 bits sont séparés sur 2 registres puis les opérations se font avec du code spécifique fourni par ton système ou compilateur... C'est du moins comme ça que ça se passe pour les entiers 64 sur processeur 32 (les types long long).
Sur 64, ça se fait à priori en une instruction processeur.
Et ce qu'il y aurait une différence de précision entre les deux?
Mais je pense (sans être sûr) que les doubles sur les proc 32 bits sont séparés sur 2 registres puis les opérations se font avec du code spécifique fourni par ton système ou compilateur... C'est du moins comme ça que ça se passe pour les entiers 64 sur processeur 32 (les types long long).
Sur 64, ça se fait à priori en une instruction processeur.
Et ce qu'il y aurait une différence de précision entre les deux?
Je m'attend aussi à une différence de ce genre. Il est clair que si il y a un calcul sur deux registres, puis une opération spécifique, ça peut expliqué la différence.
Il est possible que dans certains cas lors d'une opération sur les doubles le collage des registres 32 bits entrainent un arrondi ou la suppresion d'un bit.
Je me galère pour trouver de la doc à ce sujet.
Il est possible que dans certains cas lors d'une opération sur les doubles le collage des registres 32 bits entrainent un arrondi ou la suppresion d'un bit.
Je me galère pour trouver de la doc à ce sujet.
Salut a tous
Je me pose une question?
Je tourne sur Xp Pro Coccinelle 3.5 . Et des amis me disent de passer sur Vista 64 Bits
Voila ma configuration :
Intel dual Core 6300 2 GHZ
Carte mere Asus P5B Deluxe
Carte Video Ge Force 7300 GS et 2G de RAM
Quand pense vous ?
Merci d'eclairer ma lanterne.
Je me pose une question?
Je tourne sur Xp Pro Coccinelle 3.5 . Et des amis me disent de passer sur Vista 64 Bits
Voila ma configuration :
Intel dual Core 6300 2 GHZ
Carte mere Asus P5B Deluxe
Carte Video Ge Force 7300 GS et 2G de RAM
Quand pense vous ?
Merci d'eclairer ma lanterne.
Bonjour,
Ceci est à vérifier bien sûr mais je pense que tu vas te faire chier car tous tes divers devront être signés et des fabriquants tels que NVidia par exemple ne le font pas forcément... Il y a peut-être un autre débat à ouvrir: un dual core 32 bits peut comprendre du 64 bits mais le fait-il aussi bien qu'un vrai processeur 64 bits ?
M.
Ceci est à vérifier bien sûr mais je pense que tu vas te faire chier car tous tes divers devront être signés et des fabriquants tels que NVidia par exemple ne le font pas forcément... Il y a peut-être un autre débat à ouvrir: un dual core 32 bits peut comprendre du 64 bits mais le fait-il aussi bien qu'un vrai processeur 64 bits ?
M.