Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Intel_C_Intel
Employee
82 Views

Problem Linking VC++.NET with MKL

Hello,
Iam trying to use the LAPACK routines in my MS VC++.NET program.
Iam using Visual Studio .NET 2003.
Included files : mkl_cblas.h, mkl.h, mkl_lapack.h
Included libs : mkl_c.lib.
Many of the routines work fine. Problem is with routines that take the first argument as character.
Any suggestions ?
Many Thanks.,
vikrant
0 Kudos
7 Replies
Intel_C_Intel
Employee
82 Views

First of all you should need to include only mkl.h as it includes all the other include files.

Can you create a small example showing the issue in which one routine is called that has a character in the parameter list? We will look at that and try to solve the issue. All of our LAPACK examples are Fortran.

On the other hand, can you call BLAS functions such as dgemm via the cblas interface? If you can then the issue is just how to handle the characters in your program.

Bruce

Intel_C_Intel
Employee
82 Views

Hello,

Here is the example :

The appropriate headers are included. The first call to lapack routine dgetrf works just fine. The call to dgetrs doesnt work.

Also note that the same piece of code works fine with MS VC ++ 6.0, i.e. both functions dgetrf and dgetrs work fine.

After I copy it to MS VC++.NET (with managed extensions) it doesnt work anymore and crashes at the second function call.

Int32 CBLAS::Test()

{

double

*a = new double[4];

a[0] = 4.0000063240007506;

a[1] = 6.0000000000099609;

a[2] = 10.000015811350039;

a[3] = 2.0000000000033205;

int

m = 2, n = 2;

int

lda = 2;

int

*ipiv = new int[2];

int

info;

DGETRF(&m,&n, a,&lda,ipiv,&info);

double

*b = new double[2];

b[0] = 56.0;

b[1] = 13.0;

char

trans = 'N';

int ldb = 2, nrhs = 1;

DGETRS(&trans, &n,&nrhs, a, &lda,ipiv, b, &ldb,&info);

return(0);

}

Intel_C_Intel
Employee
82 Views

Thanks for the example. We will take a look at this and try to find out what is the problem.
Bruce
Andrey_Shemyakin
Beginner
82 Views

I have checked this example. Test work fine with any MKL versions.
Can you send whole projectto me ?
Intel_C_Intel
Employee
82 Views

Hello,
Thank you for the response.
The test works fine I know - it doesnt work when you create a class library in managed c++ and then call it from other programs.
Attached is the source project.
Thank you.
vikrant
Intel_C_Intel
Employee
82 Views

Hello,
Thank you for all the responses. I found the solution its a compiler issue discussed in KB 814472.
Thank you.
vikrant
Andrey_Shemyakin
Beginner
82 Views

I have investigate this problem. The problem in the libguide (OMP). The very simple solution is using mkl_c_dll.lib insteadof mkl_c.lib.