7. リモートジョブ
リモートジョブ投入機能を用いると、Winmostarをインストールしたマシンとは別のLinuxマシン( リモートサーバ と呼ぶ)でソルバを実行することが可能になります。
7.1. 対応するリモート環境
Winmostarは 推奨するリモートサーバ に記載のジョブスケジューラに対応しています。
Torque, OpenPBS, PBS Professional (PBS)
Sun Grid Engine (SGE), Univa Grid Engine (UGE), Altair Grid Engine (AGE)
Slurm Workload Manager (SLURM)
FUJITSU Software Technical Computing Suite (PJM)
対応するジョブスケジューラがリモートサーバにインストールされていない場合は、以下の方法でリモートジョブを実行することができます。
Queue の設定で
Run
を選択する。qsub , qstat などのコマンドを模倣するコマンド、スクリプトを用意し、必要に応じてそれらのコマンドの接頭辞を Prefix for Queueing Commands で指定する。
また、リモートサーバ上で基本的にbashシェルで動作することを想定しています。 その他のシェルで動作させることも可能ですが、スクリプトの変更などに手間がかかる可能性があります。
7.2. ファイルモードにおけるリモートジョブの設定手順
プロジェクトモードにおけるリモートジョブ設定手順は 基本的な操作の流れ を参照してください。
シミュレーションを実行する全体的な手順の流れは 基本的な操作の流れ を参照してください。
各機能の詳細は Submit Remote Jobウィンドウの各機能 を参照してください。
計算を実行したいサーバに、ジョブスケジューラとソルバをインストール・設定してください。この段階で、Winmostarを使わずサーバにSSHでログインし、ターミナル上でソルバを起動できる状態にする必要があります。
これからインストールする場合は、 こちら を参考にしてください。
ジョブのスケジューリングを使わずにジョブを実行する場合(多数のジョブを実行する際には推奨しません)、ジョブスケジューラのセットアップは不要で、後ほど Queue の設定において
Run
を選択してください。
ツールバーの リモートジョブ投入 ボタン をクリックします。
Submit Remote Job ウィンドウにおいて、すでに設定が済んでいるプロファイルを使う場合は、 Profile で使うプロファイルを選択します。これから設定する場合は、 を選択します。
Edit Profile ウィンドウ上部にて、以下の内容を入力します。
Profile Name
Connection
Hostname
Port(通常は22を使用)
Timeout(わからない場合はデフォルト値を使用)
Username
Password(秘密鍵の時はパスフレーズを入力、それ以外の時はパスワードを入力)
SSH Private Key(秘密鍵を使う時のみ必要)
TSUBAME、FOCUSなどに多段SSH接続する方法は リモートジョブの詳細設定 を参照してください。
SSH接続をテストするために、 Edit Profile ウィンドウ下の Test Connection ボタンをクリックします。「接続テストとリモートサーバ上でのジョブスケジューラの動作テストを実行しますか?」と表示されたら 接続テストのみ をクリックします。
黒いターミナルウィンドウが開いて初回接続時は、
Store key in cache? (y/n)
と表示される場合があります。その場合は、 y とキー入力します。接続に成功した場合は、「テストが正常に終了しました」と表示されます。
ユーザ設定等が間違っている場合は「テストが異常終了しました」と表示されるので1つ前の設定を見直してください。その場で正しいパスワードを入力した場合も、再度 Edit Profile ウィンドウでパスワードを再入力してください。
その他、 Submit Remote Job ウィンドウの下部に
ERROR: Connection timed out or an error occurred.
と表示された場合は、接続設定を見直してください。秘密鍵を使う場合は、鍵形式が異なるために接続できない場合があります。詳しくは SSH公開鍵・秘密鍵認証での接続方法 を参照してください。
入力内容に問題がないにも関わらず接続できない場合は、Winmostar内部でSSH接続に利用するライブラリ(libssh)のバージョンを切り替えることで接続できる場合があります。[ツール]-[環境設定]-[計算]-[SSH接続に古いバージョンのlibssh2(1.8.2)を使用する]のチェックを切り替えてください。
Edit Profile ウィンドウ下部にて、以下の内容を入力します。
Queue & Solver
Queue
Options( qsub 等のジョブをサブミットするコマンドの引数)
まず接続するサーバ上にインストールされたジョブスケジューラを Queue を選択します。 次に、 Options に qsub や sbatch 等のジョブをサブミットするコマンドの引数を入力します。確保するリソースの情報はここで設定します。
利便性を上げるため、個々のジョブに依存する並列数やファイル名などは、ジョブ実行時に代入されるエイリアスの形で入力することを推奨します。詳細は リモートジョブ機能で使用可能なエイリアス文字列 を参照してください。
スケジューラの動作をテストする場合は、 Edit Profile ウィンドウ下の Test Connection ボタンをクリックします。リモートサーバのキューが埋まっていてすぐにジョブが流れない時は、キューが空くまで待つか次に進んでください。「接続テストとリモートサーバ上でのジョブスケジューラの動作テストを実行しますか?」と表示されたら 両方実行 をクリックします。「ジョブスケジューラの動作テストの最大待ち時間を入力」と表示されたら適宜値を設定し OK をクリックします。「リモートサーバ上での(ソルバ名)のテストも実行しますか?...」と表示されたら いいえ をクリックします。
接続に成功した場合は、「テストが正常に終了しました」と表示されます。
設定が間違っている場合は「テストが異常終了しました」と表示されるので1つ前を見直してください。
Edit Profile ウィンドウ下部にて、以下の内容を入力します。
Queue & Solver
Solver
Shell Script
まず使用するソルバを Solver で選択します。 次に、 Shell Script の Use Template をクリックします。 選択したソルバの
テンプレートスクリプト
(ジョブ実行に使われるシェルスクリプトのテンプレート)がない場合は、テンプレートスクリプトの名前を入力すると、テンプレートスクリプトがテキストエディタで開かれます。 ある場合は、 Use Template の横のプルダウンメニューで使用したいテンプレートスクリプトを選択し、その下の Edit... ボタンをクリックするとテンプレートスクリプトがテキストエディタで開きます。テンプレートスクリプトには、 module load ... 、 source ... 、 export PATH=... などのコマンドや、 mpirun などの、そのサーバで選択したソルバを使用するための設定を書き入れます。書き入れる場所は極力テンプレートスクリプト内の # Insert commands here から # Do not modify the followings の間にしてください。
利便性を上げるため、テンプレートスクリプトには、個々のジョブに依存する並列数やファイル名などをジョブ実行時に代入されるエイリアスの形で入力することを推奨します。詳細は リモートジョブ機能で使用可能なエイリアス文字列 を参照してください。
ソルバの動作をテストする場合は、 Edit Profile ウィンドウ下の Test Connection ボタンをクリックします。リモートサーバのキューが埋まっていてすぐにジョブが流れない時は、キューが空くまで待つか次に進んでください。「接続テストとリモートサーバ上でのジョブスケジューラの動作テストを実行しますか?」と表示されたら 両方実行 をクリックします。「ジョブスケジューラの動作テストの最大待ち時間を入力」と表示されたら適宜値を設定し OK をクリックします。「リモートサーバ上での(ソルバ名)のテストも実行しますか?...」と表示されたら はい をクリックします。
接続に成功した場合は、「テストが正常に終了しました」と表示されます。
設定が間違っている場合は「テストが異常終了しました」と表示されるので1つ前の設定を見直してください。
OK ボタンを押して Edit Profile ウィンドウを閉じます。
Close ボタンを押して Submit Remote Job ウィンドウを閉じます。「リモートサーバの設定を保存しますか?」と表示されたら はい をクリックします。
7.3. ファイルモードにおけるリモートジョブの操作手順
プロジェクトモードにおけるリモートジョブの操作手順は 基本的な操作の流れ を参照してください。
各キューの使用状況を確認したい場合は Submit Remote Job ウィンドウで、 メニューをクリックします。
ファイルモードでジョブを開始したい場合は、 Send & Submit ボタンをクリックします。ここでの操作方法は、通常のローカルジョブと同じです。
ウィンドウ下部には、サブミットしたジョブのIDが表示されます。IDはジョブをキャンセル(kill)するときに使用します。
リモートサーバでジョブが実行されたディレクトリは、 Remote Directory で設定することができ、 実際使用されたものは Submit Remote Job ウィンドウの Remote Directory 欄に表示されます。
のジョブがリモートサーバ上で開始されると、標準出力は
winmos.o
、標準エラーはwinmos.e
というファイルにそれぞれ出力されます。ファイルモードでサブミットしたジョブの状況を確認したい場合は、
で確認してください。全てのジョブが完了した場合は---
と表示されます。サブミットしたジョブがあまりに早く終了した場合は、サブミットした直後であっても
---
と表示されます。リモートサーバ上の特定のジョブの状況を確認するときは、以下の操作を行ってください。
ls ボタン
cat ボタン
grep ボタン
tail ボタン
Get & Open ... ボタン
操作対象のジョブは、 Remote Directory 欄に表示されたものとなります。デフォルトの設定の場合は、メインウィンドウで対象としたいジョブの入力ファイルを開き、ジョブ投入時のプロファイルを選択してください。
ファイルモードでリモートサーバ上で終了したジョブの結果解析をローカルマシンで実行したい場合は、 Get All Files ボタンをクリックします。
操作対象のジョブは、 Remote Directory 欄に表示されたものとなります。デフォルトの設定の場合は、メインウィンドウで対象としたいジョブの入力ファイルを開き、ジョブ投入時のプロファイルを選択してください。
ファイル取得後は、ローカルジョブと同じ操作方法で結果解析を実施することができます。
7.4. Submit Remote Jobウィンドウの各機能
- Fileメニュー
- Revert All Changes
変更を破棄しサーバ設定ファイルを読み込み直します。
- Save Setting File
サーバ設定ファイルを上書き保存します。
- Import Setting File
サーバ設定ファイルを読み込み、その中に含まれているプロファイルを、既存のプロファイルのリストに追加します。
- Restore Setting File
サーバ設定ファイルを出荷時の状態に戻します。
- Close
このウィンドウを閉じます。
- Profileメニュー
- Add Profile, Duplicate Profile, Remove Profile
サーバ接続のプロファイルを追加、複製、削除します。 ウィンドウ内の Manage ボタンからも同様の操作が可能です。
- Edit Profile
サーバ接続のプロファイルを編集します。 一部の設定はSubmit Jobウィンドウ内で直接編集できます。
- Profile name
Submit Jobウィンドウで表示されるプロファイル名を指定します。
- Hostname
リモートサーバのホスト名またはIPアドレスを指定します。
- Port
接続に用いられるポート番号を指定します。
- Timeout
リモートサーバからの応答が無い際に、接続を自動的に切断する時間[単位:秒]を指定します。
- Username
リモートサーバへのログインID(ユーザ名)を指定します。
- Password
ログインIDのパスワードを指定します。[View]をクリックするとパスワードの非表示が解除されます。
- SSH Key
必要に応じてSSHキーを設定します。
- Queue
接続するリモートサーバ上で稼働しているジョブスケジューラの種類を選択します。
- Solver
このプロファイルにおいて使用するプログラムを選択します。
ウィンドウ内でも変更可能です。
- Shell Script
デフォルトのシェルスクリプトを使用して計算を実行する場合は Use Default 、シェルスクリプトをカスタマイズする場合は Use Template をチェックします。 Use Template の場合はその横のプルダウンメニューで使用するテンプレートファイルを選択し、またテンプレートファイルを追加、編集、削除する場合はその下の Add , Edit Remove ボタンをクリックします。
テンプレートファイルの中では、 リモートジョブ機能で使用可能なエイリアス文字列 を使用可能です。
テンプレートファイルはWinmostarのインストールフォルダの
UserPref
の中に保存されます。ウィンドウ内でも変更可能です。
- Options
ジョブ投入コマンド(qsubなど)の後ろに与える引数を設定します。
本項目には リモートジョブ機能で使用可能なエイリアス文字列 を使用可能です。
ウィンドウ内でも変更可能です。
- Remote Directory
リモートサーバの作業フォルダを指定します。空の場合はホームディレクトリから(Local User ID)/(プログラム名)/(ファイル名)が作業フォルダになります。 Local User IDは操作中のWindowsにおけるユーザ名で、Submit Remote Jobウィンドウのタイトルに表示されます。Local User IDに全角文字や半角スペースが含まれている場合は、内部的に半角英数文字に変換されてディレクトリ名が設定されます。 '/work/dir' のようにシングルクォーテーションで囲うと、指定したディレクトリから
(Local User ID)/(プログラム名)/(ファイル名)
を作成します。 また、 ''/work/dir'' のようにシングルクォーテーションを2個づつで囲むと、(Local User ID)のディレクトリは作成されません。本項目には リモートジョブ機能で使用可能なエイリアス文字列 を使用可能です。
- Prefix for Queueing Commands
qsubなどのコマンドの実行時に、それらのコマンドの接頭辞が必要な場合はここに設定します。通常は空にします。
- Test Connection
SSHの接続テストを行います。 ジョブスケジューラのテストは行わないので注意してください。
- Connectionメニュー
- Test Connection and File Transfer
ウィンドウ内の Test Connection ボタンでも同様の操作が可能です。
- Jobメニュー
- Send Local Files & Submit Job
計算に必要な入力ファイルを生成し、SFTPでリモートサーバに転送した後、ジョブスケジューラにサブミットします。 ウィンドウ下部には、サブミットしたジョブのIDが表示されます。IDはジョブをキャンセル(kill)するときに使用します。
リモートサーバでジョブが実行されたディレクトリは、 Remote Directory で設定することができ、 実際使用されたものは Submit Remote Job ウィンドウの Remote Directory 欄に表示されます。 ジョブがリモートサーバ上で開始されると、標準出力は
のwinmos.o
、標準エラーはwinmos.e
というファイルにそれぞれ出力されます。ウィンドウ内の Send & Submit ボタンでも同様の操作が可能です。
- Submit Job
計算に必要な入力ファイルを生成し、SFTPでリモートサーバに転送します。
- List Files at Remote Directory
Remote Directory内のファイル一覧を取得します。
ウィンドウ内の ls ボタンでも同様の操作が可能です。
- Display Remote File
Remote Directory内の選択したファイルの内容を取得します。
ウィンドウ内の cat ボタンでも同様の操作が可能です。
- Display Last Part of Remote Log File
Remote Directory内のログファイルの末尾を取得します。
ウィンドウ内の tail ボタンでも同様の操作が可能です。
- Search String in Remote Log File
Remote Directory内のログファイルの中から文字列を検索します。
ウィンドウ内の grep ボタンでも同様の操作が可能です。
- Restert Terminated Job
ジョブスケジューラなどによりリモートジョブが強制的に中断された場合、本機能で計算を再開します。
- Force Job Finalization
計算の異常終了により全てのファイルが生成されず、 Get All Remote Files が正常動作しない場合、本機能を実行すると強制的に終了処理が実行され、 Get All Remote Files を実行できるようになります。
- Get Remote File and ...
Remote Directory内の特定ファイルをgetして可視化します。
ウィンドウ内の Get File & ... ボタンでも同様の操作が可能です。
- Queueメニュー
各メニュー名に括弧書きで、選択されたジョブスケジューラにおける具体的なコマンド名が表示されます。
- List Submitted Jobs
ジョブスケジューラに登録されたジョブの一覧を取得します。
ウィンドウ内の同じコマンド名のボタンでも同様の操作が可能です。
- Kill Submitted Job
ジョブスケジューラに登録されたジョブを中断します。サブミットした直後に表示されたジョブのIDを入力する必要があります。
ウィンドウ内の同じコマンド名のボタンでも同様の操作が可能です。
- List Submitted Jobs in Detail
ジョブスケジューラに登録されたジョブの詳細な一覧を取得します。
ウィンドウ内の同じコマンド名のボタンでも同様の操作が可能です。
- Show Information of Each Queue
ジョブスケジューラが管理するキューの一覧を取得します。
ウィンドウ内の同じコマンド名のボタンでも同様の操作が可能です。
- Show Usage of Each Queue
各キューの使用状況を取得します。
ウィンドウ内の同じコマンド名のボタンでも同様の操作が可能です。
- Show Information of All Nodes
ジョブスケジューラが管理する全マシンの情報を取得します。
ウィンドウ内の同じコマンド名のボタンでも同様の操作が可能です。
- その他のメニュー
項目名と同じコマンドがリモートサーバ上で実行されます。
- Optionsメニュー
- Hide Other Users Info
qstat -aを実行したときに他のユーザの情報を表示するか指定します。
- Enable Admin Mode
ルート権限でリモートサーバにアクセスする際に使用します。
7.5. リモートジョブ機能で使用可能なエイリアス文字列
ジョブ実行時に使用するシェルスクリプトやサブミットコマンドの引数は、計算条件に応じて動的に変化する場合があるため、その様な状況に対応するためにエイリアス文字列を使うことができます。
使用可能なエイリアス文字列の一覧を以下に示します。
%WM_USER_ID% |
リモートディレクトリ作成用ローカルユーザID |
---|---|
%WM_SOLVER% |
ソルバの種類 |
%WM_INPUT% |
入力ファイル名 |
%WM_PREFIX% |
入力ファイル名から拡張子を除いたもの |
%WM_EXT% |
入力ファイル名の拡張子 |
%WM_NUM_PROC% |
CPU(MPI)並列数 |
%WM_NUM_THREAD% |
Thread並列数 |
%WM_NUM_PARALLEL% |
%WM_NUM_PROC%と%WM_NUM_THREAD%の積 |
7.6. リモートジョブの設定ファイル
プロファイルの設定は、Winmostarのインストールフォルダの UserPref\winmos_profile.ini
に保存されます。
読み込む際には、V8以前の旧バージョンとの互換性維持のため、以下の優先順位で読み込まれます。
UserPref\winmos_profile.ini
> UserPref\winmos_server.ini
> wm_system\RemoteJobdefault_profile.ini
7.7. Windowsサーバの利用方法
リモートサーバでWindows PCを使用することができます。 使用するには下記のような事前準備が必要です。
リモートサーバにOpenSSHサーバをインストールしてクライアントからSSHで接続できるようにします。
リモートサーバにWinmostarをインストールしてWinmostarジョブマネージャを常に起動しておきます。
下記のように設定します。
Profile編集画面でQueueにJM(Windows)を選択します。
Winmostar PathにリモートサーバにインストールされているWinmostarのパスを設定します。
デフォルトのシェルスクリプトは使えないので、Use Templateを選択しテンプレートファイルを作成します。Windows上で動作するバッチファイルの内容にします。
下記のような他のジョブスケジューラとの操作上の違いがあります。
Test Connection ボタンを押した時にジョブマネージャが起動しているかのチェックも行います。
List Jobs ボタンで表示される情報はジョブマネージャと同じで左から番号、状態、優先度、コア数、ジョブ名、開始日時、終了日時、バッチファイルです。
Delete Job ボタンでジョブを取り消す場合はジョブ名を入力します。
7.8. HTTPプロキシを経由した接続方法
リモートサーバに接続するのにHTTPプロキシサーバを介してSSHで接続する場合には下記のような手順で行います。
でCygwinを起動します。
下記のようにコマンドを入力します。ここで、REMOTE_SERVER、PROXY_HOST_NAME、PROXY_PORT、USER_NAMEはそれぞれリモートサーバ名、プロキシサーバ名、プロキシポート番号、ユーザ名で置き換えてください。
ssh -L1234:REMOTE_SERVER:22 -o "ProxyCommand connect-proxy -H PROXY_HOST_NAME:PROXY_PORT %h %p" USER_NAME@REMOTE_SERVER
上記の接続した状態で、Profile編集画面でHost Nameにlocalhost、Portに1234と設定します。
7.9. SSH公開鍵・秘密鍵認証での接続方法
Winmostarのリモートジョブ機能ではSSH公開鍵・秘密鍵認証での接続方法もサポートしています。
現在のWinmostarはPEM形式での接続のみサポートされています。 ターミナルで鍵を生成する場合、PEM形式で確実に生成するために $ ssh-keygen -m pem -f (秘密鍵のファイル名) と実行します。(OpenSSHではデフォルトの鍵形式がRFC4716の場合があるため -m pem が必要です)
すでに生成した鍵をPEM形式に変換する場合は $ ssh-keygen -p -N "" -m pem -f (秘密鍵のファイル名) と実行します。場合によっては変換前に秘密鍵ファイルの権限変更が必要なので、その場合は事前に $ chmod 600 (秘密鍵のファイル名) と実行します。
PuTTY Private Key (ppk)形式のファイルをPEM形式に変換する場合は、まずPuTTYに含まれるPuTTYgenを起動します。次に、[アクション] (Actions) の[ロード] (Load)をクリックし、対象となるppkファイルを開きます。パスフレーズが設定されている場合は、[キーパスフレーズ] (Key passphrase) と[パスフレーズの確認] (Confirm passphrase) にパスフレーズを入力します。そして、[変換] (Conversions)メニューの[OpenSSH キーのエクスポート] (Export OpenSSH key)をクリックし、新たに作成するPEM形式の秘密鍵のファイル名を入力します。