Slurm、Torque、LSF、PBS、Grid Engine、HTCondor、または AWS Batch 向けの構成
以下の手順に従い、MATLAB® Parallel Server™ インストール環境を次に示すスケジューラの組み込みのクラスター タイプと連携するように構成します。
Slurm
LSF®
Torque
PBS Pro® と OpenPBS
Grid Engine
HTCondor
AWS® Batch
一部のスケジューラでは、組み込みのクラスター タイプまたは汎用スケジューラ インターフェイスを使用して、クラスター プロファイルを作成できます。ベスト プラクティスとしては、可能であれば組み込みのクラスター タイプを使用します。
組み込みのクラスター タイプがないクラスターに接続する場合は、Generic
クラスター プロファイルを使用する必要があります。
Generic
クラスター タイプを使用してクラスターを構成するには、汎用スケジューラ インターフェイスを使用した構成を参照してください。
クラスター プロファイルの作成とインストールの検証
この手順では、並列計算製品がインストールされ、クラスター上で正しく構成されているかを検証します。
手順 1: クラスター プロファイルの作成
この手順では、後続の手順で使用するクラスター プロファイルを作成します。
クラスター プロファイル マネージャーを起動します。[ホーム] タブの [環境] 領域で、[並列] 、 [クラスターの作成と管理] を選択します。
クラスター プロファイル マネージャーで、[クラスター プロファイルの追加] 、 [Slurm] (あるいは必要に応じて [AWS Batch]、[Grid Engine]、[HTCondor]、[LSF]、[PBS Pro]、または [Torque]) を選択して、新規プロファイルを作成します。
リストで新しいプロファイルが選択されている状態で、[名前の変更] をクリックし、プロファイル名を編集して「
InstallTest
」にします。Enter キーを選択します。[プロパティ] タブで、次のフィールドの設定を行います。
[説明] フィールドに「
For testing installation
」と入力します。[JobStorageLocation] フィールドを、ジョブおよびタスクのデータを保存するクライアント マシン上の場所に設定します (例:
C:\Temp\joblocation
)。この場所にクラスター上のノードからもアクセスできる場合、MATLAB ワーカーはその場所に対する読み取りと書き込みを直接行うことができます。それ以外の場合、クライアントはsftp
を使用して、クラスターとの間でジョブおよびタスクのデータ ファイルをコピーします。メモ
異なるバージョンの並列計算製品で同じジョブ ストレージの場所を使用してはなりません。クラスター上の各バージョンはそれぞれ固有のジョブ ストレージの場所を使用しなければなりません。
[NumWorkers] フィールドに、検証テストを実行するワーカーの数をライセンスの制限内で設定します。
[NumThreads] を、各ワーカーで使用するスレッド数に設定します。
[ClusterMatlabRoot] を、ワーカー マシン上で実行する MATLAB のインストール場所に設定します。
クラスターでオンライン ライセンスを使用する場合、[RequiresOnlineLicensing] を true に設定します。
[RequiresOnlineLicensing] を true に設定した場合は、[LicenseNumber] フィールドにライセンス番号を入力します。
LSF を使用している場合は、[OperatingSystem] フィールドをワーカー マシンのオペレーティング システムに設定します。
[HasSharedFilesystem] フィールドで、クライアントおよびワーカーが同じ
JobStorageLocation
プロパティの値を共有できるかどうかを設定します。既定では、MATLAB のインストールにはすぐに使用できるスケジューラのプラグイン スクリプトが付属しています。[PluginScriptsLocation] フィールドは、既定の MathWorks® 提供のプラグイン スクリプトのままにしておくことができます。
クラスター プロファイルでカスタマイズしたプラグイン スクリプトを使用する場合は、[PluginScriptsLocation] フィールドでカスタマイズしたプラグイン スクリプトの場所を指定します。既定のプラグイン スクリプトをダウンロードして変更する方法については、プラグイン スクリプトのダウンロードとカスタマイズを参照してください。
[AdditionalProperties] テーブルにプロパティを追加すると、組み込みのスケジューラのプロパティまたはカスタムのスケジューラのプロパティを使用してクライアントがクラスターとどのように連携するかをカスタマイズできます。各スケジューラの組み込みの追加プロパティの完全な一覧については、サンプル プラグイン スクリプトの動作のカスタマイズを参照してください。
たとえば、次の追加プロパティを使用すると、リモート クラスターでジョブを接続して実行できます。
ClusterHost
クライアントがスケジューラ ユーティリティにアクセスしてサードパーティ製スケジューラにジョブを直接投入できない場合、プラグイン スクリプトはクラスターへの
ssh
セッションを作成し、その接続を介してスケジューラ コマンドを実行します。MATLAB はsbatch
やsqueue
などのスケジューラ ユーティリティを実行するため、クラスターのヘッドノードまたはログイン ノードのホスト名を指定する必要があります。[AdditionalProperties] テーブルで [追加] を選択します。名前にClusterHost
を使用して新しいプロパティを指定します。値には、クラスター ヘッドノードのホスト名を指定します (例:cluster-host-name
)。[型] をString
に設定します。RemoteJobStorageLocation
クライアントとワーカーが同じジョブ ストレージの場所を共有しておらず、[HasSharedFilesystem] を false に設定した場合は、ヘッドノードとクラスター ワーカーがアクセスできるジョブ ストレージの場所を指定する必要があります。クライアントは、
sftp
を使用してコンピューターとクラスター上のリモート ジョブ ストレージの場所との間でジョブおよびタスクのファイルをコピーします。[AdditionalProperties] テーブルで [追加] を選択します。名前にRemoteJobStorageLocation
を使用して新しいプロパティを指定します。値には、クラスター ワーカーがジョブおよびタスクのデータを保存できる場所のパスを指定します (例:/network/share/joblocation
)。[型] をString
に設定します。
[完了] をクリックしてクラスター プロファイルを保存します。完成したクラスター プロファイルは、次のいずれかの図のようになります。
手順 2: クラスター プロファイルの検証
この手順では、クラスター プロファイルを検証し、その結果を基にインストール環境を検証します。プロファイルの検証時に、使用するワーカーの数を指定できます。[検証] タブでワーカー数を指定しない場合、検証では、[プロパティ] タブの NumWorkers
プロパティで指定されている値と同数のワーカーの使用が試みられます。より少ないワーカー数を指定すると、クラスター全体を占有せずに構成を検証することができます。
MATLAB デスクトップからクラスター プロファイル マネージャーを起動します (まだ開いていない場合)。[ホーム] タブの [環境] 領域で、[並列] 、 [クラスターの作成と管理] を選択します。
一覧でクラスター プロファイルを選択します。
[検証] タブをクリックします。
チェック ボックスを使用して検証段階のすべてまたはサブセットを選択し、プロファイルの検証時に使用するワーカーの数を指定します。
[検証] をクリックします。
クライアントでクラスターの検証が完了すると、[検証] タブに出力が表示されます。
次の図では、すべての検証テストをパスした
InstallTest
プロファイルの結果が表示されています。
メモ
検証をパスしなかった場合は、MathWorks インストール サポート チームにお問い合わせください。
検証がパスすると、他の並列アプリケーションで利用可能な有効なプロファイルの準備ができたことになります。ご使用のアプリケーションに合わせて、NumWorkersRange
、AttachedFiles
、AdditionalPaths
など、プロファイルを変更することができます。
他のユーザー用にプロファイルを保存するには、プロファイルを選択して [エクスポート] をクリックしてから、目的の場所にプロファイルをファイルとして保存します。他のユーザーは、クラスター プロファイル マネージャーで [インポート] を選択してこのプロファイルをインポートできます。
プラグイン スクリプトのダウンロードとカスタマイズ
Parallel Computing Toolbox™ は一連のプラグイン スクリプトを使用して、マシンがスケジューラとどのように通信するかを定義します。MATLAB のインストールにはすぐに使用できるスケジューラ専用のプラグイン スクリプトが付属しています。ただし、プラグイン スクリプトをダウンロードして変更し、MATLAB がスケジューラとどのように連携するかを構成することで、クラスターの設定に最も適した状態にしてカスタムの投入オプションをサポートできます。
プラグイン スクリプトのダウンロード
MathWorks では、以下のサードパーティ製スケジューラ用にプラグインを提供しています。これらは GitHub® リポジトリまたはアドオン エクスプローラーからダウンロードできます。
プラグイン | GitHub リポジトリ |
---|---|
Slurm の備わった MATLAB Parallel Server 用の Parallel Computing Toolbox プラグイン | https://github.com/mathworks/matlab-parallel-slurm-plugin |
IBM Spectrum® LSF の備わった MATLAB Parallel Server 用の Parallel Computing Toolbox プラグイン | https://github.com/mathworks/matlab-parallel-lsf-plugin |
Grid Engine の備わった MATLAB Parallel Server 用の Parallel Computing Toolbox プラグイン | https://github.com/mathworks/matlab-parallel-gridengine-plugin |
PBS の備わった MATLAB Parallel Server 用の Parallel Computing Toolbox プラグイン | https://github.com/mathworks/matlab-parallel-pbs-plugin |
HTCondor の備わった MATLAB Parallel Server 用の Parallel Computing Toolbox プラグイン | https://github.com/mathworks/matlab-parallel-htcondor-plugin |
以下のワークフローのいずれかを使用して、ご使用のスケジューラに適切なプラグイン スクリプトをダウンロードします。
GitHub リポジトリからプラグインをダウンロードできます。
ご使用のマシンのコマンド ウィンドウから GitHub リポジトリをクローンします。たとえば、Slurm が備わった MATLAB Parallel Server 用の Parallel Computing Toolbox プラグインのリポジトリをクローンするには、以下を使用します。
git clone https://github.com/mathworks/matlab-parallel-slurm-plugin
ブラウザーで GitHub ページにアクセスし、プラグインを ZIP アーカイブとしてダウンロードします。
あるいは、MATLAB アドオン エクスプローラーからアドオンをインストールするには、[ホーム] タブに移動し、[環境] セクションで [アドオン] アイコンをクリックします。アドオン エクスプローラーで、アドオンを検索してインストールします。
また、MATLAB Central™ File Exchange からプラグインをダウンロードすることもできます。
プラグイン スクリプトのカスタマイズ
プラグイン スクリプトをカスタマイズするには、独自のカスタム プロパティを追加します。カスタム プロパティを追加すると、ジョブをクラスターに投入する際にこれらのプロパティの値を変更でき、プラグイン スクリプトを繰り返し変更する必要はありません。
例として、Slurm スケジューラを考えます。Slurm の投入コマンドは、実行するノードを指定できる –-nodelist
引数を受け入れます。–-nodelist
の追加のプロパティを作成すると、プラグイン スクリプトを変更することなく、この引数の値を変更できます。–-nodelist
引数の追加のプロパティを作成するには、プラグイン スクリプト フォルダーにある independentSubmitFcn.m
または communicatingSubmitFcn.m
のいずれかのスクリプトに次のコード パターンを含めます。
% Basic SLURM submit command submitCommand = 'sbatch'; % Check if property is defined if isprop(cluster.AdditionalProperties, 'NodeList') % Add appropriate argument and value to submit string submitCommand = [submitCommand ' --nodelist=' cluster.AdditionalProperties.NodeList]; end
あるいは、独立ジョブと通信ジョブの両方の投入コマンドを変更するには、関数 getCommonSubmitArgs
に上記のコード パターンを含めます。関数 getCommonSubmitArgs
は、サンプル プラグイン スクリプトに含まれている補助関数で、両方のタイプのジョブの投入コマンドを変更するために使用できます。追加のカスタム プロパティは、組み込みの追加プロパティと同様にクラスター プロファイルの [AdditionalProperties
] テーブルに追加できます。また、追加のカスタム プロパティはクラスター オブジェクトを使用して設定することもできます。詳細については、追加のプロパティの設定を参照してください。
共有ファイル システムを使用せずにリモート クラスターまたはクラスターでジョブを実行
MATLAB クライアントがジョブをスケジューラに直接投入できない場合、MATLAB では、コマンドをリモート クラスターに送信するために ssh
プロトコルの使用がサポートされます。ssh
を介してスケジューラ コマンドを送信するようにクラスターを構成するには、[AdditionalProperties] テーブルで、追加の ClusterHost
プロパティの値を、MATLAB が ssh
を介して接続するクラスター ノードの名前に設定します。
クライアントとクラスター ノードに共有ファイル システムがない場合、MATLAB では、コンピューターとクラスター間でジョブおよびタスク ファイルをコピーするために sftp
の使用がサポートされます。sftp
を使用してクライアントとクラスターの間でファイルを移動できるようにクラスターを構成するには、[AdditionalProperties] テーブルで、追加の RemoteJobStorageLocation
プロパティの値を、ワーカーがアクセスできるクラスター上のフォルダーに設定します。
次の図は、ファイル システムをクライアントと共有していないリモート Slurm クラスターの ssh
接続と sftp
接続を示しています。このタイプの構成では、ジョブ データが Windows オペレーティング システムが稼働するクライアント ホストから、UNIX® オペレーティング システムが稼働するクラスター上のホスト (クラスター ログイン ノード) にコピーされます。クラスター ログイン ノードから、Slurm の sbatch
コマンドによりジョブがスケジューラに投入されます。ジョブが終了すると、ジョブの出力がコピーされてクライアント ホストに戻されます。
Windows クラスターでの LSF スケジューラの構成
クラスターが既に mpiexec および smpd を使用するように設定されている場合、互換性のある MPI 実装ライブラリを使用していれば、matlabroot
\toolbox\parallel\mpi\mpiLibConf.m
で定義されている既存の構成で Parallel Computing Toolbox ソフトウェアを使用できます。ただし、クラスター上に mpiexec がなく、それを使用する必要がある場合は、並列計算製品に付属の mpiexec ソフトウェアを使用できます。
mpiexec および smpd の詳細については、MPICH のホーム ページを参照してください。ユーザー ガイドおよびインストール手順を表示するには、このページで Documentation、User's Guide を選択します。
以下の手順において、matlabroot
は MATLAB のインストールの場所を示します。
mpiexec を使用してジョブを分散するには、MATLAB ワーカーの実行に使用されるすべてのノードで smpd サービスが実行されていなければなりません。
メモ
smpd
実行可能ファイルは、マッピング先のドライブからは実行されません。ローカルにインストールするか、実行可能ファイルへの UNC 絶対パス名を使用します。Microsoft® Windows Vista® はネットワーク共有インストール環境にある smpd
実行可能ファイルをサポートしないため、Windows Vista ではローカルにインストールしなければなりません。
管理者権限をもつユーザーとしてログインします。
Windows® コマンド プロンプトに入力して smpd を開始します。
matlabroot\bin\win64\smpd -install
このコマンドにより、サービスがインストールされ、開始されます。このサービスはインストールされている限り、ノードの起動時に開始されます。
このマシンがワーカー マシンであり、ここでインストーラーを実行しておらず MATLAB Parallel Server ソフトウェアがインストールされていない場合 (たとえば、共有インストールから MATLAB Parallel Server ソフトウェアを実行している場合)、Windows コマンド プロンプトで次のコマンドを実行します。
matlabroot\bin\matlab.bat -install_vcrt
このコマンドにより、スケジューラによるジョブの実行に必要な Microsoft ランタイム ライブラリがインストールされます。
クラスター ノード上で Windows ファイアウォールを使用している場合は、Windows コマンド プロンプトで次を実行します。
matlabroot\toolbox\parallel\bin\addMatlabToWindowsFirewall.bat
このコマンドは、許可されたプログラムとして MATLAB を追加します。別のファイアウォールを使用している場合は、これと同様の内容になるように構成しなければなりません。
このノードで実行されるジョブの投入ユーザーとしてログインします。
以下を入力して、このユーザーの mpiexec の使用を登録します。
matlabroot\bin\win64\mpiexec -register
このマシン上でジョブを実行するすべてのユーザーについて、手順 5 ~ 6 を繰り返します。
クラスター内のすべての Windows ノード上で、これらすべての手順を繰り返します。
サーバー上の Windows ファイアウォールの構成
クラスター ノード上で Windows ファイアウォールを使用している場合は、次を行います。
管理者権限をもつユーザーとしてログインします。
Windows コマンド プロンプトで次を実行します。
matlabroot\toolbox\parallel\bin\addMatlabToWindowsFirewall.bat
このコマンドは、許可されたプログラムとして MATLAB を追加します。別のファイアウォールを使用している場合は、これと同様の内容になるように構成しなければなりません。