msys2 / MINGW-packages

Package scripts for MinGW-w64 targets to build under MSYS2.
https://packages.msys2.org
BSD 3-Clause "New" or "Revised" License
2.3k stars 1.23k forks source link

mingw-w64-x86_64-mumps problem: writes NaN into the solution in solve phase if out-of-core mode is used #22599

Open ChessMastery opened 6 days ago

ChessMastery commented 6 days ago

Description / Steps to reproduce the issue

Here is my source code in C++ to call MUMPS attached in the text file (can be easily modified to C language by replacing "static_cast" by "(type)"). main_cpp.txt When applying out-of-core (or OOC) mode by setting id.ICNTL(22)=1, the solver writes NaNs into the solution vector in the solve phase (id.job=3). In-core (or IC) mode works fine, lets say on matrix cfd2 from SuiteSparse collection it computes solution with 1e-13 relative residual. The residual after factorization phase (id.job = 2) is same in IC mode and OOC mode, that is why I think the problem may be in solve phase (matrix factorization may be wrong too though, I have not looked on internal matrix factors yet). Exactly the same main function code (with slightly different #include headers) works fine in OOC mode with MPI-free MUMPS compiled from this repo https://github.com/scivision/mumps with cmake, ninja and Intel LLVM C++ and Fortran compilers (Intel MKL BLAS/LAPACK used as well). I use static library libmumps-dto.dll.a with about 7 necessary dlls, though I tried copying all the dlls from mingw64/bin into executable file directory and things did not change. Small examples with matrix size=2 or 10 works fine with id.ICNTL(22)=1, but I don't think OOC features are really used there. Can someone please try to use OOC mode with mingw-w64-x86_64-mumps and matrix size big enough (e. g. n=45000 at least)? I also provide a SuiteSparse collection file reader that converts symmetric real matrices into CSR format used in my call-mumps code: SuiteSparseHB_to_CSR_sym_cpp.txt

Expected behavior

Expected behaviour: mingw-w64-x86_64-mumps should compute solution with relative residual about 1e-13 for cfd2 matrix from SuiteSparse collection (it fails on other test cases as well except small matrices n=2 and n=10 I tested).

Actual behavior

mingw-w64-x86_64-mumps writes NaNs into the solution vector on solve phase.

Verification

Windows Version

Windows 10 Pro 22H2

MINGW environments affected

Are you willing to submit a PR?

No response

ChessMastery commented 6 days ago

I saw that no files are written to the temporary out-of-core directory when using mingw-mumps and when using intel-compiled-mumps they are written. So it may be related with different file path slashes syntax in Unix and Windows.