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

Problem using pardiso in 64 bit build

Thomas_Woelfer
Beginner
578 Views
hi.

i have a strange problem using the pardiso solver. i have a 32bit (vc++2008) application that uses the pardiso solverand which works fine. i just recompiled the app for 64bits: in this version (no code changes), pardisoemmediately returns '-3' (reordering problems.) - iow: nothing gets solved.

i couldn't find any documentation for the error code besides 'a reordering problem occured'.

i already verified that the matrices passed to the 32bit and the 64bit version are completely identical. (just to make sure the input data did not get garbled due to some other error introduced by compiling for 64bit.). they _are_ identical.

any suggestions what might be causing this behaviour in the 64bit build ?

WM_THX
-thomas woelfer



0 Kudos
10 Replies
Gennady_F_Intel
Moderator
578 Views
please check first by the Linker Adviserwhich libraries are required to be linked with MKL.
if it doesn't help - please give us the example.
--Gennady
0 Kudos
mecej4
Honored Contributor III
578 Views
Details matter: did you use 32-bit or 64-bit integers in your 64-bit build? What compiler options did you use?

Please show at least the calls to Pardiso and the declarations of the arguments in the calls.
0 Kudos
Thomas_Woelfer
Beginner
578 Views
Gennady,

according to the linker adviser, i'm linking with the correct libraries.

WM_THX
-thomas
0 Kudos
Thomas_Woelfer
Beginner
578 Views
i'm using 32bit integers in the 64bit build.

compiler options:

/I"C:\Statik\kernel\include" /Zi /nologo /W4 /WX- /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "_AFXEXT" /D "WINVER=0x500" /D "XFEM_DLL_EXPORTS" /D "_VC80_UPGRADE=0x0710" /D "_WINDLL" /D "_MBCS" /D "_AFXDLL" /Gm- /EHa /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"DebugX64\kernel.native.calculations.fem64.pch" /Fa"DebugX64" /Fo"DebugX64" /Fd"DebugX64\vc100.pdb" /Gd /errorReport:queue

prototype for the call:

extern

"C" int PARDISO( INT_PTR*, int*, int*, int*, int*, int*, double*, int*, int*, int*, int*, int*, int*, double*, double*, int*);


call:

int

FEMatrix::Pardiso( int targetPhase, double* rightHandSide, double* solution, int &uEquitation )

{

uEquitation=0;

if ( pardisoPhase == -1 ) PardisoInit();

int phase = pardisoPhase * 10 + targetPhase;

int mtype = 2; /* Real symmetric positive definite matrix */

int nrhs = 1; /* Number of right hand sides. */

int maxfct = 1; /* Maximum number of numerical factorizations. */

int mnum = 1; /* Which factorization to use. */

int msglvl = 0; /* Print statistical information in file */

int error = 0; /* Initialize error flag */

#ifdef

DBG_DUMP_INCLUDED

Dump();

#endif

PARDISO( pardisoInternalMemory, &maxfct, &mnum, &mtype, &phase, &dimension,

this->values, this->rowStartIndices, this->columIndices, NULL, &nrhs,

pardisoControl, &msglvl, rightHandSide, solution, &error );

if ( error )

{

PardisoCleanup();

uEquitation = pardisoControl[29];

}

else

{

pardisoPhase = targetPhase;

}

return error;

}



WM_THX
-thomas
0 Kudos
Thomas_Woelfer
Beginner
578 Views
i apologize for the formatting... the editor did this all by itself ...
0 Kudos
mecej4
Honored Contributor III
578 Views
It would be useful if you could post, as an attachment, a complete and self-contained example code that demonstrates the problem.
0 Kudos
Thomas_Woelfer
Beginner
578 Views
yes, i'm sure that would be useful. i'll try to build such a sample. this will be a lot of work though - the current usage scenario is embedded in a rather _huge_ application... (and as it is the case with such things, i have doubts the problem will show up in the "small" example).

WM_THX
-thomas
0 Kudos
Thomas_Woelfer
Beginner
578 Views
just in case someone else is having similar problems, here's what i did:

instead linking mkl statically, i linked it dynamically. the problems went away.

WM_FYI
-thomas woelfer
0 Kudos
Gennady_F_Intel
Moderator
578 Views
Thomas, we know nothing about the similar problem. are you sure that you have only one set of mkl binaries on your system?
0 Kudos
Thomas_Woelfer
Beginner
578 Views
Gennady,

yes. i'm sure.

WM_FYI
-thomas
0 Kudos
Reply