主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

汎用スケジュラのプラグンスクリプト

汎用スケジュランタフェスはmatlab®クライアント,MATLABワーカー,サードパーティ製スケジューラの相互作用を構成するための非常に高い柔軟性を提供します。プラグaapl . exeンスクリプトは,使用している設定とaapl . exe matlabとの相互作用を定義します。

次の表は,サポ,トされているプラグ,ンスクリプト関数とそれらが評価される段階を示します。

ファ@ @ル名 段階
independentSubmitFcn.m 個別のジョブの投入
communicatingSubmitFcn.m 通信ジョブの投入
getJobStateFcn.m ジョブの状態のクエリ
canceJobFcn.m ジョブのキャンセル
cancelTaskFcn.m タスクのキャンセル
deleteJobFcn.m ジョブの削除
deleteTaskFcn.m タスクの削除
postConstructFcn.m parallel.cluster.Genericンスタンスの作成後

これらのプラグ▪▪ンスクリプトは,予期されるファ▪▪ル名をも,か▪▪クラスタ▪の(PluginScriptsLocation)プロパティで指定されたフォルダ,にある場合にのみ評価されます。汎用クラスタプロファルの設定方法の詳細にいては,汎用スケジュランタフェスを使用した構成(MATLAB并行服务器)を参照してください。

メモ

独立ジョブを投入するにはindependentSubmitFcn.mが存在していなければならず,通信ジョブを投入するにはcommunicatingSubmitFcn.mが存在していなければなりません。

サンプルのプラグ@ @ンスクリプト

汎用スケジューラインターフェイスの使用をサポートするため,次のサードパーティ製スケジューラ向けのプラグインスクリプトが用意されています。

3。

  • 共有——クライアントはスケジューラに直接送信することができ,クライアントとクラスターノード(マシン)に共有ファイルシステムがある。

  • リモート——クライアントとクラスターノードに共有ファイルシステムがあるが,クライアントマシンは直接スケジューラに送信できない(スケジューラのクライアントユーティリティがインストールされていない場合など)。このモ,ドはsshプロトコルを使用して,リモ,トホストを使用するスケジュ,ラにコマンドを送信します。

  • 非共有-クラアントとクラスタノドに共有ファルシステムがない。このモ,ドでは,リモ,トホストからsshプロトコトルを使用してスケジューラにコマンドを送信し,クラスターファイルシステムへのジョブおよびタスクファイルのコピーにはsftpプロトコルを使用します。

それぞれの送信モドには,ンストルフォルダ内に独自のサブフォルダが設けられています。このサブフォルダ,には,スクリプトの使用方法に関する具体的な説明が記載された自述ファ@ @ルが含まれています。スクリプトを使用する前に,使用しているネットワ,ク設定を示す送信モ,ドを決定します。

インストーラーを実行するには,スケジューラに適するサポートパッケージをダウンロードし,MATLABクライアントで開きます。インストーラーには,クラスター構成のクラスタープロファイルを作成する手順を案内するウィザードが含まれています。

プラグ超市超市ンスクリプトの動作をカスタマ超市超市ズする場合は,AdditionalSubmitArgsなどの追加のプロパティを設定できます。詳細にいては,サンプルプラグ▪▪ンスクリプトの動作のカスタマ▪▪ズ(MATLAB并行服务器)を参照してください。

サポートパッケージのいずれかでスケジューラまたはクラスター構成がサポートされていない場合,いずれかのパッケージのスクリプトを変更することを推奨します。汎用スケジュラ用の一連のプラグンスクリプトを記述する方法の詳細にいては,カスタムプラグ@ @ンスクリプトの記述を参照してください。

ラッパ,スクリプト

サンプルのプラグ@ @ンスクリプトでは“ラッパ”スクリプトを使用してindependentSubmitFcn.mcommunicatingSubmitFcn.mの実装を簡略化しています。これらのスクリプトは必須ではありませんが,コ,ドを読みやすくするためにこれらの使用を推奨します。この表ではこれらのスクリプトを説明します。

ファ@ @ル名 説明
independentJobWrapper.sh 適切な引数を指定してmatlab実行可能ファescルの呼び出しを組み込むためにindependentSubmitFcn.mで使用されます。実行可能ファ@ @ルの場所とその引数に環境変数を使用します。使用例は,Slurmスケジュ,ラ用サンプルスクリプトを参照してください。
communicatingJobWrapper.sh クラスタ,に通信ジョブを分配するためにcommunicatingSubmitFcn.mで使用されます。このスクリプトはスケジュラジョブを投入してmpiプロセスを起動の手順を実装します。使用例は,Slurmスケジュ,ラ用サンプルスクリプトを参照してください。

カスタムプラグ@ @ンスクリプトの記述

メモ

独自のプラグインスクリプトを記述する場合,お使いの設定に最も近いサンプルプラグインスクリプトを変更することから始めることをお勧めします(サンプルのプラグ@ @ンスクリプトを参照)。

independentSubmitFcn

独立ジョブを汎用クラスタ,に投入すると,関数independentSubmitFcn.mがmatlabクラescアントセッションで実行されます。

この関数の宣言行は次のとおりでなければなりません。

函数independentSubmitFcn(集群、工作environmentProperties)

Matlabの独立ジョブの各タスクはスケジュラの1のジョブに対応します。この関数の目的はN個のジョブをサ,ドパ,ティ製スケジュ,ラに投入することです。ここで,Nは独立ジョブ内のタスクの数です。これらの各ジョブは次を満たさなければなりません:

  1. 実行する個別のタスクを識別するためにmatlabワカに必須の5の環境変数を設定する。詳細にいては,ワ,カ,環境の構成を参照してください。

  2. MATLABワーカーを起動してタスクを実行するための適切なMATLAB実行可能ファイルを呼び出す。詳細にいては,スケジュラジョブを投入してmatlabワカを実行を参照してください。

ワカ環境の構成-この表に,個々のタスクを実行するために,ワーカーのMATLABに設定しなければならない5つの環境変数と値を示します。

環境変数の名前 環境変数の値
PARALLEL_SERVER_DECODE_FUNCTION “parallel.cluster.generic.independentDecodeFcn”
PARALLEL_SERVER_STORAGE_CONSTRUCTOR environmentProperties。StorageConstructor
PARALLEL_SERVER_STORAGE_LOCATION
  • クラアントとクラスタノド間に共有ファルシステムがある場合はenvironmentProperties。StorageLocationを使用します。

  • クライアントとクラスターノード間に共有ファイルシステムがない場合は,すべてのクラスターノードからアクセスできるフォルダーを選択します。クラアントマシンからスケジュラに直接送信できない場合は,共有ファ@ @ルシステムなしでの送信を使用した送信方法の説明を参照してください。

PARALLEL_SERVER_JOB_LOCATION environmentProperties。JobLocation
PARALLEL_SERVER_TASK_LOCATION environmentProperties。TaskLocations {n}n番目のタスク

多くのスケジュラは投入コマンドの一部としてクラアント環境をコピすることをサポトしています。サポトしている場合、クライアントに以前の環境変数を設定できるため、スケジューラは設定をワーカー環境にコピーできます。サポートしていない場合は、これらの変数を転送するように投入コマンドを変更しなければなりません。

スケジュ,ラジョブを投入してMATLABワカを実行-ジョブおよびタスクに必須の5つのパラメーターがワーカー上で定義されると,適切な引数を指定してMATLAB実行可能ファイルを呼び出すことにより,タスクが実行されます。呼び出すmatlab実行可能ファescルはenvironmentProperties。MatlabExecutableに定義されます。渡す引数はenvironmentProperties。MatlabArgumentsに定義されます。

メモ

クラアントマシンからスケジュラに直接送信できない場合は,リモ,トホストからの送信sshを使用した送信方法の説明を参照してください。

Slurmスケジュラ用サンプルスクリプト-このスクリプトは,共有ファイルシステムをもつ粘ス很多ケジューラ用の基本的な投入関数を示します。より詳細な例にいては,サンプルのプラグ@ @ンスクリプトを参照してください。

函数independentSubmitFcn(集群、工作environmentProperties)%指定所需的环境变量。setenv (“PARALLEL_SERVER_DECODE_FUNCTION”“parallel.cluster.generic.independentDecodeFcn”);setenv (“PARALLEL_SERVER_STORAGE_CONSTRUCTOR”, environmentProperties.StorageConstructor);setenv (“PARALLEL_SERVER_STORAGE_LOCATION”, environmentProperties.StorageLocation);setenv (“PARALLEL_SERVER_JOB_LOCATION”, environmentProperties.JobLocation);指定要在工作线程上运行的MATLAB可执行文件和参数。这些在independentJobWrapper.sh脚本中使用。setenv (“PARALLEL_SERVER_MATLAB_EXE”, environmentProperties.MatlabExecutable);setenv (“PARALLEL_SERVER_MATLAB_ARGS”, environmentProperties.MatlabArguments);ii = 1:environmentProperties。NumberOfTasks指定识别要运行的任务所需的环境变量。setenv (“PARALLEL_SERVER_TASK_LOCATION”, environmentProperties.TaskLocations{二});指定将作业提交给SLURM调度器的命令。SLURM将自动将环境变量复制到worker。commandToRun =' batch——ntasks=1 independentJobWrapper.sh';[cmdFailed, cmdOut] = system(commandToRun);结束结束

前述の例はシンプルなbashスクリプトindependentJobWrapper.shをスケジュ,ラに送信します。independentJobWrapper.shスクリプトは次の環境変数を使用してmatlab実行可能ファescルと引数を埋め込みます。

/ bin / sh# PARALLEL_SERVER_MATLAB_EXE - MATLAB可执行的使用# PARALLEL_SERVER_MATLAB_ARGS - MATLABarg游戏使用执行" $ {PARALLEL_SERVER_MATLAB_EXE} "$ {PARALLEL_SERVER_MATLAB_ARGS}

communicatingSubmitFcn

通信ジョブを汎用クラスタ,に投入すると,関数communicatingSubmitFcn.mがmatlabクラescアントセッションで実行されます。

この関数の宣言行は次のとおりでなければなりません。

函数communicatingSubmitFcn(集群、工作environmentProperties)

この関数の目的はスケジュ,ラに単一のジョブを投入することです。このジョブは次を満たさなければなりません。

  1. 実行するジョブを識別するためにmatlabワカに必須の4の環境変数を設定する。詳細にいては,ワ,カ,環境の構成を参照してください。

  2. Mpiを呼び出してジョブをN個のmatlabワ,カ,に分散する。NはmatlabジョブのNumWorkersRangeプロパティに指定されている最大値に対応します。詳細にいては,スケジュラジョブを投入してmpiプロセスを起動を参照してください。

ワカ環境の構成-この表に,通信ジョブのタスクを実行するためにワーカーのMATLABに設定しなければならない4つの環境変数と値を示します。

環境変数の名前 環境変数の値
PARALLEL_SERVER_DECODE_FUNCTION “parallel.cluster.generic.communicatingDecodeFcn”
PARALLEL_SERVER_STORAGE_CONSTRUCTOR environmentProperties。StorageConstructor
PARALLEL_SERVER_STORAGE_LOCATION
  • クラアントとクラスタノド間に共有ファルシステムがある場合はenvironmentProperties。StorageLocationを使用します。

  • クライアントとクラスターノード間に共有ファイルシステムがない場合は,すべてのクラスターノードに存在するフォルダーを選択します。クラアントマシンからスケジュラに直接送信できない場合は,共有ファ@ @ルシステムなしでの送信を使用した送信方法の説明を参照してください。

PARALLEL_SERVER_JOB_LOCATION environmentProperties。JobLocation

多くのスケジュラは投入コマンドの一部としてクラアント環境をコピすることをサポトしています。サポトしている場合、クライアントに以前の環境変数を設定できるため、スケジューラは設定をワーカー環境にコピーできます。サポートしていない場合は、これらの変数を転送するように投入コマンドを変更しなければなりません。

スケジュラジョブを投入してmpiプロセスを起動-ジョブの4の必須パラメタを定義した後,mpiexecを使用してN個のワ,カ,matlabプロセスを起動し,ジョブを実行します。mpiexecは并行计算工具箱™に付属のソフトウェアで,ワーカーのMATLABプロセス間の通信を可能にするメッセージパッシングインターフェイス(MPI)規格を実装しています。mpiexecの詳細にいては,Mpichのホ,ムペ,ジを参照してください。

ジョブを実行するには,ジョブをスケジュ,ラに投入しなければなりません。スケジュ,ラは次の手順を実行します。matlabrootはワカノド上のmatlabンストルの場所を指す点に注意してください。

  1. スケジュ,ラからN個のプロセスを要求します。NはmatlabジョブのNumWorkersRangeプロパティに指定された最大値に対応します。

  2. mpiexecを呼び出し,ワ,カ,のmatlabプロセスを起動します。各ホストで起動するワーカーのMATLABプロセスの数は,スケジューラによって割り当てられたプロセス数と一致していなければなりません。mpiexec実行可能ファ@ @ルはmatlabroot / bin / mw_mpiexecにあります。

    mpiexecコマンドは,起動したプロセスに環境変数を自動的に転送します。そのため,mpiexecを実行する前に,ワ,カ,環境の構成にリストされた環境変数が設定されていることを確認してください。

    mpiexecのオプションの詳細にいては,使用Hydra进程管理器を参照してください。

メモ

前述の手順の詳細な例にいては,サンプルのプラグ@ @ンスクリプトのすべてのサンプルプラグ@ @ンスクリプトと共に提供されているcommunicatingJobWrapper.shスクリプトを参照してください。独自のスクリプトを記述する必要がある場合は,このスクリプトを開始点として使用してください。

Slurmスケジュラ用サンプルスクリプト-次のスクリプトは,共有ファイルシステムをもつ粘ス很多ケジューラ用の基本的な投入関数を示します。

投入されるジョブはbashスクリプトcommunicatingJobWrapper.shに含まれています。このスクリプトは,スケジュラジョブを投入してmpiプロセスを起動のslurmスケジュ,ラに関連するステップを実装します。より詳細な例にいては,サンプルのプラグ@ @ンスクリプトを参照してください。

函数communicatingSubmitFcn(集群、工作environmentProperties)指定四个所需的环境变量。setenv (“PARALLEL_SERVER_DECODE_FUNCTION”“parallel.cluster.generic.communicatingDecodeFcn”);setenv (“PARALLEL_SERVER_STORAGE_CONSTRUCTOR”, environmentProperties.StorageConstructor);setenv (“PARALLEL_SERVER_STORAGE_LOCATION”, environmentProperties.StorageLocation);setenv (“PARALLEL_SERVER_JOB_LOCATION”, environmentProperties.JobLocation);指定要在工作线程上运行的MATLAB可执行文件和参数。指定MATLAB安装在集群节点上的位置。这些在communicatingJobWrapper.sh脚本中使用。setenv (“PARALLEL_SERVER_MATLAB_EXE”, environmentProperties.MatlabExecutable);setenv (“PARALLEL_SERVER_MATLAB_ARGS”, environmentProperties.MatlabArguments);setenv (“PARALLEL_SERVER_CMR”, cluster.ClusterMatlabRoot);numberOfTasks = environmentProperties.NumberOfTasks;指定向SLURM调度程序提交作业的命令%请求的进程与作业中的任务一样多。SLURM将自动将环境变量复制到worker。commandToRun = sprintf('sbatch——ntasks=%d communicatingJobWrapper.sh', numberOfTasks);[cmdFailed, cmdOut] = system(commandToRun);结束

getJobStateFcn

汎用クラスタ,で作成されたジョブの状態をクエリすると,関数getJobStateFcn.mがmatlabクラescアントセッションで実行されます。この関数の宣言行は次のとおりでなければなりません。

函数state = getJobStateFcn(cluster,job,state)

サードパーティ製スケジューラを使用している場合,スケジューラは,ローカルジョブストレージからツールボックスが使用できる情報よりも新しいジョブ関連情報をもつ可能性があります。この状況は特に,非共有のファイルシステムを使用している場合(リモートファイルシステムがローカルデータの場所への大規模データファイルの伝播が遅い可能性がある場合)に当てはまります。

スケジュ,ラから情報を取得するには,クラスタ,の(PluginScriptsLocation)に関数getJobStateFcn.mを追加します。

この関数に渡される状態は,ロ,カルジョブストレ,ジから派生した状態です。これにより,この関数の本体がスケジューラをクエリしてジョブのより正確な状態を判定し,保存された状態の代わりに返すことができます。この目的で作成された関数は,ジョブオブジェクトの状態の有効な値を返さなければなりません。使用できる値は“等待”“排队”“奔跑”“完成”,または“失败”です。

Matlabタスクを対応するスケジュラジョブidとペアにする手順にいては,汎用スケジュ,ラによるジョブの管理を参照してください。

cancelJobFcn

汎用クラスタで作成されたジョブをキャンセルすると,matlabクラアントセッションで関数cancelJobFcn.mが実行されます。この関数の宣言行は次のとおりでなければなりません。

函数OK = canceljobbfcn (cluster,job)

汎用スケジューラインターフェイスを使用して作成されたジョブをキャンセルすると,既定でこのアクションはストレージ内のジョブデータにのみ影響します。スケジューラ上の対応するジョブをキャンセルするには,いつ何を実行するかに関する命令をスケジューラに指示しなければなりません。このためには,クラスタ,の(PluginScriptsLocation)に関数cancelJobFcn.mを追加します。

これにより,この関数の本体がスケジューラにコマンド(キューから対応するジョブを削除する,など)を送信できます。この関数は,スケジューラのジョブのキャンセルの成功または失敗を示す逻辑スカラーを返さなければなりません。

Matlabタスクを対応するスケジュラジョブidとペアにする手順にいては,汎用スケジュ,ラによるジョブの管理を参照してください。

cancelTaskFcn

汎用クラスタ,で作成されたタスクをキャンセルすると,関数cancelTaskFcn.mがmatlabクラescアントセッションで実行されます。この関数の宣言行は次のとおりでなければなりません。

函数OK = cancelTaskFcn(cluster,task)

汎用スケジューラインターフェイスを使用して作成されたタスクをキャンセルすると,既定でストレージ内のタスクデータのみが影響を受けます。スケジューラ上の対応するジョブをキャンセルするには,いつ何を実行するかに関する命令をスケジューラに指示しなければなりません。このためには,クラスタ,の(PluginScriptsLocation)に関数cancelTaskFcn.mを追加します。

これにより,この関数の本体がスケジューラにコマンド(スケジューラのキューから対応するジョブを削除する,など)を送信できます。この関数は,スケジューラのジョブのキャンセルの成功または失敗を示す逻辑スカラーを返さなければなりません。

Matlabタスクを対応するスケジュラジョブidとペアにする手順にいては,汎用スケジュ,ラによるジョブの管理を参照してください。

deleteJobFcn

汎用クラスタ,を使用して作成されたジョブを削除すると,deleteJobFcn.m関数がmatlabクラescアントセッションで実行されます。この関数の宣言行は次のとおりでなければなりません。

函数deleteTaskFcn(集群,任务)

汎用スケジューラインターフェイスを使用して作成されたジョブを削除すると,既定でストレージ内のジョブデータのみが影響を受けます。スケジューラ上の対応するジョブを削除するには,いつ何を実行するかに関する命令をスケジューラに指示しなければなりません。このためには,クラスタ,の(PluginScriptsLocation)に関数deleteJobFcn.mを追加します。

これにより,この関数の本体がスケジューラにコマンド(キューから対応するジョブを削除する,など)を送信できます。

Matlabタスクを対応するスケジュラジョブidとペアにする手順にいては,汎用スケジュ,ラによるジョブの管理を参照してください。

deleteTaskFcn

汎用クラスタを使用して作成されたタスクを削除すると,matlabクラアントセッションで関数deleteTaskFcn.mが実行されます。この関数の宣言行は次のとおりでなければなりません。

函数deleteTaskFcn(集群,任务)

汎用スケジューラインターフェイスを使用して作成されたタスクを削除すると,既定でストレージ内のタスクデータのみが影響をうけます。スケジューラ上の対応するジョブを削除するには,いつ何を実行するかに関する命令をスケジューラに指示しなければなりません。このためには,クラスタ,の(PluginScriptsLocation)に関数deleteTaskFcn.mを追加します。

これにより,この関数の本体がスケジューラにコマンド(スケジューラのキューから対応するジョブを削除する,など)を送信できます。

Matlabタスクを対応するスケジュラジョブidとペアにする手順にいては,汎用スケジュ,ラによるジョブの管理を参照してください。

postConstructFcn

Matlabにクラスタのンスタンスを作成した後,Matlabクラアントセッションで関数postConstructFcn.mが実行されます。たとえば,次のコ,ド行はクラスタ,の,“myProfile”クラスタプロファルに関連付けられた関数postConstructFcnを実行します。

C = parcluster(“myProfile”);

関数postConstructFcnの宣言行は次のとおりでなければなりません。

函数postConstructFcn(集群)

クラスタ,の使用前にそのカスタム構成を実行する必要がある場合は,クラスタ,のPluginScriptsLocationに関数postConstructFcn.mを追加します。この関数の本体には,必要な任意の追加ステップを含めることができます。

ユザカスタマゼションの追加

実行時にプラグインスクリプトの機能を変更する必要がある場合は,汎用スケジューラインターフェイスの(AdditionalProperties)プロパティを使用します。

例として,slurmスケジュ,ラを考えます。SLURMの投入コマンドは、実行するノードを指定できる引数——节点列表を受け入れます。プラグesc escンスクリプトを変更することなく,この引数の値を変更できます。この機能を追加するには,independentSubmitFcn.mおよびcommunicatingSubmitFcn.mのスクリプトに次のコ,ドパタ,ンを含めます。

SLURM基本提交命令submitCommand =“sbatch”检查是否定义了属性如果isprop(集群。AdditionalProperties,的节点列表添加适当的参数和值提交字符串submitCommand = [submitCommand .”——节点列表= 'cluster.AdditionalProperties.NodeList];结束

このコディングパタンの使用方法の例にいては,サンプルのプラグ@ @ンスクリプトのスクリプトの非共有投入関数を参照してください。

クラスタ、プロファ、ジャ、からのAdditionalPropertiesの設定

前述の例のスクリプトを変更して,汎用クラスタ,プロファ,ルにAdditionalPropertiesのエントリを追加し,使用するノ,ドのリストを指定できます。これにより,プラグインスクリプトに追加されたカスタマイズをドキュメント化する方法が,クラスタープロファイルを共有するすべてのユーザーに提供されます。

节点列表プロパティをクラスタプロファルに追加するには次を行います。

  1. [並列][クラスタプロファルの管理]を選択して,matlabデスクトップからクラスタプロファルマネジャを起動します。

  2. 汎用クラスタのプロファルを選択し,[編集]をクリックします。

  3. (AdditionalProperties)テ,ブルに移動し,[追加]をクリックします。

  4. [名前]节点列表を入力します。

  5. [型](字符串)に設定します。

  6. [値]をノ,ドのリストに設定します。

MATLABコマンドラ▪▪ンからのAdditionalPropertiesの設定

ユザカスタマゼションの追加のスクリプトを変更して,ジョブの投入前にクラスターオブジェクトの適切なプロパティを設定することで,MATLABコマンドラインからノードのリストを編集できます。

C = parcluster;c.AdditionalProperties.NodeList =“gpuNodeName”;J = c.batch(“myScript”);

AdditionalPropertiesオブジェクトを表示して,現在定義されているすべてのプロパティとその値を確認します。

>> c.AdditionalProperties ans = AdditionalProperties with properties: ClusterHost: 'myClusterHost' NodeList: 'gpuNodeName' RemoteJobStorageLocation: '/tmp/jobs'

汎用スケジュ,ラによるジョブの管理

ジョブ管理の最初の要件は,MATLABジョブオブジェクトに対応するスケジューラ上のジョブを識別することです。ジョブをスケジューラに投入するときに,投入関数内で投入を行うコマンドにより,スケジューラからジョブに関するいくつかのデータを返すことができます。通常,このデ,タにはジョブidが含まれます。このスケジューラジョブIDをMATLABジョブオブジェクトと共に保存しておくことにより,後で管理コマンドをスケジューラに送信するときに,このジョブIDを使用してスケジューラジョブを参照することができます。同様に,MATLABタスクIDとスケジューラジョブIDのマップを保存して,個別のタスクの管理に役立てることができます。このクラスタデタを保存するルボックス関数はsetJobClusterDataです。

ジョブスケジュ,ラデ,タの保存

この例では,関数independentSubmitFcn.mを変更して,slurmスケジュ,ラに送信された各コマンドの出力を解析する方法を説明します。正規表現を使用して各タスクのスケジュラジョブidを抽出し,setJobClusterDataを使用して保存できます。

模式从SLURM间歇输出中提取调度器作业IDsearchPattern ='.*提交批处理作业([0-9]+).*';jobIDs = cell(numberOfTasks, 1);ii = 1:numberOfTasks setenv(“PARALLEL_SERVER_TASK_LOCATION”, environmentProperties.TaskLocations{二});commandToRun =' batch——ntasks=1 independentJobWrapper.sh';[cmdFailed, cmdOut] = system(commandToRun);jobIDs{ii} = regexp(cmdOut, searchPattern,“令牌”“一次”);结束%在作业集群数据上设置作业id集群。setJobClusterData(工作、结构(“ClusterJobIDs”, {jobIDs}));

ジョブスケジュ,ラデ,タの取得

この例ではcancelJobFcn.mを変更して,slurmスケジュ,ラ上の対応するジョブをキャンセルします。この例では,getJobClusterDataを使用してジョブスケジュ,ラデ,タを取得します。

函数OK = canceljobbfcn (cluster, job)获取此作业的调度程序信息。data = cluster.getJobClusterData(job);jobIDs = data.ClusterJobIDs;ii = 1:长度(jobIDs)告诉SLURM调度程序取消作业。commandToRun = sprintf(“scancel“% s”, jobIDs{二});[cmdFailed, cmdOut] = system(commandToRun);结束OK = true;

リモ,トホストからの送信

Matlabクラeconpアントがスケジュ,ラに直接送信できない場合,parallel.cluster.RemoteClusterAccessを使用して接続を確立し,リモ,トホストでコマンドを実行します。

このオブジェクトはsshプロトコルを使用しているため,リモ,トホストでsshデ,モンサ,ビスが実行されている必要があります。接続を確立するには,リモートホストのユーザー名とパスワードを入力するか,有効なIDファイルを指定しなければなりません。

次のコ,ドは,リモ,トホストremoteHostnameでユザ用户としてコマンドを実行します。

这将提示输入用户的密码access = parallel.cluster.RemoteClusterAccess.getConnectedAccess(“remoteHostname”“用户”);在remoteHostname上执行命令[cmdFailed, cmdOut] = access.runCommand(commandToRun);

リモトホスト送信を使用したプラグンスクリプトの例にいては,サンプルのプラグ@ @ンスクリプトのリモ,ト送信モ,ドを参照してください。

共有ファ@ @ルシステムなしでの送信

Matlabクラアントとクラスタノドに共有ファルシステムがない場合は,parallel.cluster.RemoteClusterAccessを使用して接続を確立し,クライアントとクラスターのノードの間でジョブとタスクのファイルをコピーします。

このオブジェクトはsshプロトコルを使用しているため,リモ,トホストでsshデ,モンサ,ビスが実行されている必要があります。接続を確立するには,リモートホストのユーザー名とパスワードを入力するか,有効なIDファイルを指定しなければなりません。

非共有送信を使用する場合は,クライアント上で使用するローカルジョブストレージの場所と,クラスター上で使用するリモートジョブストレージの場所の両方を指定しなければなりません。リモ,トジョブストレ,ジの場所は,クラスタ,のすべてのノ,ドから利用できなければなりません。

parallel.cluster.RemoteClusterAccessはファイルのミラーリングを使用して,ローカルのジョブおよびタスクのファイルをクラスター上のそれぞれと継続的に同期します。ファイルのミラーリングがはじめて開始されるときに,ローカルのジョブおよびタスクのファイルがリモートジョブストレージの場所にアップロードされます。ジョブの実行時に,ファイルのミラーリングはリモートジョブストレージの場所で新しいファイルおよび更新を継続的にチェックし,それらのファイルをクライアントのローカルストレージにコピーします。この手続きにより,MATLABクライアントは常に,スケジューラで実行されているジョブとタスクの最新の状態を把握しています。

次の例では,リモ,トホストremoteHostnameにユザ用户として接続し,同期するリモ,トクラスタ,ストレ,ジの場所として/远程/存储を設定します。次に,ジョブのファルのミラリングを開始し,ジョブのロカルファルをクラスタ上の/远程/存储にコピ,し,あらゆる変更を同期してロ,カルマシンに反映します。

这将提示输入用户的密码access = parallel.cluster.RemoteClusterAccess.getConnectedAccessWithMirror(“remoteHostname”/远程/存储的“用户”);为作业启动文件镜像access.startMirrorForJob(工作);

共有ファaapl . exeルシステムを使用しないプラグaapl . exeンスクリプトの例にaapl . exeいては,サンプルのプラグ@ @ンスクリプトの非共有送信モ,ドを参照してください。

関連するトピック