Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

PARDISO for Finite Element

jjforest
Beginner
756 Views
I am going to incorporate PARDISO in our finite element package. I am very happy with PARDISCO's efficiency using the evaluation version. I do have the following suggestions.

1. PARDISO should provide more extensive error messages. In particular, when the matrix is ill-conditioned, the solver should return which diagonal element is in trouble (not just return error = -4). This is important because finite element package users often make modeling errors that result in ill-conditioned stiffness matrix. The users need to be informed where (which nodes) the problem lies.

2. PARDISO should provide quad (double-double) precision in addition to the double precision math. In some finite element problems we encounter, double precision will result wrong solution. I can provide you a sample model of such case if you want.

3. It would be nice if PARDISO take a callback function that tells the current progress (1%, 2%, etc) of factorization. I am not sure if this is possible with FORTRAN since I am not very familar with FORTRAN language. I program in C/C++.

Thanks for your consideration
0 Kudos
3 Replies
Gennady_F_Intel
Moderator
756 Views

Hi,

  1. Your suggestions make sense and I would recommend you submit your suggestions as a Feature Requests against MKL to Premier support( https://premier.intel.com/ )

"PARDISO should provide more extensive error messages ...." and

"PARDISO should provide quad precision" and you can add the sample model of this case.

  1. this functionality is available already in MKL version.10.1:
    • see PARDISO's input parameter description: msglvl - Message Level Information

if msglvl == 0, then PARDISO generates no output,

if msglvl == 1, the solver prints statistical information to the screen

or you can use mkl_progress() routine for that.

--Gennady
0 Kudos
jjforest
Beginner
756 Views
Thank you Gennady, mkl_progress() does the trick of reporting factorization progress. I have not bought the product and Premier support yet, so I can not submit my suggestions as a feature request. I will try to remember that after I purchase the product.
0 Kudos
jjforest
Beginner
756 Views
Quoting - jjforest
Thank you Gennady, mkl_progress() does the trick of reporting factorization progress. I have not bought the product and Premier support yet, so I can not submit my suggestions as a feature request. I will try to remember that after I purchase the product.

My program freezes at SetWindowText() in the following code on Vista (not XP) machine. Any ideas?


extern "C" int MKL_PROGRESS( int* ithr, int* step, char* stage, int len )
{ // this is callback function from FORTRAN PARDISO code

if(gpPercentWnd)
{

OutputDebugStringA("!!MKL_1");
CString strMsg;
strMsg.Format(_T("Progress %d%%"), *step);
gpPercentWnd->SetWindowText(strMsg);
OutputDebugStringA("!!MKL_2");
}
return 0;
}
0 Kudos
Reply