linux matlab mex linking with MKL sparse solvers

linux matlab mex linking with MKL sparse solvers

First some version information, since I suspect this is important:

==
MATLAB Version 7.3.0.298 (R2006b)
Operating System: Linux 2.6.16.54-0.2.5-smp #1 SMP Mon Jan 21 13:29:51 UTC 2008 x86_64
Java VM Version: Java is not enabled

==
mkl/10.0.3.020

I want to make a mex file calling MKL sparse solvers. For now I call sequential libraries, but something goes wrong when I call the resulting file. I have created a custom shared object containing functions
dss_create_
dss_define_structure_
dss_reorder_
dss_factor_real_
dss_delete_
dss_solve_real_

The command line to create the custom shared object looks like this: make em64t export=mrt_inv_funclist_nomp.txt interface=lp64 threading_name=sequential name=libmkl_custom

I have made some modifications in the custom make tool to avoid any calls to libguile

IFACE_COMP_PART=gf
IFACE_THREADING_PART=intel

ifeq ($(interface),ilp64)&nb
sp;
IFACE_LIB=libmkl_$(IFACE_COMP_PART)_ilp64.a
else
IFACE_LIB=libmkl_$(IFACE_COMP_PART)_lp64.a
endif

THREADING_LIB=libmkl_sequential.a
CORE_LIB=libmkl_core.a
&nb
sp;
func_list := $(addprefix -u ,$(shell cat $(export)))
em64t:
gcc -shared -Bdynamic $(func_list)
$(mklem64t_libpath)/libmkl_solver_lp64_sequential.a
$(xerbla) $(mklem64t_libpath)/$(IFACE_LIB) $(mklem64t_libpath)/$(THREADING_LIB)
$(mklem64t_libpath)/$(CORE_LIB) -L$(mklem64t_libpath) -o $(name).so

The resulting custom shared object is linked with the mex c-file code, which is quite simple. It contains no unresolved references - just matlab libs and the custom object.
Then the example 3x3 system is tried:

mrt_inv(speye(3))

the result is below:

cs_mex_check executed
convert indexing Matlab -> MKL style done
dss_create executed
dss_define_structure executed
MKL-DSS-DSS-Error, An unclassifiable error occurred

All the lines except the last one are debugging messages which I output using Matlab printf functions.
The last line is from MKL and immediately after that Matlab is crashing with no special message.

I tried quite a few variations from the
above, but the result is basically the same. My initial suspicion was that Matlab is using old version of MKL, so there may be a version conflict. For this reason I created a custom shared object, so that I can be sure that new MKL blas version is used in my mex file. Unfortunately the crashes keep happening.

Can you advice me what to do and where to look.
Thanks a lot!

--JS

1 contenuto / 0 nuovi
Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione