対話型処理

最終更新日:2023年4月14日

スーパーコンピュータITOのサブシステムA/Bの計算ノードは従来(2022年度まで)バッチジョブ実行でのみ利用可能であり、 対話型で利用が可能なのはログインノードとフロントエンドシステムに限られていました。 しかし2023年度は共有タイプのフロントエンドシステムはサービス提供を行わないため、対話型でITOを使うことがほぼ不可能となってしまいます。
そこで、2023年度はサブシステムA/Bの計算ノードの一部を対話型で利用できるようにします。


実行の流れ

サブシステムA/Bの計算ノードを対話型で利用する基本的な手順は以下の通りです。
1. ログインノードにsshログインする
2. 対話型処理実行用のオプション(--interact)を付けて、対話型処理用のリソースグループを指定してpjsubコマンドを実行する


バッチ処理と異なり、対話型処理は実行時に計算ノードに空きがなければ実行できません。 後述のオプションを指定して待ち時間を定めない限り、実行時に計算ノードの空きがない場合はエラーとなります。

対話型処理実行時に追加で指定可能な主なオプションは以下の表の通りです。 その他のオプションについてはITO Portalにて公開されている「ジョブ運用ソフトウェアエンドユーザ向けガイド」をご確認ください。


オプション 説明
-L rscgrp=name 利用するリソースグループ名
-L elapse=limit 対話型処理の最長実行時間
-sparam "wait-time=limit" 対話型処理の開始待ち時間
-X または -x 環境変数の引き継ぎを行う


リソースグループと利用時の制限など

バッチジョブ実行と同様に、対話型処理でも利用する計算資源(リソースグループ・キュー)の指定が必須です。 具体的なリソースグループの一覧は以下をご確認ください。(ito-i-で始まるものを指定する必要があります。)

利用可能なリソースグループの一覧

対話型処理は、サブシステムA/Bの計算ノードでバッチジョブを実行可能なユーザであれば誰でも利用することができます。
ただし、同時に実行可能なジョブはユーザにつき1つ(同一課題(グループ内)では36コアまで)となります。


リソースグループ ito-i-g-1 は ito-g-1 同様に1ノードに搭載された4GPUのうち1GPUのみを利用可能です。 nvidia-smiコマンドを実行すると4GPU全てが見えてしまいますが、実際に利用可能なGPUは1つのみです。 プログラム実行時にはCUDA_VISIBLE_DEVICES環境変数などによる利用GPUの明示的な指定は行わないでください。


対話型処理の利用例

対話型処理が正常に開始した例

対話型処理が正常に開始すると、計算ノードを対話的に利用できます。 elapse設定を指定しない場合はデフォルトの時間(1時間)で強制的にログアウトさせられてしまう点に注意してください。

bash@ito-x ~ $ hostname
ito-x
bash@ito-x ~ $ pjsub --interact -L rscunit=ito-a,rscgrp=ito-i-single
[INFO] PJM 0000 pjsub Job 26365446 submitted.
[INFO] PJM 0081 .connected.
[INFO] PJM 0082 pjsub Interactive job 26365446 started.
bash@sca2000 ~ $ hostname
sca2000
bash@sca2000 ~ $ exit
ログアウト
[INFO] PJM 0083 pjsub Interactive job 26365446 completed.
bash@ito-x ~ $

計算ノードが空いておらず対話型処理が開始できなかった例

計算ノードに空きがない場合は対話型処理を開始できません。 エラーメッセージに表示されているとおり、wait-timeオプションを追加すればその時間分だけ対話型処理の開始を待つことができます。

bash@ito-x ~ $ pjsub --interact -L rscunit=ito-a,rscgrp=ito-i-single
[INFO] PJM 0000 pjsub Job 26365444 submitted.
[INFO] PJM 0081 .
[INFO] PJM 0080 pjsub Interactive job 26365444 is canceled due to the resource allocation timeout.
       The timeout period "t" can be specified by "--sparam wait-time=t".
bash@ito-x ~ $
bash@ito-x ~ $ pjsub --interact -L rscunit=ito-a,rscgrp=ito-i-single --sparam wait-time=10

対話型処理でX Windowクライアント(GUI付きプログラム)を使う方法

対話型処理ではX Windowクライアント(GUI付きのプログラム)を使うこともできます。
pjsubコマンドにより対話型処理を開始する際には自動的にX転送も有効となりますが、環境変数DISPLAYを正しく指定する必要があります。 詳細は省きますが、簡単な手順としては、X転送が有効な状態でログインノードにSSH接続し、pjsubに-Xオプションを付けて対話型処理を開始してください。 起動したジョブ内でGUIを使うプログラムを起動すると、計算ノード上で起動したプログラムのGUIが手元に表示され、自由に操作することができるようになります。
(MobaXtermではデフォルトでX転送が有効です。Puttyでは設定( Connection - X11、日本語版では接続 - X11)画面で「 Enable X11 forwarding」 (日本語版では「X11転送を有効にする」)のチェックボックスを有効化するがあります。MacやUbuntuなどのOpenSSHクライアント(ターミナル上でのsshコマンド)では -Xや-Yオプションを付ける必要があります。)
また、画面転送を行っている都合上、操作の反応が遅いこともある点には注意してください。

利用例(MobaXterm上で対話型処理を起動し、xeyesを実行してGUIウィンドウを表示した状態)



ログインノードから計算ノードへの環境変数の引き継ぎについて

GUI付きプログラムの実行に用いた -X オプションは、pjsubを実行する側からジョブに対して環境変数を引き継ぐオプションです。 通常のバッチジョブと異なり、-Xオプションを指定するとpjsubを実行する際に設定されていた環境変数がまとめて引き継がれる(それによりプログラムの挙動に影響が生じることがある)点に注意が必要です。 これを避ける(=X転送に必要な設定だけ行う)には、-x オプション(大文字ではなく小文字のx)を用いてDISPLAY環境変数のみ引き継がせてください。


 $ pjsub --interact -L rscunit=ito-a,rscgrp=ito-i-single -x DISPLAY=${DISPLAY}