Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
7267 토론

CDECL interface versus CVF interface for Equation Solvers

ircian
초급자
1,259 조회수

Hello!

I linked the MKL to my CVF 6.6 project and linked and executed the attached examples from the BLAS and LAPACk libraries. This took lots of trials to know what libraries are required.
However, when I tried to test the examples in the sparse solver directory (pardiso_sym, dss_sym) I faced a very strange problem. The examples compile correctly, but when executed the execution crashes and I have to exit the program. The libraries I used then were the default libraries (libguide40.lib mkl_solver.lib) and the default library for the CVF interface (mkl_s.lib).
After a while with no luck of executing any of the sparse solvers examples I desperatley tried to use the CDECL interface instead (mkl_c.lib, which should be used with Intel Fortran as mentioned in the documentation). It amazingly compiled and executed correctly.

So what is the problem? I now need to use one of the BLAS level3 routines also in my project; mkl_dcsrsymv. This requires to add the library with the CVF interface (mkl_s.lib). Now I can't utilize any of the BLAS routines because they require the CVF interface , while to use the sparse solver routines I have to include the CDECL interface. Including both libraries fails because of repitition of function names.

Any ideas?
Regards,
M Attal

0 포인트
6 응답
ircian
초급자
1,259 조회수
I wonder what does it mean that no body replied to my question, even the intel experts who are supposed to help users like me!
I posed this question to solve my problem as well as to give helpful feedback to the intel development. At least that's what I thought.

I would highly appreciate it if some one answered even by saying that I need to rephrase my question or clarify any ambiguities.

Regards,
M Attal
0 포인트
Chao_Y_Intel
중재자
1,259 조회수

Hi,

We gotanreplay from our export:

Unfortunately, it's not possible to mix mkl_c.lib and mkl_s.lib in an application. If PARDISO is necessary, you can only linkwith mkl_c.lib.

There's a workaround to use BLAS routines. Youcanput Fortran compiler directives in the code, like:

!DEC$ attributes C :: dgemm

...

call dgemm(...)

Then the code could be compiled in CVF call convention, but be linked to mkl_c.lib.

Regards,

Chao

0 포인트
ircian
초급자
1,259 조회수
Hello,

Thank you for your reply.
So what is the problem in the first place with the mkl_s.lib file with the sparse solvers?
I mean wasn't this file created specially for Compaq fortran interface to communicate with all the MKL library? The run-time error that crashes the solver in CVF, is it a bug in the mkl_s library creation that the intel programmers are working on? Or is it an unsolved one so that one has to use the work around you mentioned?

I will try to use the compiler directives and I will post my feedback on that experience.

Regards,
M Attal
0 포인트
Erika__C_
초급자
1,259 조회수

Hello, I need you help. I am programming in Visual C# and gfortran, but the error is:

An unhandled exception of type 'System.EntryPointNotFoundException' occurred in ConsoleApplication1.exe
Additional information: No se puede encontrar el punto de entrada denominado 'subroutineFortran' en el archivo DLL 'FortranCallBack.dll'.

Thank you.

0 포인트
SergeyKostrov
소중한 기여자 II
1,259 조회수
>>...Additional information: No se puede encontrar el punto de entrada denominado 'subroutineFortran' en el >>archivo DLL 'FortranCallBack.dll'.... What does it mean in English?
0 포인트
mecej4
명예로운 기여자 III
1,259 조회수

Erica C: Your question is off-topic in this forum. which is about Intel's MKL library, whereas your question is about using C# with Gfortran.

0 포인트
응답