Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Thomas_Woelfer
Beginner
174 Views

Problem using pardiso in 64 bit build

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
174 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
mecej4
Black Belt
174 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.
Thomas_Woelfer
Beginner
174 Views

Gennady,

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

WM_THX
-thomas
Thomas_Woelfer
Beginner
174 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
Thomas_Woelfer
Beginner
174 Views

i apologize for the formatting... the editor did this all by itself ...
mecej4
Black Belt
174 Views

It would be useful if you could post, as an attachment, a complete and self-contained example code that demonstrates the problem.
Thomas_Woelfer
Beginner
174 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
Thomas_Woelfer
Beginner
174 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
Gennady_F_Intel
Moderator
174 Views

Thomas, we know nothing about the similar problem. are you sure that you have only one set of mkl binaries on your system?
Thomas_Woelfer
Beginner
174 Views

Gennady,

yes. i'm sure.

WM_FYI
-thomas
Reply