En essayant de compiler lapack 3.9.1 pour conda-forge (voir ici ), il y a une nouvelle erreur pour ctest --output-on-failure -E "x*cblat*"
après la compilation :
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 construction se fait avec minGW, à peu près comme suit (plus de détails ici ) :
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
Intéressant car la 3.9.1 devrait avoir considérablement _réduit_ les exigences de pile pour xlintstz par rapport aux versions précédentes. (Et c'est certainement le cas sur les plates-formes unixoid)
désolé, les changements auxquels je pensais (#492) ont affecté xeigtstz plutôt que xlintstz
Oui... Je dirais qu'un correctif similaire au n° 492 résoudra ce problème. Les deux concernent le débordement de la pile.
J'ai regardé le n° 492 mais il semble un peu au-dessus de mon niveau de rémunération... Voulez-vous dire que (quelque chose du genre) https://github.com/Reference-LAPACK/lapack/pull/492/commits/df02000eedbda3f38e305af1290313e5b2a2b541 doit être fait pour les tests LIN ?
Au début, je vous suggère d'augmenter la taille ulimit -s unlimited
la pile
Sous Windows avec mingw, je pense que la taille de la pile devrait être ajustée au moment de la compilation/liaison (-Wl,--stack,2097152 ou plus). On peut probablement obtenir la valeur par défaut dans l'exe avec quelque chose comme dumpbin /headers
.
Merci beaucoup pour l'astuce @martin-frbg, en effet, https://github.com/conda-forge/lapack-feedstock/pull/51/commits/3835a4de851f90555b5a6ce6bdd3e6d66b57e675 résout l'échec sur windows.
Heureux de savoir que cela fonctionne - mais je suppose que nous pouvons toujours vouloir copier la solution de #492 (j'ai déjà converti zchkaa.f mais je n'ai pas encore déterminé l'uiimit minimum avec le nouveau code)
Commentaire le plus utile
Sous Windows avec mingw, je pense que la taille de la pile devrait être ajustée au moment de la compilation/liaison (-Wl,--stack,2097152 ou plus). On peut probablement obtenir la valeur par défaut dans l'exe avec quelque chose comme
dumpbin /headers
.