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 commentaires

James Tursa
James Tursa le 26 Fév 2011
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.
Adam connolly
Adam connolly le 26 Fév 2011
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!
James Tursa
James Tursa le 5 Mar 2011
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?
zhuanyi
zhuanyi le 31 Mar 2024
Hi Adam, do you have any update? I am facing the same problem.
James Tursa
James Tursa le 2 Avr 2024
Modifié(e) : James Tursa le 2 Avr 2024
@zhuanyi Can you open a new Question, and maybe include a minimal complete example that reproduces the problem?

Connectez-vous pour commenter.

Réponses (1)

Jill Reese
Jill Reese le 4 Mar 2011

0 votes

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

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by