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

CDECL interface versus CVF interface for Equation Solvers

ircian
Beginner
356 Views

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 Kudos
6 Replies
ircian
Beginner
356 Views
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 Kudos
Chao_Y_Intel
Moderator
356 Views

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 Kudos
ircian
Beginner
356 Views
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 Kudos
Erika__C_
Beginner
356 Views

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 Kudos
SergeyKostrov
Valued Contributor II
356 Views
>>...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 Kudos
mecej4
Honored Contributor III
356 Views

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 Kudos
Reply