- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello!
We are trying to solve a set of problems A*x = b with different but structurally identical symmetric positive definite matrices A and different vectors b. To accelerate the solution we would like to make symbolic analisys (phase 11) separately.
So the routine is the following
1) initialisation
2) phase 11
3) iteration one (phase 23)
4) update matrix A
5) iteration two (phase 23)
etc.
Now, we are faced with the problem, that if when matrix A changes its location in memory between iterations (delete old matrix, reallocate memory, create new matrix, provide correct pointers to pardiso), the solution crashes with "Exception thrown at 0x00007FFFE59FF4C3 (mkl_core.2.dll) in XXXX: Access violation reading location 0x000000006ea6a410."
If we change only the values, remaining the location of matrix unchanged, the solution continues correctly.
The problem occurs with IntelMKL-2022.2.0. Former with much older version of MKL (unfotunately I can't say which one) we didn't have this issue.
Coud you please give me advice how to avoid this behaviour, if possible?
Thank you
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Tatiana,
Thanks for posting in Intel Communities.
Could you please try running your code with the latest Intel MKL(2023.0.0) and let us know if you are still facing any issues?
If the issue persists, please let us know the OS details, and Visual Studio project properties(if Windows OS was used).
In addition, Could you please get back to us with the sample reproducer and the steps to reproduce (if any) it helps us reproduce the issue on our side and assist you further?
Thanks & Regards,
Varsha
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Tatiana, there is no support for what you are attempting to do. If you look again at the documentation, you will see that the matrix descriptor arrays, in particular the locations of the nonzero entries, should be preserved between calls to Pardiso. Changing the matrix, or moving the matrix, as you want to do, invalidates all the memory pointers set up internally in Pardiso in the analysis phase. In your Step 4, you are only allowed to change the values of the matrix elements, not the size and location of the matrix or the pattern of the nonzero entries.
My suggestion is to rethink how the computation is being arranged. Is it really necessary to move the matrix between calls?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you.
We´ve already done it without reallocation between calls.
I'm just wondering that it has worked in older versions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If you can provide a test case (preferably with a short but complete program) where it worked with reallocation between calls, and name the older compiler and versions, it would help; I am interested in trying to understand why it worked!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We have not heard back from you. Could you please provide us with an update on your issue?
Thanks & Regards,
Varsha
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We have not heard back from you. This thread will no longer be monitored by Intel. If you need additional information, please start a new thread.
Thanks & Regards,
Varsha
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page