calllib() and parallelization using OpenMP

5 ビュー (過去 30 日間)
Mariora
Mariora 2016 年 8 月 3 日
編集済み: Mariora 2016 年 8 月 4 日
I am calling a function from a dll with calllib() that is using parallel for loops using OpenMP. Specifically the dll is compiled with gcc using OpenMP compiler directives and then called from MATLAB like this
loadlibrary(path_to_dll, path_to_header)
ptr = libpointer('doublePtr', zeros(length, 1));
result = calllib('mylib', 'myfunction', ptr, argument);
MATLAB does not seem to actually create any threads when I call the function via calllib() and the function runs in a single thread.
I am using MATLAB R2012b on Windows 7 and building the dll with gcc 5.4.0 on the same machine.
How can I use multi-threading in the C function when called from MATLAB?
  1 件のコメント
Philip Borghesani
Philip Borghesani 2016 年 8 月 3 日
Are you building a Windows dll with gcc or are you building an '.so' with gcc on Linux? For this sort of problem it is helpful to know OS, MATLAB, and compiler versions.

サインインしてコメントする。

回答 (1 件)

Philip Borghesani
Philip Borghesani 2016 年 8 月 3 日
編集済み: Philip Borghesani 2016 年 8 月 3 日
I can't tell you why this is not working but can give you someplace to start. Attempting to use OpenMP in a function called by callib will run into all the same issues as attempting to use OpenMP in a mex file. Try searching for OpenMP mex MATLAB and get scared. OpenMP in Mex
To have any chance of getting this working you may need to build your dll with the same compiler version used to build MATLAB.

カテゴリ

Help Center および File ExchangeMATLAB Compiler についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by