- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello everybody,
I am trying to run a large code that I have built in Windows and Linux environments. In some stage of the run, the code must call the pardiso routine, and the goal is to completely clear the memory associated with pardiso. In other words, I am invoking pardiso using phase = 1.
I call pardiso in my Fortran code as follows:
call pardiso (pt, maxfct, mnum, mtype, -1,n1, Amat, IndexRow,Icol,ipiv,1,iparm, msglvl, rh, xvec, ierror)
IMPORTANT NOTE: the above code is part of a subroutine called resize_arrays, placed inside a source file called util_resize_sol_arrays.for.
All the parameters in the above call are properly defined/initialized etc. The code runs without any issues in a Windows build. However, when I try to run the same exact code in the Linux build (I have activated the traceback operations etc.), my code aborts during the above call to pardiso.
I get the following error messages:
======================================================================
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
VTMultiPhys 0000000000AAF123 Unknown Unknown Unknown
libpthread-2.17.s 00002AAAB27EB630 Unknown Unknown Unknown
libmkl_core.so 00002AAAADFB4AB0 mkl_serv_free Unknown Unknown
libmkl_core.so 00002AAAAF7CF9C4 mkl_pds_lp64_meti Unknown Unknown
libmkl_core.so 00002AAAAF61EA3E mkl_pds_lp64_pard Unknown Unknown
libmkl_core.so 00002AAAAFA67494 mkl_pds_lp64_pard Unknown Unknown
VTMultiPhys 00000000009EF118 resize_arrays_ 211 util_resize_sol_arrays.for
=============================================================
I have tried rebuilding with various options (using heap arrays, increasing stack size etc.), but none of them works. The strangest thing is that an earlier version of my code (which was using the SAME exact routines) can run normally in the Linux system. The only change that I have made between the versions that work and do not work, was add some parameters in a module (which is used in my subroutine, but has nothing to do with the call to pardiso where the program aborts).
I wanted to ask whether there is any explanation on what may be causing the problem to error to occur when I try to invoke pardiso. Again, as I mentioned above, the call to pardiso where the problem occurs is not meant to actually solve a system of equations; it is simply meant to release all internal memory for all matrices, that pardiso may have reserved from prior calls.
Many thanks in advance for any help/advice.
Link Copied
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page