自作のアプリケーショ​ン内で、スタンドアロ​ンアプリケーションの​ライブラリファイルを​使用する際、複数のM​CR計算エンジンを使​用するにはどのように​すればよいですか?

以下の製品で作成したライブラリファイルを持っています。
 
MATLAB Compiler
MATLAB Builder NE
MATLAB Builder EX
MATLAB Builder JA
 
これらのライブラリファイルを使用する自作のアプリケーションソフトウェアはマルチスレッドで動作します。MCRを任意の数だけ起動させて使用したいのですが、その方法を教えてください。

 Accepted Answer

MathWorks Support Team
MathWorks Support Team on 27 May 2015

1 vote

アプリケーション(プロセス)は 1 つあたり 1 つの MCR を使用します。この MCR はアプリケーションのプロセスによりロックされています。このため、プロセス内に複数のコンポーネント(スレッド)がある場合でも、これらは 1 つの MCR に同時にアクセスすることはできません。
 
DEPLOYTOOL での「オブジェクトは、共有 MCR のインスタンスを作成」オプションや、MCC コマンドでの「シングルトン MCR の作成」 (-S オプション) を使用する場合も同様です。これらのオプションは MATLAB 環境、例えば、これらのコンポーネントの元となる MATLABコードが動作するワークスペースを、コンテキストとして独立させますが、MCRは1つのプロセスに1つのMCRとなり、共有となります。
 
複数のMCRを使用するための唯一の方法は、複数のプロセスの起動です。例えばアプリケーションをもうひとつ起動すれば、そのプロセス用にもうひとつ MCR が起動し、コンピュータ上には 2 つの MCR が動作することになります。または、MATLAB Production Server (MPS) ( <http://www.mathworks.com/products/matlab-production-server/> ) が複数のプロセスの使用により複数の MCR エンジンの使用を実現できます。
 
例えば、MATLAB Builder NE により作成された複数の .NET アセンブリを使用する「myApp」というアプリケーションを考えてみます。これらのインスタンスは実際には 1 つの MCR を使用しています。これは、 MATLAB を 1 つ起動し、複数の MATLAB のプログラムファイルを次々と実行することと同様です。
 
しかし、2 つの「myApp」が同時に実行される場合は、それぞれのプロセスで 1 つずつ、合計 2 つの MCR エンジンが動作しています。これは、同時に 2 つの MATLAB を起動し、それぞれで同じ MATLAB プログラムファイルを実行することと同様です。
 
ただし、シングル CPU またはシングルコアのマシンでは複数の MCR の処理を 1 つのコアで行うことになりますので、高速化は期待できず、むしろオーバーヘッド等で遅くなる場合もありますのでご注意ください。
 

More Answers (0)

Categories

Find more on MATLAB Compiler SDK in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!