- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I have some question about pardiso usage in MKL library 2023.0.0.
I want to use pardiso to solve a linear equation Ax=b.
My scenario is solve the equations many times but with A not changed or (slightly change), b changed each time, I read the mkl document about low rank update usage and still have some questions.
1. The doc said when use low rank update, iparm[27] should be 0, that is use double precision, but I want to use single. Does it mean I cannot use low rank update?
2. If I call pardiso phase 1 and phase 2 once (the matrix is not changed, but right hand b changed), and call phase 3 many times without release the memory (phase -1), will the memory consumption increased continuously, or is there any method to release the memory in phase 3 but keep the result produced in phase 1 and phase 2.
My matrix size is about 700,000 x 700,000, 0.1 percentage of non-zero element.
Looking forward to your early reply.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zhang,
Thanks for posting in Intel communities.
Low-rank update cannot be used in combination with a user-supplied permutation vector - in other words, you must use the default values of iparm[4] = 0, iparm[30] = 0, and iparm[35] = 0). Additionally, iparm[3], iparm[5], iparm[27], iparm[36], iparm[55], and iparm[59] must all be set to the default value of 0.
We will get back to you soon regarding the iparm[27] which must be set to 0 which corresponds to arrays presented in double precision.
Best Regards,
Shanmukh.SS
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Zhang,
The doc said when use low rank update, iparm[27] should be 0, that is use double precision, but I want to use single. Does it mean I cannot use low rank update?
>> Yes, as iparm[27] must be set to 0 to use low rank updates, It is recommended to use the double-precision and single precision could not be used for the mentioned size.
During Phase 1 and Phase 2, matrix A undergoes both symbolic and numerical factorization processes. As your matrix A is not changing, you only need to perform Phase 1 and Phase 2 once as long as the matrix's structure remains the same. If you are changing the right-hand side vector b and not changing the matrix A, you can reuse the numerical factorization obtained from Phase 2 as this could save a potential computation time.
To release memory occupied by the factorization, you can use Phase -1. This is the deallocation phase, and it releases the memory associated with the symbolic and numerical factorizations.
As per your matrix size, it is advised to
- Perform Phase 1 and Phase 2 once to compute the factorization.
- For each set of changed right-hand side vectors b, use Phase 3 to solve without re-running Phase 1 and Phase 2.
- After solving with all required b vectors, use Phase -1 to release memory if needed.
Best Regards,
Shanmukh.SS
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
A gentle reminder:
Has the information provided helped? Could you please let us know if you have any updates regarding your issue?
Best Regards,
Shanmukh.SS
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
A gentle reminder:
Has the information provided helped? Could you please let us know if you have any updates regarding your issue?
Best Regards,
Shanmukh.SS
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page