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

problems of using LAPACKE_dgesv in c++


I am using the LAPACKE_dgesv in visual studio Ultimate 2012 Version 11.0.61030.00 Update 4 with  Intel C++ 14.0 as

info = LAPACKE_dgesv(LAPACK_ROW_MAJOR, n, nrhs, *a, lda, ipiv, *b, ldb);

LAPACKE_degsv works in the debug mode, but got crashed in the release mode with the following errors: 

"Unhandled exception at 0x00007ff714da0888 in MyProg.exe: 0xC0000005: Access violation at location 0x00007ff714da0888."

It is hard to post a sample codes for my program. Command lines are supplied below. Are there any problems for invoking the MKL library? I appreciate any suggestions for this type of problem. Thanks!   

Compile Command line: 

/Yu"stdafx.h" /GS /W3 /Gy /Zc:wchar_t /I"C:\Program Files (x86)\Intel\Composer XE 2013 SP1\mkl\include" /Zi /O2 /Fd"Release\vc110.pdb" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Qipo /Zc:forScope /Gd /Oi /MD /Fa"Release\" /EHsc /nologo /Fo"Release\" /Fp"Release\MyProg.pch" 

Liner Command line: 

/OUT:"D:\Release\MyProg.exe" /MANIFEST /NXCOMPAT /PDB:"D:\Release\MyProg.pdb" /DYNAMICBASE "mkl_intel_c.lib" "mkl_core.lib" "mkl_sequential.lib" "mkl_lapack95.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /OPT:REF /SAFESEH /INCREMENTAL:NO /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Release\MyProg.exe.intermediate.manifest" /OPT:ICF /NOLOGO /LIBPATH:"C:\Program Files (x86)\Intel\Composer XE 2013 SP1\mkl\lib\ia32" /TLBID:1 

0 Kudos
2 Replies

PS: If I select the Microsoft Visual C++ instead of the Intel C++ in the Visual studio, it works in the release mode. 

Black Belt

There is an example (lapacke_dgesv_row.c) in the MKL distribution with the same argument list as in #1. It can be built with Intel C (32 and 64 bit) with the command icl /Qmkl /MD, and runs correctly. Note that the command line builds a "release mode" EXE (humorous aside: a famous computer scientist wrote that "release mode" could be compared to a fast car that had no seat-belts and was expected to be operated only by expert drivers).

I suspect one or more errors in the arguments that your call to the LAPACKE_dgesv routine. Try to construct a demonstrator program and post it here.

If your caller is in C++ rather than C, there are more opportunities for errors in the linkage to MKL.