conda-forge用のlapack3.9.1をビルドしようとすると(ここを参照)、ビルド後にctest --output-on-failure -E "x*cblat*"
新しいエラーが発生します。
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
ビルドはminGWを使用して、おおまかに次のように実行されます(詳細はこちら)。
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
3.9.1は、以前のバージョンと比較してxlintstzのスタック要件が大幅に「削減」されると予想されるため興味深いです(そして、unixoidプラットフォームでは間違いなくあります)
申し訳ありませんが、私が考えていた変更(#492)は、xlintstzではなくxeigtstzに影響しました
はい...#492と同様の修正でこの問題が解決すると思います。 どちらもスタックオーバーフローに関連しています。
#492を見ましたが、ペイグレードを少し上回っています... https://github.com/Reference-LAPACK/lapack/pull/492/commits/df02000eedbda3f38e305af1290313e5b2a2b541という意味ですか
最初に、スタックサイズをulimit -s unlimited
増やして、問題がまだあるかどうかを確認することをお勧めします。 やってみませんか? これが機能する場合は、#492で適用したのと同じソリューションを試すことができます。
mingwを使用するWindowsでは、コンパイル/リンク時にスタックサイズを調整する必要があると思います(-Wl、-stack、2097152以上)。 dumpbin /headers
ようなものを使用して、exeのデフォルト値を取得できる可能性があります。
ヒント@ martin-frbgに感謝します。確かに、 https://github.com/conda-forge/lapack-feedstock/pull/51/commits/3835a4de851f90555b5a6ce6bdd3e6d66b57e675はWindowsの障害を解決します。
それが機能することを知ってうれしいです-しかし、私たちはまだ#492からソリューションをコピーしたいと思うかもしれません(私はすでにzchkaa.fを変換しましたが、新しいコードで最小uiimitをまだ決定していません)
最も参考になるコメント
mingwを使用するWindowsでは、コンパイル/リンク時にスタックサイズを調整する必要があると思います(-Wl、-stack、2097152以上)。
dumpbin /headers
ようなものを使用して、exeのデフォルト値を取得できる可能性があります。