- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Please show at least the calls to Pardiso and the declarations of the arguments in the calls.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
according to the linker adviser, i'm linking with the correct libraries.
WM_THX
-thomas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
WM_THX
-thomas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
instead linking mkl statically, i linked it dynamically. the problems went away.
WM_FYI
-thomas woelfer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yes. i'm sure.
WM_FYI
-thomas
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page