Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Intel Community
- Software
- Software Development SDKs and Libraries
- Intel® oneAPI Math Kernel Library
- Pardiso Partial Solve

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

apocalx

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-17-2010
08:38 PM

81 Views

Pardiso Partial Solve

I have Intel MKL version 10.3

Here is my problem :

I have a 1 000 000 x 1 000 000 matrice with 7 non zeros values per row. I want to calculate Ax=b 1 000 000 times.

For the first solve, my b is : [ 1 0 0 0 ... 0 ] and I only want X1 (first element of solution vector).

For the second solve, my b is : [ 0 1 0 0 ... 0 ] and I only want X2.

For the third solve, my b is : [ 0 0 1 0 ... 0 ] and I only want X3.

...

For the 1 000 000th solve, my b is : [ 0 0 0 0 ... 1 ] and I only want X1000000.

In resuming, in the solution vector, I always want only non zero element of my b vector and my b vector only have 1 non zero element.

For that, the partial solve could be a good solution but the problem was I need to recalculate ordering and factorisation for each solve because my b vector change and that take a lot of time (4 seconds each time).

So, it take more time with 1 000 000 partial solve than 1 000 000 complete solve without recalculate ordering and factorisation.

Do you have a idea how I can do that (with or without parital solve) in less time because right now it take me about 20 hours for all Ax=b (without parital solve and more time with partial solve)

I'm work on a single computer with 4 cores.

Thanks a lot

Link Copied

3 Replies

Alexander_K_Intel2

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-17-2010
09:37 PM

81 Views

Hi,

I can suggest only one way to improve your solver: call reordering and factorization once and after call to solving step with several rhs several times (combine several solving step for each call, for example 100 rhs in each call then you need to call solving step 10000 times)

With best regards,

Alexander Kalinkin

apocalx

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-18-2010
05:47 AM

81 Views

The only bad thing about multiple right hand side is that it take a lot a memory. In my case, I need to declare a B and a X of size 1 000 000 x 100.

It could be fine if the rhs andsolution vectorcould be sparse.

Marc

Alexander_K_Intel2

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-18-2010
07:46 AM

81 Views

Hi Marc,

It's true that you need to allocate huge array for using pardiso with many rhs but you can vary its size by number of rhs, for example use 10 rhs instead of 100.

With best regards,

Alexander Kalinkin

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

For more complete information about compiler optimizations, see our Optimization Notice.