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

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

 Akzeptierte Antwort

MathWorks Support Team
MathWorks Support Team am 27 Mai 2015

1 Stimme

アプリケーション(プロセス)は 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 つのコアで行うことになりますので、高速化は期待できず、むしろオーバーヘッド等で遅くなる場合もありますのでご注意ください。
 

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB Compiler SDK finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!