Al intentar compilar lapack 3.9.1 para conda-forge (ver aquí ), hay un nuevo error para ctest --output-on-failure -E "x*cblat*"
después de compilar:
81/108 Test #81: LAPACK-xlintstz_ztest_in .........***Failed 0.06 sec
Running: D:/bld/blas-split_1620498704464/work/build/bin/xlintstz.exe
ARGS= OUTPUT_FILE;D:/bld/blas-split_1620498704464/work/build/TESTING/ztest.out;ERROR_FILE;D:/bld/blas-split_1620498704464/work/build/TESTING/ztest.out.err;INPUT_FILE;D:/bld/blas-split_1620498704464/work/TESTING/ztest.in
Test OUTPUT:
Test ERROR:
CMake Error at D:/bld/blas-split_1620498704464/work/TESTING/runtest.cmake:36 (message):
Test D:/bld/blas-split_1620498704464/work/build/bin/xlintstz.exe returned
Stack overflow
La compilación se realiza con minGW, aproximadamente de la siguiente manera (más detalles aquí ):
set "CC=gcc.exe"
set "CXX=g++.exe"
set "FC=gfortran.exe"
cmake -G "MinGW Makefiles" ^
-DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
-DBUILD_SHARED_LIBS=yes ^
-DCMAKE_BUILD_TYPE=Release ^
-DBUILD_TESTING=ON ^
-DLAPACKE=ON ^
-DCBLAS=ON ^
-DBUILD_DEPRECATED=ON ^
-Wno-dev ..
mingw32-make -j%CPU_COUNT%
mingw32-make install
if %ERRORLEVEL% NEQ 0 exit 1
Interesante, ya que se espera que 3.9.1 haya _reducido_ considerablemente los requisitos de pila para xlintstz en comparación con versiones anteriores (y definitivamente lo ha hecho en plataformas unixoid)
lo siento, los cambios en los que estaba pensando (# 492) afectaron a xeigtstz en lugar de xlintstz
Sí ... Yo diría que una solución similar a la # 492 resolverá este problema. Ambos se relacionan con el desbordamiento de la pila.
He mirado el n. ° 492 pero se ve un poco por encima de mi calificación de pago ... ¿Quieres decir que (algo parecido a) https://github.com/Reference-LAPACK/lapack/pull/492/commits/df02000eedbda3f38e305af1290313e5b2a2b541 debe hacerse para las pruebas LIN?
Al principio, le sugiero que aumente el tamaño de la pila ulimit -s unlimited
y vea si el problema persiste. ¿Puedes intentarlo? Si esto funciona, podemos probar la misma solución aplicada en # 492.
En Windows con mingw, creo que el tamaño de la pila debería ajustarse en el momento de la compilación / enlace (-Wl, - stack, 2097152 o superior). Probablemente se pueda obtener el valor predeterminado en el exe con algo como dumpbin /headers
.
Muchas gracias por el consejo @ martin-frbg, de hecho, https://github.com/conda-forge/lapack-feedstock/pull/51/commits/3835a4de851f90555b5a6ce6bdd3e6d66b57e675 resuelve el fallo en Windows.
Me alegra saber que funciona, pero supongo que es posible que queramos copiar la solución de # 492 (ya he convertido zchkaa.f, pero aún no he determinado el límite mínimo de uiimit con el nuevo código)
Comentario más útil
En Windows con mingw, creo que el tamaño de la pila debería ajustarse en el momento de la compilación / enlace (-Wl, - stack, 2097152 o superior). Probablemente se pueda obtener el valor predeterminado en el exe con algo como
dumpbin /headers
.