Turn on suggestions

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
- Questions with pardiso

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

Customer__Intel2

Beginner

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

07-10-2014
06:30 AM

79 Views

Questions with pardiso

Hello everyone,

I met a tricky problem when solving a sparse unsymmetric complex matrics with fotran pardiso MKL within Windows environment:

I installed Mircosoft Visual Studio 2012 and Intel Parallel Studio XE 2013 (not quite sure the version of MKL).

When I specifies the phase parameter inside the subroutine with either 11, 22, or 33, the executable file got stuck and stop running. If changed to 1, 2 and then 3 phase by phase, the result are not reliable unfortunately and the following was present when the msglvl goes to 1 :

*** Error in PARDISO ( sequence_ido,parameters) error_num= 20

*** wrong control step parameter ido 1

=== PARDISO: solving a complex nonsymetric system ===

================

Times:

======

Time spent in additional calculations : 0.002354 s

Total time spent : 0.002354 s

Statistics:

===========

< Parallel Direct Factorization with number of processors: > 2

< Numerical Factorization with BLAS3 and O(n) synchronization >

< Linear system Ax = b >

number of equations: 1278

number of non-zeros in A: 13434

number of non-zeros in A (): 0.822515

number of right-hand sides: 1

< Factors L and U >

number of columns for each panel: 128

number of independent subgraphs: 0

< Preprocessing with state of the art partitioning metis>

number of supernodes: 0

size of largest supernode: 0

number of non-zeros in L: 0

number of non-zeros in U: 0

number of non-zeros in L+U: 0

*** Error in PARDISO ( sequence_ido,parameters) error_num= 20

*** wrong control step parameter ido 2

=== PARDISO: solving a complex nonsymetric system ===

================

Times:

======

Time spent in additional calculations : 0.000108 s

Total time spent : 0.000108 s

Statistics:

===========

< Parallel Direct Factorization with number of processors: > 2

< Numerical Factorization with BLAS3 and O(n) synchronization >

< Linear system Ax = b >

number of equations: 1278

number of non-zeros in A: 13434

number of non-zeros in A (): 0.822515

number of right-hand sides: 1

< Factors L and U >

number of columns for each panel: 128

number of independent subgraphs: 0

< Preprocessing with state of the art partitioning metis>

number of supernodes: 0

size of largest supernode: 0

number of non-zeros in L: 0

number of non-zeros in U: 0

number of non-zeros in L+U: 0

*** Error in PARDISO ( sequence_ido,parameters) error_num= 20

*** wrong control step parameter ido 3

=== PARDISO: solving a complex nonsymetric system ===

================

Times:

======

Time spent in additional calculations : 0.000102 s

Total time spent : 0.000102 s

Statistics:

===========

< Parallel Direct Factorization with number of processors: > 2

< Numerical Factorization with BLAS3 and O(n) synchronization >

< Linear system Ax = b >

number of equations: 1278

number of non-zeros in A: 13434

number of non-zeros in A (): 0.822515

number of right-hand sides: 1

< Factors L and U >

number of columns for each panel: 128

number of independent subgraphs: 0

< Preprocessing with state of the art partitioning metis>

number of supernodes: 0

size of largest supernode: 0

number of non-zeros in L: 0

number of non-zeros in U: 0

number of non-zeros in L+U: 0

I do not know what the reason is, the version of my MKL ?

Thanks in advance.

Link Copied

16 Replies

Gennady_F_Intel

Moderator

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

07-10-2014
07:05 AM

79 Views

Have you enabled matrix checker by iparm(28)==1?

Alexander_K_Intel2

Employee

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

07-10-2014
07:24 AM

79 Views

Just a quick comment: not iparm(28) you need to set to 1 to turn on matrix checker but iparm(27)

Thanks,

Alex

Customer__Intel2

Beginner

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

07-10-2014
07:42 AM

79 Views

Thank you Gennady Fedorov and Alexander Kalinkin first for the quick reply.

I called the subroutine pardisoinit to initialize all the default parameters before the 'pardiso', and the default value of iparm(28) is 0, should I change to 1? Considering that the high accuracy is expected.

Even setting iparm(27) to 1, I cannot observe the clear difference, the results are still not reliable.

The problem is I can only set the 'phase' parameter to single digit, not double digits like 13.

In addition, what can you speculate from my previous error log?

Thanks again.

Chunyuan

Alexander_K_Intel2

Employee

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

07-10-2014
07:57 AM

79 Views

Hi,

As i understood you set ido to 1, 2 and 3 that is incorrect. Please set it to 11, 22 and 33 and turn on matrix checker. Could you provide screen output of pardiso working here?

Thanks,

Alex

Customer__Intel2

Beginner

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

07-10-2014
08:10 AM

79 Views

Hi,

When I changed to 11, the executable file produced by Visual Studio stopped working and showed 'forrtl:severe (157): Program Exception - access violation', following the lines:

Image PC Routine Line Source

mysolver.exe Unknown Unknown Unknown

Kernel32.dll Unknown Unknown Unknown

ntdll.dll Unknown Unknown Unknown

ntdll.dll Unknown Unknown Unknown

And nothing else left.

Thanks.

Chunuan

mecej4

Black Belt

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

07-10-2014
08:21 AM

79 Views

I don't think that you can expect progress unless you post example code that can be compiled and run to show the same problems as those that you reported. We do not know whether you are calling Pardiso from C or Fortran, what the arguments are, whether you are using zero-based or 1-based indexing, etc.

Have you consulted the example source code provided with MKL, pardiso_unsym_complex_f.f?

Alexander_K_Intel2

Employee

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

07-10-2014
08:58 AM

79 Views

Hi,

Could you check size of your input arrays, like ia, ja, a and pt? Typically such kind of problem appeared when size of arrays is incorrect or you set in in pardiso incorrectly.

Thanks,

Alex

Customer__Intel2

Beginner

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

07-10-2014
09:14 AM

79 Views

Hi,

The size of the input arrays are restricted with the real size ( I set a,b,x with pointers), that seems not big issue.

And 'mecej4', thanks first for your suggestion, I am trying to extract my equation and code, to be clear: I am calling from Fortran with 1-based indexing.

I attach my partial codes in PartialCode.txt and my original data here.

Thanks.

Chunyuan

Ying_H_Intel

Employee

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

07-10-2014
11:55 PM

79 Views

Hi Chunyuan,

The main problem may be in your input parameter. I check the a.txt, it has 28747 non-zero elements.

But in pardiso output, it seems the non-zero elements is 13434. Could you please check your input?

number of equations: 1278

number of non-zeros in A: 13434

I guess if you fix this, then call phase 11, 22, 33 and -1 , you will get them work normally.

Best Regards,

Ying

Customer__Intel2

Beginner

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

07-11-2014
12:44 AM

79 Views

Hi Ying,

Thank you first for the information.

It seems that the input parameters: the size of a and ja are incorrect, but it is necessary to notice that the results are achieved when the phase is set to 1, 2 and 3, no result when setting to 11, 22 or 33. I re-checked my input parameters: the size of a and ja, both are 28747 from output.

I speculate if my Visual Studio setup was wrong, like the term 'Use Intel Math Kernel Library' to Sequential or Parallel. Considering the error present when set the phase to 1, 2 or 3, this sounds not big issue.

Cheers,

Chunyuan

Customer__Intel2

Beginner

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

07-11-2014
02:05 AM

79 Views

Hi everyone,

Thank you very much for your help.

I found where the problem was and has been resolved: due to the discrepancy of different MKL library versions, I added an additional term 'dparm' in the end of calling PARDISO subroutine, luckily it works now.

Could someone show me how to check the version of MKL library? I installed Microsoft Visual Studio 2012 and Intel Parallel Studio XE 2013.

Thanks in advance.

Cheers,

Chunyuan

mecej4

Black Belt

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

07-11-2014
06:03 AM

79 Views

chunyuan wrote:

due to the discrepancy of different MKL library versions, I added an additional term 'dparm' in the end of calling PARDISO subroutine, luckily it works now.

Rather than between different MKL versions, the **dparm **argument is used in the Basel/Lugano version of Pardiso.

Could someone show me how to check the version of MKL library? I installed Microsoft Visual Studio 2012 and Intel Parallel Studio XE 2013.

There are two functions for this purpose, which are described in the Support Functions section of the MKL manual. For calling from Fortran, you can call mkl_get_version_string( buf ).

Customer__Intel2

Beginner

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

07-11-2014
07:14 AM

79 Views

Thank you, mecej4.

Gennady_F_Intel

Moderator

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

07-11-2014
08:45 PM

79 Views

as an additional alternative -- for each of Composer's components ( IPP, TBB, Compilers (c/C++ and Fortran) and MKL ) exist list of txt files, namely:

csupport.txt

fsupport.txt

ippsupport.txt

**mklsupport.txt --- > **This package contains:

Intel(R) Math Kernel Library 11.1 Update 2 for Windows*

bbsupport.txt

You can see these files into <composer_root_direstory>\Documentation\"

Ying_H_Intel

Employee

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

07-13-2014
06:33 PM

79 Views

Hi Chunyuan,

MKL pardiso doesn't support the phase 1, 2, 3 as input.

And MKL Pardiso doesn't use the dparm augments ( as mej mentioned) . But you mentioned, after add the parameter, the problem is solved. is there some misunderstanding here, could you please clarify if possible?

Here is the article about API differences between Intel® MKL PARDISO and University of Basel PARDISO* 4.0.0

Best Regards,

Ying

One more piece of information regarding MKL version info :).

Intel Composer XE Edition |
Intel C++ Compiler XE Version |
Intel IPP Version |
Intel MKL Version |
Intel TBB Version |

2013 SP1 update 3 (22 Apr 2014) |
14.0.3 | 8.1.1 | 11.1.3 | 4.2 update 4 |

2013 SP1 update 2 (30 Jan 2014) |
14.0.2 | 8.1 | 11.1.2 | 4.2 update 3 |

2013 SP1 update 1 (24 Oct 2013) |
14.0.1 | 8.0.1 (W.139,L.106,M.103) | 11.1.1 | 4.2 update 1 |

2013 SP1 |
14.0.0 | 8.0.1 | 11.1 | 4.2 |

2013 update 5 |
13.1.3 | 7.1.1 | 11.0.5 | 4.1.4 |

2013 update 4 |
13.1.2 | 7.1.1 | 11.0.4 | 4.1.3 |

2013 update 3 (not recommended) |
13.1.1 | 7.1.1 | 11.0.3 | 4.1.3 |

2013 update 2 |
13.1.0 | 7.1.1 | 11.0.2 | 4.1.2 |

2013 update 1 |
13.0.1 | 7.1.1 | 11.0.1 | 4.1.1 |

2013 |
13.0.0 | 7.1 | 11.0 | 4.1 |

Best Regards,

Ying

Customer__Intel2

Beginner

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

07-14-2014
08:27 AM

79 Views

I first express my gratitude to Gennady Fedorov and Ying.

After re-compiling my codes, I found the confusing point: when initializing the problem by the subroutine 'pardisoinit' with the arguments pt, mtype, solver, iparm , dparm, error ( Basel version as what I tried before), and computing my problem by pardiso ( arguments identical with the Basel version with dparm), the matrix equations were solved properly.

Now, I change both subroutines as the Intel MKL manual suggested, the solver still works well.

The only situation that the solver doesn't work is to call one subroutine with regards to its arguments requirements in version A, the other with B.

Cheers,

Chunyuan

Topic Options

- 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.