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)

対応するジョブスケジューラがリモートサーバにインストールされていない場合は、以下の方法でリモートジョブを実行することができます。

  1. Queue の設定で Run を選択する。

  2. qsub , qstat などのコマンドを模倣するコマンド、スクリプトを用意し、必要に応じてそれらのコマンドの接頭辞を Prefix for Queueing Commands で指定する。

また、リモートサーバ上で基本的にbashシェルで動作することを想定しています。 その他のシェルで動作させることも可能ですが、スクリプトの変更などに手間がかかる可能性があります。

7.2. ファイルモードにおけるリモートジョブの設定手順

プロジェクトモードにおけるリモートジョブ設定手順は 基本的な操作の流れ を参照してください。

シミュレーションを実行する全体的な手順の流れは 基本的な操作の流れ を参照してください。

各機能の詳細は Submit Remote Jobウィンドウの各機能 を参照してください。

  1. 計算を実行したいサーバに、ジョブスケジューラとソルバをインストール・設定してください。この段階で、Winmostarを使わずサーバにSSHでログインし、ターミナル上でソルバを起動できる状態にする必要があります。

    これからインストールする場合は、 こちら を参考にしてください。

    ジョブのスケジューリングを使わずにジョブを実行する場合(多数のジョブを実行する際には推奨しません)、ジョブスケジューラのセットアップは不要で、後ほど Queue の設定において Run を選択してください。

  1. ツールバーの リモートジョブ投入 ボタン toolbar_submit をクリックします。

  1. Submit Remote Job ウィンドウにおいて、すでに設定が済んでいるプロファイルを使う場合は、 Profile で使うプロファイルを選択します。これから設定する場合は、 Manage... ‣ Add Profile を選択します。

    fig_remote_addprofile

  1. Edit Profile ウィンドウ上部にて、以下の内容を入力します。

    • Profile Name

    • Connection

      • Hostname

      • Port(通常は22を使用)

      • Timeout(わからない場合はデフォルト値を使用)

      • Username

      • Password(秘密鍵の時はパスフレーズを入力、それ以外の時はパスワードを入力)

      • SSH Private Key(秘密鍵を使う時のみ必要)

    fig_remote_editconnection

    TSUBAME、FOCUSなどに多段SSH接続する方法は リモートジョブの詳細設定 を参照してください。

  1. SSH接続をテストするために、 Edit Profile ウィンドウ下の Test Connection ボタンをクリックします。「接続テストとリモートサーバ上でのジョブスケジューラの動作テストを実行しますか?」と表示されたら 接続テストのみ をクリックします。

    黒いターミナルウィンドウが開いて初回接続時は、 Store key in cache? (y/n) と表示される場合があります。その場合は、 y とキー入力します。

    fig_remote_storekey

    接続に成功した場合は、「テストが正常に終了しました」と表示されます。

    ユーザ設定等が間違っている場合は「テストが異常終了しました」と表示されるので1つ前の設定を見直してください。その場で正しいパスワードを入力した場合も、再度 Edit Profile ウィンドウでパスワードを再入力してください。

    その他、 Submit Remote Job ウィンドウの下部に ERROR: Connection timed out or an error occurred. と表示された場合は、接続設定を見直してください。

  1. Edit Profile ウィンドウ下部にて、以下の内容を入力します。

    • Queue & Solver

      • Queue

      • Options( qsub 等のジョブをサブミットするコマンドの引数)

    fig_remote_editqueue

    まず接続するサーバ上にインストールされたジョブスケジューラを Queue を選択します。 次に、 Optionsqsubsbatch 等のジョブをサブミットするコマンドの引数を入力します。確保するリソースの情報はここで設定します。

    利便性を上げるため、個々のジョブに依存する並列数やファイル名などは、ジョブ実行時に代入されるエイリアスの形で入力することを推奨します。詳細は リモートジョブ機能で使用可能なエイリアス文字列 を参照してください。

  1. スケジューラの動作をテストする場合は、 Edit Profile ウィンドウ下の Test Connection ボタンをクリックします。リモートサーバのキューが埋まっていてすぐにジョブが流れない時は、キューが空くまで待つか次に進んでください。「接続テストとリモートサーバ上でのジョブスケジューラの動作テストを実行しますか?」と表示されたら 両方実行 をクリックします。「ジョブスケジューラの動作テストの最大待ち時間を入力」と表示されたら適宜値を設定し OK をクリックします。「リモートサーバ上での(ソルバ名)のテストも実行しますか?...」と表示されたら いいえ をクリックします。

    接続に成功した場合は、「テストが正常に終了しました」と表示されます。

    設定が間違っている場合は「テストが異常終了しました」と表示されるので1つ前を見直してください。

  1. Edit Profile ウィンドウ下部にて、以下の内容を入力します。

    • Queue & Solver

      • Solver

      • Shell Script

    fig_remote_editqueue

    まず使用するソルバを Solver で選択します。 次に、 Shell ScriptUse Template をクリックします。 選択したソルバの テンプレートスクリプト (ジョブ実行に使われるシェルスクリプトのテンプレート)がない場合は、テンプレートスクリプトの名前を入力すると、テンプレートスクリプトがテキストエディタで開かれます。 ある場合は、 Use Template の横のプルダウンメニューで使用したいテンプレートスクリプトを選択し、その下の Edit... ボタンをクリックするとテンプレートスクリプトがテキストエディタで開きます。

    テンプレートスクリプトには、 module load ...source ...export PATH=... などのコマンドや、 mpirun などの、そのサーバで選択したソルバを使用するための設定を書き入れます。書き入れる場所は極力テンプレートスクリプト内の # Insert commands here から # Do not modify the followings の間にしてください。

    利便性を上げるため、テンプレートスクリプトには、個々のジョブに依存する並列数やファイル名などをジョブ実行時に代入されるエイリアスの形で入力することを推奨します。詳細は リモートジョブ機能で使用可能なエイリアス文字列 を参照してください。

  1. ソルバの動作をテストする場合は、 Edit Profile ウィンドウ下の Test Connection ボタンをクリックします。リモートサーバのキューが埋まっていてすぐにジョブが流れない時は、キューが空くまで待つか次に進んでください。「接続テストとリモートサーバ上でのジョブスケジューラの動作テストを実行しますか?」と表示されたら 両方実行 をクリックします。「ジョブスケジューラの動作テストの最大待ち時間を入力」と表示されたら適宜値を設定し OK をクリックします。「リモートサーバ上での(ソルバ名)のテストも実行しますか?...」と表示されたら はい をクリックします。

    接続に成功した場合は、「テストが正常に終了しました」と表示されます。

    設定が間違っている場合は「テストが異常終了しました」と表示されるので1つ前の設定を見直してください。

  1. OK ボタンを押して Edit Profile ウィンドウを閉じます。

  1. Close ボタンを押して Submit Remote Job ウィンドウを閉じます。「リモートサーバの設定を保存しますか?」と表示されたら はい をクリックします。

7.3. ファイルモードにおけるリモートジョブの操作手順

プロジェクトモードにおけるリモートジョブの操作手順は 基本的な操作の流れ を参照してください。

  • 各キューの使用状況を確認したい場合は Submit Remote Job ウィンドウで、 Queue ‣ Show Usage of Each Queues メニューをクリックします。

  • ファイルモードでジョブを開始したい場合は、 Send & Submit ボタンをクリックします。ここでの操作方法は、通常のローカルジョブと同じです。

    fig_remote_sendsub_button

    ウィンドウ下部には、サブミットしたジョブのIDが表示されます。IDはジョブをキャンセル(kill)するときに使用します。

    リモートサーバでジョブが実行されたディレクトリは、 Profile ‣ Edit ProfileRemote Directory で設定することができ、 実際使用されたものは Submit Remote Job ウィンドウの Remote Directory 欄に表示されます。

    ジョブがリモートサーバ上で開始されると、標準出力は winmos.o 、標準エラーは winmos.e というファイルにそれぞれ出力されます。

  • ファイルモードでサブミットしたジョブの状況を確認したい場合は、 Queue ‣ List Submitted Jobs で確認してください。全てのジョブが完了した場合は --- と表示されます。

    サブミットしたジョブがあまりに早く終了した場合は、サブミットした直後であっても --- と表示されます。

  • リモートサーバ上の特定のジョブの状況を確認するときは、以下の操作を行ってください。

    • ls ボタン

    • cat ボタン

    • grep ボタン

    • tail ボタン

    • Get & Open ... ボタン

    fig_remote_progress_button

    操作対象のジョブは、 Remote Directory 欄に表示されたものとなります。デフォルトの設定の場合は、メインウィンドウで対象としたいジョブの入力ファイルを開き、ジョブ投入時のプロファイルを選択してください。

  • ファイルモードでリモートサーバ上で終了したジョブの結果解析をローカルマシンで実行したい場合は、 Get All Files ボタンをクリックします。

    fig_remote_get_button

    操作対象のジョブは、 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)するときに使用します。

リモートサーバでジョブが実行されたディレクトリは、 Profile ‣ Edit ProfileRemote 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 で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 (秘密鍵のファイル名) と実行します。