Lapack: Fallo de segmento en ./EIG/xeigtstz

Creado en 19 abr. 2019  ·  11Comentarios  ·  Fuente: Reference-LAPACK/lapack

Hola,

esto es con Lapack 3.8.0.

Se produce un error de segmento en xeigtstz con lapack 3.8.0 y gfortran reciente:

./EIG/xeigtstz < nep.in > znep.out 2>&1
/bin/sh: Zeile 1: 9026 Speicherzugriffsfehler (Speicherabzug geschrieben) ./EIG/xeigtstz < nep.in > znep.out 2>&1

Esto desaparece cuando el límite de pila se eleva del valor predeterminado de 8192 kb a 81920 kb (el
primer valor que probé).

Build System Testing

Todos 11 comentarios

gfortran9 marca un acceso fuera de los límites en (entre otros) TESTING/EIG/zhet21.f línea 304 (hacer un bucle en J que se ejecuta de 1 a N-1, accediendo al elemento de matriz U(1, J-1 )... Ay). Sin embargo, no estoy seguro de si esta es la causa real y única de este problema...
EDITAR: mi observación no está relacionada (y en realidad me había perdido que ya abrió el n. ° 333 para ello) xeigtstz intenta asignar alrededor de 10 MB en la pila para las pruebas NEP como ya se indicó en https://github.com/xianyi/OpenBLAS/ números/1645

configurar ulimit -s 16384 en lugar del 8192 predeterminado también solucionó este problema para mí

Mismo problema aquí #85.

La solución para este problema ha sido aumentar el límite de la pila, pero dado que se trata de una prueba, ¿la asignación del montón no sería una mejor solución?

Creo que son matrices asignables las que terminan en la pila debido a la opción 'recursiva' (requerida para la seguridad de subprocesos), pero aún no he logrado encontrar una solución que funcione.

@weslleyspereira intentará compilar solo zchkee.f sin la opción -frecursive. Por lo tanto, todos los archivos (en particular, liblapack.a) se compilarán con la opción -frecursive, pero zchkee.f se compilará sin la opción -frecursive. Creemos / esperamos que eso funcione. vamos a probar Creo que es importante compilar LAPACK con -frecursive. Ahora zchkee.f se puede compilar sin. Eso estará bien. CMake y make se verán un poco más feos. Creo que llevamos mucho tiempo esperando un nuevo conjunto de pruebas, por lo que sugerimos que lo hagamos feo por ahora y nos concentremos en un nuevo conjunto de pruebas.

Funcionó para mí siempre que no usara OpenMP, pero esto último desafortunadamente implica -frecursivo
(Puede usar filter_out en Makefile para eliminar frecursive/Mrecursive de FFLAGS, por lo que no hay mucha fealdad nueva)

Funcionó para mí siempre que no usara OpenMP, pero esto último desafortunadamente implica -frecursivo

ah Sí, eso es un problema potencial.

(Puede usar filter_out en Makefile para eliminar frecursive/Mrecursive de FFLAGS, por lo que no hay mucha fealdad nueva)

Buena idea. No tengo idea de cómo funciona filter_out en Makefile. Peor investigando. Gracias por el consejo.

PRUEBA/EIG/Makefile, después de agregar include ../../make.inc

FFLAGS := $(filter-out -frecursive -Mrecursive,$(FFLAGS))
FFLAGS_DRV := $(filter-out -frecursive -Mrecursive,$(FFLAGS_DRV))
LDFLAGS := $(filter-out -frecursive -Mrecursive,$(LDFLAGS))

para cmake sería algo como
string(REGEX REPLACE "-(fM)recursive" "" FFLAGS ${FFLAGS})
(no probado)

Gracias @martin-frbg! lo probare ahora

¿Fue útil esta página
0 / 5 - 0 calificaciones