2010-06-10 24 views
0

J'ai un programme MPI que je développe sur un ordinateur local, mais qui doit fonctionner sur une machine distante. J'ai utilisé clock() pour mesurer le temps, mais après avoir découvert qu'il ne fonctionne pas assez bien sur la machine distante (en raison d'une architecture complètement différente), j'ai remplacé quelques appels par clock() avec MPI_Wtime(), ce qui a donné les résultats requis. Le programme fonctionne toujours sur les machines locales et distantes.Crash instantané après le remplacement des appels à clock() avec MPI_Wtime()

Cependant, je suis allé simplement et remplacé tous les autres appels à clock() avec MPI_Wtime(), et maintenant lancer le programme sur la machine locale provoque immédiatement les processus à arrêter avec le code de sortie -1073741819. Même si je mets un cout dans la toute première ligne de , il n'y a pas de sortie, donc je suis à peu près sûr que ce n'est pas un défaut de programmation de ma part, mais je n'ai aucune idée de ce qui ne va pas.

Comment les modifications du code source peuvent-elles provoquer l'échec d'un programme avant l'exécution du code modifié (ou de tout autre code)?

+0

Avez-vous appelé MPI_Init avant votre premier appel à MPI_Wtime? – fmark

+0

Vous n'avez pas appelé MPI_Wtime avant MPI_Init? –

+0

Essayez de faire une copie du programme aussi simple que possible tout en affichant le crash. Ensuite, postez votre code ici. – fmark

Répondre

4

Appelez-vous MPI_Wtime() à partir du constructeur d'un objet statique? Ceux-ci s'exécutent avant .

+0

Oui, c'était tout. – suszterpatt

0

Est-ce que ce cout a été vidé par un manipulateur 'endl' ou 'flush'? Si ce n'est pas le cas, le programme a peut-être planté après mais vous ne le sauriez jamais parce que la sortie tamponnée serait perdue.

+0

C'était, avec un 'endl'. – suszterpatt