Pregunta

Estoy tratando de ejecutar puntos de referencia NAS UPC en un clúster de nodo 32.

Funciona bien en los casos en que el tamaño del problema es pequeño. Cuando me gradúe con un tamaño de problema más grande (Clase D), obtengo este error (para MG Benchmark)

*** 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

¿Alguien puede explicar por qué está sucediendo esto, y si alguien ha visto este error antes y lo arregló?

EDITAR: Descubrí que es un problema relacionado con la memoria. Pero no puedo asignar una cantidad correcta de memoria para la aplicación en el momento de la compilación

¿Fue útil?

Solución 2

Pensé que es un problema con Benchmark que necesita más memoria de la que la había asignado durante el tiempo de compilación.

Otros consejos

Verifique un dmesg Salida: puede ser un problema fuera de memoria. O, de nuevo, puede ser algunos de ulimit -a Aplicado, por ejemplo, un tamaño de pila (el tamaño de la pila predeterminado es demasiado pequeño para algunas tareas NAS).

Si tiene líneas como "Fuera de memoria: proceso asesinado ### en dmesg Salida en cualquiera de sus máquinas: significa que su programa requirió (e intentó usar) mucha memoria, más grande de lo que su sistema operativo puede dar a la aplicación. Hay varios límites de memoria:

  1. ulimit -v - Límite de usuario para el tamaño de la memoria virtual. Comprobar todo ulimit -a límites también, pero parece que su caso no es este
  2. Puede usar no más memoria de la que tiene RAM total y todos los tamaños de intercambio (consulte con free dominio). Pero si su aplicación usa más memoria que el tamaño de la RAM y comienza a intercambiar, el rendimiento será malo (en la mayoría de los casos).
  3. Existen límites arquitectónicos de memoria máxima, permitidas para tener un solo proceso. Para los nodos de 32 bits, este límite puede ser de 1 (caso muy raro) a 2, 3, 4 GB. Incluso si su sistema de 32 bits tiene> 4 GB de memoria, por ejemplo, con el uso de PAE, ningún proceso único puede tomar> 4 GB. Una gran parte del espacio virtual de 4GB también tomado por OS (desde cientos de MB hasta GBS).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top