Question

Je suis en train de lancer NAS-UPC de repères sur une 32 nœud de cluster.

Il fonctionne très bien dans les cas où le problème de taille est petite .Quand je sors d'un gros problème de taille (CLASSE D), j'ai cette erreur (par MG de référence)

*** Caught a fatal signal: SIGBUS(7) on node 2/32
 p4_error: latest msg from perror: Bad file descriptor
*** Caught a signal: SIGPIPE(13) on node 0/32
    p4_error: latest msg from perror: Bad file descriptor
   p4_error: latest msg from perror: Bad file descriptor

*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** Caught a signal: SIGPIPE(13) on node 27/32
*** Caught a signal: SIGPIPE(13) on node 20/32
*** Caught a signal: SIGPIPE(13) on node 21/32
    p4_error: latest msg from perror: Bad file descriptor
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** Caught a signal: SIGPIPE(13) on node 16/32
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit

Quelqu'un peut-il expliquer pourquoi ce qui se passe , Et si quelqu'un a vu cette erreur avant et il fixe ?

EDIT :Compris c'est une mémoire liée au problème .Mais je suis incapable de allott bonne quantité de mémoire pour une application au moment de la compilation

Était-ce utile?

La solution 2

J'ai pensé que c'était un problème avec le benchmark nécessitant plus de mémoire que je ne l'avais alloué lors de la compilation.

Autres conseils

De vérifier dmesg sortie - il peut être un problème de mémoire.Ou encore, il peut être un peu de ulimit -a atteint, par exempleun stacksize (par défaut la taille de la pile est trop faible pour certains NAS tâches).

Si vous avez des lignes comme "Out of Memory:Tué processus ###" dans dmesg sortie sur l'un de vos machines - cela signifie que votre programme requis (et essayé d'utiliser beaucoup de mémoire, plus grand que votre système d'exploitation peut donner à la demande.Il y a plusieurs limites de la mémoire:

  1. ulimit -v - limite de l'utilisateur pour la taille de la mémoire virtuelle.Vérifiez tous les ulimit -a également les limites, mais il semble que votre cas n'est-ce pas
  2. Vous pouvez utiliser pas plus de mémoire que vous avez de mémoire RAM totale et tous les swap tailles (vérifier avec free de commande).Mais si votre application utilise plus de mémoire que la taille de la RAM, et commencer à faire de la permutation de - la performance sera mauvais (dans la plupart des cas).
  3. Il y a architecturale des limites de la mémoire maximale admissibles à un seul processus.Pour 32-bits des nœuds de cette limite peut être de 1(cas très rare) à 2, 3, 4 GB.Même si votre système 32 bits ont >4 GO de mémoire, par exempleavec l'aide de PAE - pas un seul processus peut prendre plus de 4 Go.Une grande partie de 4 go espace virtuel aussi pris par l'OS (à partir de centaines de MO à Sgb).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top