Lapack: Windows 上 3.9.1 下 `xlintstz_ztest_in` 的 Stackoverflow

创建于 2021-05-08  ·  8评论  ·  资料来源: Reference-LAPACK/lapack

在尝试为 conda-forge 构建 lapack 3.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

最有用的评论

在带有 mingw 的 Windows 上,我认为需要在编译/链接时调整堆栈大小(-Wl,--stack,2097152 或更大)。 人们可能可以使用dumpbin /headers类的东西获得 exe 中的默认值。

所有8条评论

有趣的是,与早期版本相比,3.9.1 预计将大大减少 xlintstz 的堆栈要求。(它在 unixoid 平台上肯定有)

抱歉,我正在考虑的更改 (#492) 影响了 xeigtstz 而不是 xlintstz

是的...我想说一个类似于#492 的修复应该可以解决这个问题。 两者都与堆栈溢出有关。

我看过#492,但它看起来有点高于我的工资......你的意思是(类似于) https://github.com/Reference-LAPACK/lapack/pull/492/commits/df02000eedbda3f38e305af1290313e5b2a2b541需要为 LIN 测试做些什么?

首先,我建议您增加堆栈大小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 )

此页面是否有帮助?
0 / 5 - 0 等级