Compiler SDK による C++ ライブラリはマルチスレッドをサポートしますか?

1 view (last 30 days)
MathWorks Support Team
MathWorks Support Team about 19 hours ago
Answered: MathWorks Support Team about 15 hours ago
MATLAB Compiler SDK を使って MATLAB 関数をコンパイルしています。この関数は同時ユーザーがいるアプリ内で呼び出されます。これはサポートされますか?

Accepted Answer

MathWorks Support Team
MathWorks Support Team about 4 hours ago
C++ MATLAB Data API を使用する場合、ランタイムはインプロセスモードまたはアウトオブプロセスモードのいずれかで起動できます。
インプロセスモードで実行する場合、インタープリタスレッドは1本のみで、ライブラリへのすべての呼び出しは直列化されます。この場合、同時実行性によるメリットはありません。
アウトオブプロセスモードで実行する場合、作成される各ライブラリオブジェクトごとに独立した MVM サーバーが起動されます。したがって、各スレッドから initMATLABLibrary を呼び出せば、各スレッドは自身のインタープリタを持つことになり、スレッドは MATLAB コードを同時に実行できます。ただし、MATLAB Runtime はプロセス外で動作するため、プロセス間でデータをやり取りする必要があるというトレードオフがあります。全体として、この場合に性能向上が得られるかどうかは、ランタイムプロセス間で転送すべきデータ量と、ライブラリコードが実行する処理量の相対関係に依存します。
また、アウトオブプロセス機能は広く使われてきたわけではないため、インプロセスほど安定していません。
さらに、mwArray API ではアウトオブプロセスモードはサポートされません。つまり、mwArray API はマルチスレッドをサポートしません。

More Answers (0)

Tags

No tags entered yet.

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!