Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Problem using Intel MKL with MEX

Asked by AP on 18 Feb 2013

Dear All,

Is it possible to use Intel MKL 10.3 in MEX? I am having problem in using MKL 10.3 along with MEX. I have no problem in compiling and linking the source code. But MATLAB crashes with no helpful message when I run the executable. The same code works perfectly in Visual Studio C++. Is there any conflict for using MKL in MALTAB?

Thanks

3 Comments

James Tursa on 18 Feb 2013

Can you post a small sample of code that crashes? There may be a mismatch with expected types in the arguments (e.g., integer lengths). What MATLAB version and operating system are you using?

AP on 18 Feb 2013

Thanks @James. I am using MATLAB Version: 8.0.0.783 (R2012b) in Windows 7 64bit. This code works perfectly in Microsoft Visual C++ 2008 as a standalone code. Crash happens at the end of the code, where I am cleaning up to prevent memory leak. The following is the part of the code, that causes the crash:

    if (stat!=0) goto FAILURE;
    MKL_FreeBuffers();
    free( dpar );
    free( f    );
    FAILURE: printf("\nFAILED to compute ");
    MKL_FreeBuffers();
    free( dpar  );
    free( f     );

For some reasons, FAILURE runs when the code is successful. I chekced the value of 'stat' and it is always zero which means successful. Why free() should be called twice to cause the crash? When I comment out functions:

    free( dpar );
    free( f    ); 

right before the label FAILURE, MATLAB does not crash. May I have your thoughts on this?

IntelMKL on 19 Feb 2013

Afala, In your snippet it seems like the free() calls would naturally be called twice since stat==0 as you say. So it seems you should expect what you get. Besides this, it seems that MKL is not the problem since the problem goes away when you comment the free() calls (and presumeably not the MKL_Free_Buffers() calls).

If you still think this is a problem with using Intel MKL, another option is to post this question (a larger test case would also be helpful) on the Intel MKL user's forum: http://software.intel.com/en-us/forums/intel-math-kernel-library

I don't recall any known problems with useing MKL 10.3 with this version of Matlab.

AP

Tags

Products

No products are associated with this question.

1 Answer

Answer by James Tursa on 19 Feb 2013
Accepted answer

Your posted code looks erroneous because in the success case it will naturally drop through the FAILURE label and do the free stuff again. Maybe you want something like this instead:

    if (stat!=0) {
        printf("\nFAILED to compute \n");
    }
    MKL_FreeBuffers();
    free( dpar );
    free( f    );

1 Comment

AP on 19 Feb 2013

Thanks @James and @IntelMKL. I put a return before FAILURE and it worked perfectly. Very good catch.

James Tursa

Contact us