クラスターの検出とクラスター プロファイルの使用
Parallel Computing Toolbox™ には、ローカル デスクトップ マシンで並列コードを実行するためのクラスター プロファイル Processes および Threads が事前に設定されています。
MATLAB®[ホーム] タブの [並列] メニューを使用して並列動作を制御します。

[並列] メニューを使用して次を設定できます。
- ネットワークまたは Cloud Center で実行されている他のクラスターを検出する。[並列] 、 [クラスターの検出] をクリックします。詳細については、クラスターの検出を参照してください。 
- クラスター プロファイル マネージャーを使用したクラスター プロファイルを作成および管理する。[並列] 、 [クラスターの作成と管理] をクリックします。詳細については、クラスター プロファイルの作成と管理を参照してください。 
クラスター プロファイルの作成と管理
クラスター プロファイルを使用すると、クラスターの特定のプロパティを定義し、MATLAB クライアントでクラスター オブジェクト、ジョブ オブジェクトおよびタスク オブジェクトを作成する際にこれらのプロパティを適用できます。クラスター プロファイルの使用をサポートする関数には、以下があります。
クラスター プロファイル マネージャーを使用してクラスター プロファイルを管理します。クラスター プロファイル マネージャーを開くには、[ホーム] タブの [環境] セクションで、[並列] 、 [クラスターの作成と管理] を選択します。

クラスター プロファイル マネージャーを使用して、次のことができます。
- ネットワークまたは Cloud Center で実行されている他のクラスターを検出する。詳細については、クラスターの検出を参照してください。 
- Amazon® AWS® などのクラウドにクラスターを作成する。詳細については、クラウド クラスターの作成を参照してください。 
- クラスター プロファイルを追加して、そのプロパティを変更する。詳細については、クラスター プロファイルの追加と変更を参照してください。 
- クラスター プロファイルのインポートとエクスポートを行う。詳細については、クラスター プロファイルのインポートとエクスポートを参照してください。 
- プロファイル プロパティを指定する。詳細については、ワーカー数とクラスター設定の編集を参照してください。 
- クラスター プロファイルが MATLAB で使用できる状態であることを検証する。 
クラスターの検出
MATLAB を使用してクラスターを検出できます。次のいずれかの方法を使用して、使用できるクラスターを検出します。
- [ホーム] タブの [環境] セクションで、[並列] 、 [クラスターの検出] を選択する 
- クラスター プロファイル マネージャーで、[クラスターの検出] を選択する 
これによって [クラスターの検出] ダイアログ ボックスが開き、そこで MATLAB Parallel Server™ クラスターを検索できます。

[ネットワーク上] を選択すると、新しいウィンドウが表示されます。このオプションは、クラスターで MATLAB ジョブ スケジューラ、Microsoft® Windows® HPC Server、または他のサードパーティ製スケジューラを使用している場合に選択します。クラスターが検出されると、選択肢のリストに挿入されます。リストされたクラスターのいずれかのプロファイルが既にある場合は、そのプロファイル名がリストに含められます。検出されたクラスターの 1 つに新しいプロファイルを作成する場合は、使用するクラスターの名前を選択し、[次へ] を選択します。次のダイアログ ボックスで、作成したプロファイルを既定にするかどうかを選択できます。このオプションは、MATLAB Online ではサポートされていません。
[MathWorks Cloud Center 上] を選択した場合は、Cloud Center で実行されているクラスターを検索します。これらのクラスターにアクセスするには、MathWorks アカウントのログイン情報を指定しなければなりません。
クラスター検出のための要件
クラスター検出は MATLAB ジョブ スケジューラ、Microsoft Windows HPC Server クラスター、他のサードパーティ製スケジューラ クラスター、および MathWorks Cloud Center のクラスターでサポートされています。スケジューラを MATLAB Parallel Server と統合する必要がある場合、またはサポートされている他のスケジューラ用のクラスター プロファイルを作成する必要がある場合は、インストール (MATLAB Parallel Server)を参照してください。クラスターの検出には次の要件が適用されます。
- MATLAB ジョブ スケジューラ — MATLAB ジョブ スケジューラ クラスターでは、2 通りの異なる検出方法がサポートされます。 - マルチキャスト: このクラスター検出機能では、クライアントのマルチキャスト ネットワーク プロトコルを使用して MATLAB ジョブ スケジューラが実行されているヘッド ノードを検索します。このためには、マルチキャスト ネットワーク プロトコルが有効になっていて、MATLAB ジョブ スケジューラ ヘッド ノード (スケジューラが実行されている場所) とクライアント マシンを接続するネットワーク上で動作している必要があります。この検出形式は、クライアントのローカル サブネットに制限されている場合があるため、ネットワークの他の場所でも常に MATLAB ジョブ スケジューラを検出できるとは限りません。 
- DNS SRV: DNS サービス レコードでクラスターを検索する代替の検出手法です。 - ドメイン ネーム システム (DNS) は、インターネット上またはプライベート ネットワーク内のいずれかで IP アドレスを使用してホスト名を識別する標準的な方法です。DNS を使用すると、ネットワーク全体にブロードキャストするのではなく、特定のホストを識別することで MATLAB ジョブ スケジューラ クラスターを検出できます。 - DNS サービス (SRV) レコードは、検出するクラスターに関連するサービスのホストとポートの場所を定義します。システム管理者が、組織の DNS インフラストラクチャ内に DNS SRV レコードを作成します。必要なレコードと検証情報については、DNS SRV レコード (MATLAB Parallel Server)を参照してください。 
 
- HPC Server — クラスター検出機能は Active Directory ドメイン サービスを使用してヘッド ノードを検出します。HPC Server ヘッド ノードは HPC Server ソフトウェアのインストール時に Active Directory に追加されます。 
- サードパーティ製スケジューラ – クラスター検出機能は構成ファイルを使用してサードパーティ製スケジューラ クラスターを検出します。詳細については、サードパーティ製スケジューラ クラスター検出の構成 (MATLAB Parallel Server)を参照してください。 
- Cloud Center — クラスター検出機能では、クライアントと、mathworks.com で実行されている Cloud Center の Web サービスとの間でネットワーク接続が有効になっている必要があります。 
クラウド クラスターの作成
クラスター プロファイル マネージャーから直接、Cloud Center クラウド サービスにクラスターを作成することができます。クラスター プロファイル マネージャーで、[クラウド クラスターの作成] を選択します。

MathWorks® アカウントでサインアップし、必要な手順を完了します。次に、クラウド クラスターを作成して、マシンの数、マシンごとのワーカー数などのパラメーターを設定できます。使用できる各パラメーターの詳細については、Create a Cloud Cluster を参照してください。すべての手順を完了すると、MATLAB により新しいクラスター プロファイルが作成されます。そのプロパティをクラスター プロファイル マネージャーから変更できます。
MathWorks Cloud Center でライセンスの管理、クラウド接続のテスト、クラウド クラスターの管理を行うには、クラスター プロファイル マネージャーのツールストリップの [クラウド] セクションに移動します。
クラスター プロファイルの追加と変更
クラスター プロファイル マネージャーを使用して、MATLAB ジョブ スケジューラ用またはサードパーティ製スケジューラ用のクラスター プロファイルを追加できます。MATLAB で使用するためにクラスターをセットアップする必要がある場合は、インストール (MATLAB Parallel Server)を参照してください。
次の例では、クラスター プロファイル マネージャーを使用してプロファイルの追加と変更を行う方法を説明します。
プロファイルを作成し、MATLAB ジョブ スケジューラ クラスターでジョブを実行するようにいくつかのプロパティを設定するとします。以下の例では、使用するワーカー数のみが異なる 2 つのプロファイルを作成する、想定可能なワークフローについて説明します。
- クラスター プロファイル マネージャーで、[クラスター プロファイルの追加] 、 [MATLAB ジョブ スケジューラ] を選択します。これにより、MATLAB ジョブ スケジューラ クラスター用のプロファイルの新規作成が指定されます。  - MJSProfile1 という新しいプロファイルが作成され、表示されます。 
- リスト内の新しいプロファイル名をダブルクリックし、プロファイル名を - MyMJSProfile1に変更します。
- ツール ストリップの [編集] を選択します。これでプロファイルのプロパティ値を設定できます。 - [説明] フィールドに、次の図に示されているようにテキスト - MJS with 4 workersを入力します。MATLAB ジョブ スケジューラを実行するマシンのホスト名と、MATLAB ジョブ スケジューラの名前を入力します。既にネットワークで実行されている実際の MATLAB ジョブ スケジューラの情報を入力する場合は、その実際の名前を入力します。MATLAB ジョブ スケジューラの名前とネットワーク上の場所がわからない場合は、システム管理者に問い合わせてください。 - メモ - MATLAB ジョブ スケジューラが、 - mjs_defファイルに定義されている既定とは異なる- BASE_PORT設定を使用している場合、クラスター プロファイルの- Hostプロパティにこの- BASE_PORT番号を追加しなければなりません。たとえば、- MJS-Host:40000です。
- [ワーカー] セクションまで下にスクロールし、[ジョブを実行するワーカーの数の範囲] に 2 要素ベクトル - [4 4]を入力します。これは、このプロファイルを使用するジョブで、少なくとも 4 つの、かつ 4 つを超えない数のワーカーが必要であることを指定します。したがって、開始するのに 4 つのワーカーが使用可能になるまで待たなければならない場合でも、このプロファイルを使用するジョブはちょうど 4 つのワーカーで実行されます。 - ネットワークおよびクラスターの特定状況に応じて、他のプロパティを編集することができます。 
- [完了] を選択してプロファイル設定を保存します。 
違いの少ない類似のプロファイルを作成するには、以下のように既存のプロファイルを複製し、変更が必要な部分のみを修整します。
- クラスター プロファイル マネージャーでリストにあるプロファイル名 - MyMJSProfile1を右クリックし、[複製] を選択します。- これにより、元のプロファイル名に - _Copyを加えた名前をもつ複製プロファイルが作成されます。
- 新しいプロファイル名をダブルクリックし、名前を編集して「 - MyMJSprofile2」にします。
- [編集] を選択して、プロファイルのプロパティ値を変更可能にします。 
- [説明] フィールドを編集して、そのテキストを - MJS with any workersに変更します。
- [ワーカー] セクションまで下にスクロールし、[ジョブを実行するワーカーの数の範囲] フィールドの - [4 4]を消去して、このフィールドを空白にします。
- [完了] を選択してプロファイル設定を保存し、プロパティ エディターを閉じます。 
これで、ジョブの実行に必要なワーカー数のみが異なる 2 つのプロファイルができました。
ジョブを作成するときに、ジョブを実行するワーカー数を指定する方法として、いずれかのプロファイルをそのジョブに適用できます。
サポートされているさまざまな種類のスケジューラのプロファイル例は、MATLAB Parallel Server のインストール手順にあるクラスターの構成 (MATLAB Parallel Server)を参照してください。
クラスター プロファイルのインポートとエクスポート
クラスター プロファイルは MATLAB の設定の一部として保存されるため、通常は個々のユーザー ベースでの使用が可能です。クラスター プロファイルを自分以外が使用できるようにするには、個別の .mlsettings ファイルにエクスポートします。こうすることで、計算用クラスターの全ユーザーが共通プロファイルを共有できるよう、プロファイルのリポジトリを作成できます。
クラスター プロファイルをエクスポートするには、以下の手順に従います。
- クラスター プロファイル マネージャーで、エクスポートするプロファイルを選択 (強調表示) します。 
- [エクスポート] 、 [エクスポート] を選択します (または、リスト内のプロファイルを右クリックして [エクスポート] を選択することもできます)。 - すべてのプロファイルを単一のファイルにエクスポートする場合は、[エクスポート] 、 [すべてをエクスポート] を選択します。 
- [プロファイルをファイルにエクスポート] ダイアログ ボックスで、ファイルの場所と名前を指定します。既定のファイル名は、そのファイルに含められるプロファイルの名前に - .mlsettings拡張子を付けたものです。名前は必要に応じて変更できます。
Cloud Center の個人用クラスターのプロファイルはエクスポートできないことに注意してください。
このようにして保存されたプロファイルは、他の MATLAB ユーザーによるインポートが可能になります。
- クラスター プロファイル マネージャーで、[インポート] を選択します。 
- [ファイルからプロファイルをインポートする] ダイアログ ボックスで、参照により、インポートするプロファイルの - .mlsettingsファイルを見つけます。ファイルを選択して、[開く] を選択します。- インポートしたプロファイルが Cluster Profile Manager のリストに表示されます。リストに記載されるプロファイル名は、ファイル名と同じであるとは限らないことに注意してください。インポートするプロファイルと同じ名前のプロファイルが既にある場合、インポートされるプロファイルの名前には、識別できるよう拡張子が加えられます。 
プロファイルは、関数 parallel.exportProfile および parallel.importProfile を使用して、プログラムでエクスポートおよびインポートすることもできます。
MATLAB Compiler 用プロファイルのエクスポート
エクスポートしたプロファイルを MATLAB Compiler™ と MATLAB Compiler SDK™ で使用して、コンパイルされたアプリケーションをクラスターで実行するためのクラスター セットアップ情報を特定することができます。たとえば、関数 setmcruserdata (MATLAB Compiler) では、エクスポートしたプロファイル ファイル名を使用して、キー ParallelProfile の値を設定できます。並列アプリケーションの展開の詳細と例については、実行時に Parallel Computing Toolbox プロファイルを渡す (MATLAB Compiler)およびデプロイ アプリケーションでの Parallel Computing Toolbox の使用 (MATLAB Compiler SDK)を参照してください。
コンパイルされたアプリケーションには、アプリケーションがコンパイルされたときにコンパイルを行うユーザーがもっていた同じ既定のプロファイルと、同じ代替プロファイルのリストが設定されます。つまり、ローカル ワーカーに Processes プロファイルを使用する場合と同様、多くの場合プロファイル ファイルは不要であるということです。エクスポートしたファイルを使用する場合、そのファイル内の最初のプロファイルがインポートする際の既定値になります。インポートされるプロファイルのいずれかが既存のプロファイルのいずれかと同じ名前をもっている場合、その名前はインポートに際して変更されます (ただし、ファイル内の名前は変更されません)。
ワーカー数とクラスター設定の編集
クラスター プロファイルの作成後に、ワーカー数と他のプロファイル プロパティを指定できます。
- NumWorkers: プールを起動するワーカーの数。実際のプールのサイズはライセンス、クラスターのサイズ、クラスターのプロファイル設定により制限されることがあります。プール サイズに影響する要因を参照してください。
- NumThreads: 各ワーカー上で使用する計算スレッドの数。ワーカーがマルチスレッド モードで実行されてクラスター上のすべてのコアを使用できるように、- NumThreadsを変更することが可能です。これにより、ワーカー数- NumWorkersを増加させずに各ワーカーで計算スレッド数- NumThreadsを増やすことができます。より多くのコアが使用できる場合は、- NumThreadsを増加して、組み込み並列処理を最大限に活用します。この並列処理は、基となる MATLAB ライブラリの多数が持つマルチスレッド特性によって提供されます。詳細については、マルチコア マシンおよびマルチプロセッサ マシンでの MATLAB の実行を参照してください。- メモ - 1 台のマシン上のすべてのワーカーで、物理コアの数を超えてスレッド数を増やさないでください。つまり、必ず - NumWorkers x NumThreadsをマシンの物理コア数以下にしてください。そうしない場合、パフォーマンスが低下することがあります。
MATLAB からのクラスターの使用
クラスター上で parpool や batch などの並列言語関数を実行するには、クラスター プロファイルを既定として設定するか、クラスター オブジェクトを使用します。
既定のクラスターの指定
クラスター プロファイルを既定として設定するには、次の方法のいずれかを使用します。
- [ホーム] タブの [環境] セクションで [並列] 、 [並列環境を選択] を選択すると、そこからすべてのプロファイルを使用できます。既定のプロファイルは既定として示されます。リスト内の任意のプロファイルを既定のプロファイルとして選択できます。 
- クラスター プロファイル マネージャーにより、どれが既定のプロファイルであるかが示されます。リスト内の任意のプロファイルを選択して、[既定に設定] を選択できます。 
- 既定のプロファイルをプログラムによって取得または設定するには、関数 - parallel.defaultClusterProfileを使用します。以下のコマンドのセットは、いずれも同じ内容を実行します。- parallel.defaultClusterProfile('MyMJSProfile1') parpool- または - parpool('MyMJSProfile1')
プログラムによるクラスターの指定 (parcluster)
関数 parcluster は、指定したプロファイルに従ってワークスペースにクラスター オブジェクトを作成します。プロファイルにより、特定のクラスターが識別され、プロパティ値が適用されます。以下に例を示します。
c = parcluster('MyMJSProfile1')このコマンドは MyMJSProfile1 というプロファイルの設定で定義されたクラスターを検出し、プロファイルの設定に基づいてクラスター オブジェクトにプロパティ値を設定します。parpool、batch などの関数でクラスター オブジェクトを使用します。MATLAB アプリケーション コードを変更しなくても、異なるプロパティを適用することでクラスターの選択を変更することができます。
参考
batch | parpool | parcluster | createJob | setmcruserdata (MATLAB Compiler) | parallel.exportProfile | parallel.importProfile | parallel.defaultClusterProfile
トピック
- 並列プールでのコードの実行
- デスクトップからクラスターへのスケール アップ
- 実行時に Parallel Computing Toolbox プロファイルを渡す (MATLAB Compiler)
- デプロイ アプリケーションでの Parallel Computing Toolbox の使用 (MATLAB Compiler SDK)
- クラスター検出のためのネットワーク通信の検証 (MATLAB Parallel Server)
- インストール (MATLAB Parallel Server)
- クラスターとクラウド