This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Problem with Pardiso

Tags: None
(comma "," separated)
-Roman-
Registered Member
Posts
16
Karma
0

Problem with Pardiso

Tue Jun 19, 2012 3:20 pm
Hello,

I'm trying to use the Pardiso backend solver. I'm compiling with Intel's compiler on Mac OS X 10.6 and getting errors of the following type:

Code: Select all
/Eigen/src/PardisoSupport/PardisoSupport.h(50): error: argument of type "int *" is incompatible with parameter of type "_INTEGER_t={long long} *"
        ::pardiso(pt, &maxfct, &mnum, &type, &phase, &n, a, ia, ja, perm, &nrhs, iparm, &msglvl, b, x, &error);
                      ^
          detected during:
            instantiation of "Index Eigen::internal::pardiso_run_selector<Index>::run(_MKL_DSS_HANDLE_t, Index, Index, Index, Index, Index, void *, Index *, Index *, Index *, Index, Index *, Index, void *, void *) [with Index=int]" at line 236
            instantiation of "void Eigen::PardisoImpl<Derived>::pardisoRelease() [with Derived=Eigen::PardisoLU<Eigen::SparseMatrix<RealType={double}, 0, int>>]" at line 125
            instantiation of "Eigen::PardisoImpl<Derived>::~PardisoImpl() [with Derived=Eigen::PardisoLU<Eigen::SparseMatrix<RealType={double}, 0, int>>]" at line 427

I've tried the latest rc1 release as well as the current developer version with the same result.

Any help is highly appreciated.

Regards,
Roman
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS

Re: Problem with Pardiso

Tue Jun 19, 2012 8:29 pm
hm, that's very strange because the pardiso(...) function takes 32bits integer indices, while for 64bits indices (long long) there is the pardiso_64(...) function.

This seems to be an issue specific to Mac OSX since it works fine here on Linux. I don't have MKL for OSX, so could you check the documentation shipped with the OSX version to see what are the exact prototypes of the pardiso*() functions on your platform?

thanks.
-Roman-
Registered Member
Posts
16
Karma
0

Re: Problem with Pardiso

Wed Jun 20, 2012 9:00 am
In mkl_pardiso.h the prototypes are defined as

Code: Select all
void pardiso(
        _MKL_DSS_HANDLE_t,   _INTEGER_t *,     _INTEGER_t *,
        _INTEGER_t *,           _INTEGER_t *,     _INTEGER_t *,
        void *,  _INTEGER_t *,     _INTEGER_t *,
        _INTEGER_t *,           _INTEGER_t *,     _INTEGER_t *,
        _INTEGER_t *,           void *, void *,
   _INTEGER_t *);

void PARDISO(
        _MKL_DSS_HANDLE_t,   _INTEGER_t *,     _INTEGER_t *,
        _INTEGER_t *,           _INTEGER_t *,     _INTEGER_t *,
        void *,  _INTEGER_t *,     _INTEGER_t *,
        _INTEGER_t *,           _INTEGER_t *,     _INTEGER_t *,
        _INTEGER_t *,           void *, void *,
   _INTEGER_t *);

void pardiso_64(
        _MKL_DSS_HANDLE_t,     long long int *,     long long int *,
        long long int *,       long long int *,     long long int *,
        void *,                long long int *,     long long int *,
        long long int *,       long long int *,     long long int *,
        long long int *,       void *,              void *,
        long long int *);
void PARDISO_64(
        _MKL_DSS_HANDLE_t,     long long int *,     long long int *,
        long long int *,       long long int *,     long long int *,
        void *,                long long int *,     long long int *,
        long long int *,       long long int *,     long long int *,
        long long int *,       void *,              void *,
        long long int *);

User avatar
ggael
Moderator
Posts
3447
Karma
19
OS

Re: Problem with Pardiso

Wed Jun 20, 2012 10:45 am
ok, and apparently _INTEGER_t is defined as long long which is a non sense to me since, then there is no difference between the 64 and normal version. I've no clue.
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS

Re: Problem with Pardiso

Wed Jun 20, 2012 10:49 am
maybe the issue is because you are compiling with the 64bits integer interface (MKL_ILP64).

In the MKL link advisor: http://software.intel.com/en-us/article ... e-advisor/ choose the LP64 interface layer.
-Roman-
Registered Member
Posts
16
Karma
0

Re: Problem with Pardiso

Wed Jun 20, 2012 2:47 pm
Thanks, that was it. If I link to the LP64 interface layer it works fine.


Bookmarks



Who is online

Registered users: Baidu [Spider], Bing [Bot], Google [Bot], rblackwell