このページではリモートホストを各環境に合わせて設定する方法について説明していきます。 リモートホストは、OACIS実行ホストから(1)パスワードなしでSSH接続でき、(2)xsub導入済みであることが必要です。
一般的にHPCやクラスタを使用するときにはTorqueなどのジョブスケジューラを経由してジョブを実行します。
ジョブスケジューラに投入する際には確保するノード数などを指定して実行する必要がありますが、ジョブの投入方法やパラメータの指定方法がシステムによって大きく異なります。 そこでOACISではジョブスケジューラの差異を吸収するために、 xsub またはxsub_py というラッパスクリプトを経由してジョブ投入します。 xsubコマンドは各実行ホストに事前に設定しておく必要があります。
xsubの導入方法はxsubのページまたはxsub_pyのページを参照してください。(xsubはRubyで、xsub_pyはPythonで実装されたxsubコマンドです。) インストール後には xsub, xstat, xdel というコマンドが利用可能になっているはずです。
(注)OACISはこれらのコマンドをbashのログインシェルから実行します。
(bash -l
コマンド経由で実行される。)
PATHなどの環境変数の設定は”.bash_profile”で行ってください。
ジョブ投入時に指定する必要があるパラメータ(ノード数など)を”ホストパラメータ”と呼んでいます。 スケジューラのタイプごとに指定するホストパラメータは異なりますが、OACISはHostを登録する際に必要なホストパラメータについての情報をリモートホストのxsubコマンドから取得します。 つまりOACISのウェブUIでホストを登録する前に、リモートホスト側でxsubのセットアップを完了している必要があります。 ここで取得されたホストパラメータはRunの作成時に指定できるようになります。 下図のように、Runを作成する際に入力用のフォームが現れます。
OACISにリモートホストを登録する時に設定する項目について説明します。
フィールド | 説明 |
---|---|
Name | Hostの名前。”~/.ssh/config”のHostで指定される名前。 |
Work base dir | ワークディレクトリとして利用するホスト上のパス。ここで指定したパス以下でジョブが実行される。 |
Mounted work base dir | localhostでジョブを実行する場合やホームディレクトリがNFSで共有されている場合など、OACISが実行中のサーバーからWork base dirを直接参照できる場合のパス。マウントされていない場合は空白にしておく |
Max num jobs | このホストに投入可能なジョブの最大数。 |
Polling interval | ジョブのステータスを確認するインターバル。ここで指定した時間間隔でSSH接続しジョブの状態を確認する。 |
MPI processes | MPIプロセス数の最小値と最大値。Runを作成するときにここで指定した範囲外の値を指定しようとするとエラーになる。 |
OMP threads | OMPスレッド数の最小値と最大値。Runを作成するときにここで指定した範囲外の値を指定しようとするとエラーになる。 |
Executable simulators | 実行可能なSimulatorをチェックボックスで指定。 |
Executable analyzers | 実行可能なAnalyzerをチェックボックスで指定。 |
HostのSSH接続についての情報は”~/.ssh/config”ファイルに記述する必要があります。例えば、”MyHost”という名前のホストの設定は以下のように記述します。
Host MyHost
HostName example.com
User user_ABC
IdentityFile ~/.ssh/id_rsa
port 22
ホスト登録時に”no such command xsub” というエラーが発生した場合は、そのホストでXSUBの設定を確認してください。正しく設定されていれば、OACISのマシンの端末から下記のコマンドを実行するとリモートホストの設定が取得できるはずです。
京コンピュータでジョブを実行する場合、実行するシミュレーターのファイルもステージングする必要があるため、他のホストとは異なる設定が必要になります。
実行コマンドは絶対パスやホームディレクトリからの相対パスで指定する事はできません。ステージング後のパスが異なるためです。 そこで、プリプロセスを使って実行ファイルをカレントディレクトリにコピーし、実行コマンドはカレントディレクトリからの相対パスで指定するようにします。
実行ファイルが ~/path/to/simulator.out
にある場合、プリプロセスには以下のように書きます。
cp ~/path/to/simulator.out .
xsubで実行すると、各ワークディレクトリが丸ごとステージインされるので、必要なファイルはすべてカレントディレクトリに事前にコピーしておきます。
実行コマンドは以下のように指定します。
./simulator.out
このように設定しておけば、xsubがカレントディレクトリを丸ごとステージインして実行してくれます。 実行結果は、他のホストの場合と同様にカレントディレクトリ以下に配置しておけば、ステージアウトして結果を取り込んでくれるので、特にステージアウトするファイルを指定する必要はありません。
また京に対してもxsub
またはxsub_py
を導入する必要があります。RubyまたはPythonで実装されているので、ログインノードにRubyまたはPythonをインストールする必要があります。
Rubyを使う場合、rbenvやrvmなどのツールを使用すると比較的簡単に導入することができます。