OpenMP incompatible with LAPACK & BLAS routines

I've written a few c mex files and have called dsyev to find eigenvalues etc. I want to call this routine in parallel in a threaded loop. Everything compiles OK without warnings (using MS Visual Studio Prof. Edition 2005).
However, when I call it from Matlab it just crashes, without any error messages...
Anyone have any ideas?!?
Thanks in advance
Adam

5 个评论

Well, I think your title already says it. The LAPACK and BLAS libraries that ship with MATLAB are probably not thread-safe. However, many of the routines in these libraries are already multi-threaded, so I don't know how much speed up you would get even if they were thread-safe.
OK thanks anyway. Thing is, I'm calling them on loads of little matrices which are built in a loop, so want the loop to run in parallel. Think maybe a rewrite in straight c or fortran may be the way forward!
I should have asked this before, but are you sure your C code for calling dsyev is correct (argument type, etc)? Can you run it in a single thread to verify that it is coded correctly?
Hi Adam, do you have any update? I am facing the same problem.
@zhuanyi Can you open a new Question, and maybe include a minimal complete example that reproduces the problem?

请先登录,再进行评论。

回答(1 个)

Running your original mex function within a MATLAB Parallel Computing Toolbox parfor loop might give you the parallelism you want.

类别

帮助中心File Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by