-
-
Notifications
You must be signed in to change notification settings - Fork 1
Plugin Job Manager JP
Job Manager は、リモートの HPC クラスタに SSH 経由で計算を投入します — あるいは SSH を一切使わずこのマシン上で直接実行します。キューの状態を追跡し、結果を MoleditPy に回収します。入力ジェネレータがファイルを書き出す工程と、結果アナライザーがそれを開く工程の間を埋めるプラグインです:アップロード、投入、監視、回収、オープン。
| リポジトリ | moleditpy_job_manager |
| 作者 | HiroYokoyama |
| 対応 OS | Windows, macOS, Linux, WSL |
| 対応 Python | >=3.9, <3.15 |
| メニュー位置 |
Extensions ▸ Job Manager ▸ Job Monitor / ▸ Submit Job...
|
| 追加の依存関係 | なし — システムの ssh/scp を使用。パスワード認証が必要なホストのみ pip install paramiko
|
インストール方法については Official Plugins を参照してください。
Job Manager はキューシステムを問わないフロントエンドです — 同じ投入ウィザードとジョブテーブルが、SLURM、PBS/Torque、SGE/UGE、ネイティブ Windows(PowerShell)、あるいはスケジューラを持たないマシン(何もインストールせずこのマシン自身も含む)のいずれに対しても同じように動作します。生成されるラッパースクリプトはコマンドを実行する前に終了コードとシグナルのトラップを仕込みます — これにより sacct やサイト固有の qstat -f パースに頼ることなく、どのバックエンドでも同じ方法で FAILED と LOST とウォールタイムキルを区別できます。
Hosts… でホスト名、ユーザー、スケジューラ、リモートの作業ディレクトリを設定するダイアログが開きます。Test Connection で事前に接続を確認できます。4種類のバックエンドが利用できます:
| OpenSSH(既定) | paramiko(任意) | このマシン | WSL | |
|---|---|---|---|---|
| インストール | 不要 | pip install paramiko |
不要(bash、または Windows スケジューラ) | 不要(bash のある WSL ディストリビューション) |
| 認証 | 鍵 / ssh-agent | 鍵、エージェント、そしてパスワード | 不要 | 不要 |
~/.ssh/config |
自動的に継承 |
HostName/User/Port/IdentityFile
|
該当なし | 該当なし |
| ジョブの連鎖 | キュー自身の依存フラグ | キュー自身の依存フラグ | ラッパーがプロセスを待機 | ラッパーがプロセスを待機 |
OpenSSH バックエンドは ssh をバッチモードで実行するため、バックグラウンドスレッドが見えないパスワードプロンプトでブロックされることはなく、パスワードがプロセステーブルに現れることもありません。パスワードしか受け付けないホストは paramiko バックエンドを使い、接続時にパスワードを尋ねる にチェックを入れてください。パスワードはディスクに書き込まれません — セッション中だけメモリに保持され、再起動後は再度尋ねられます。未知のホスト鍵は黙って信頼されるのではなく拒否されます。
Windows ネイティブでの実行には何もインストールする必要がありません — ラッパー、状態確認、プラグイン自身のコマンドはすべて OS 標準の PowerShell で、スケジューラのないホスト向けの PowerShell 版ヘルパーキューも用意されています。WSL 内での実行は、ジョブディレクトリ・ラッパー・出力をすべて Linux 側に保ちます(クラスタに送るのと同じ bash スクリプト)。入力ファイルは wslpath 経由で変換・コピーされます。
New Job… でホストを選び、入力ファイル(複数可)を指定し、walltime / nodes / memory / modules を入力します。Template… ドロップダウンには、MoleditPy が入力を書き出せるすべてのプログラム(ORCA、Gaussian、CP2K、GAMESS、MOPAC、NWChem、Psi4、PySCF、Quantum ESPRESSO、VASP、xTB)の定番の起動コマンドが用意されており、それぞれの注意点も反映されています(ORCA は MPI ワーカーを起動するために自身の絶対パスが必要、g16 は自分で .log を書く、VASP は入力ファイル名を一切取らない、など)。Script preview タブで投入前に実際のラッパーを確認でき、フォーム全体を名前付きプリセットとして保存できます。
ORCA、Gaussian、Psi4、NWChem、Q-Chem、GAMESS の入力ファイルは自身のメモリ・コア要求を記述しているため、ウィザードはそれを読み取って自動的にフィールドを埋めます — ORCA の %maxcore は コアあたり の値なので、掛け算して展開されます。すでに手で入力済みの値は上書きされません。
Use Job Manager relay tag チェックボックス(ORCA Input Generator Pro と Gaussian Input Generator Pro の両方に直接用意されています)は、ファイル名の代わりに [prevfile:.ext] タグを入力に書き込みます — ORCA の * xyzfile や Gaussian の %oldchk のように、プログラムがパスで参照するものすべてに使えます。投入時に Job Manager がこのタグを、ソースとして選んだジョブ(同一ホストに限る)の実際のファイル名に解決し、ホスト上でそのままコピーします — ここにダウンロードして再アップロードすることはありません。[prevfile:.res/.xyz] は1階層下のファイルにも対応します(自身のフォルダの中に結果を保持するケース向けで、スラッシュの前がフォルダ名、後がその中のファイル名になります)。[prevfile:.res]/[prevfile:.xyz] のように2つの別々のタグとして書いても同じ意味にはなりません — その場合、各タグはそれぞれ独立したフラットなトップレベルファイルとして解決され、フォルダとその中のファイルという構造にはならないためです。
ソースジョブはまだ完了していなくても構いません。まだ実行中のジョブを選ぶと、新しいジョブはそれが成功するまで開始を待つよう連鎖され、コピー処理は生成されたラッパースクリプト自体に — ジョブの開始を制御する仕組みの後に — 書き込まれるため、実際にファイルが存在するようになってから初めて実行されます。
アップロードせずに Work already on the host をチェックし、ディレクトリを指定するだけでもジョブになります — ~/runs/mol42 とコマンドがあればそれで1つのジョブです。そのディレクトリ内の入力ファイル名の指定は任意で、Check で投入前に存在を確認できます。ディレクトリは作成されるのではなく確認されるだけで、ラッパーがそこに書き込むものはすべてジョブ ID を含むため、複数のジョブが1つの準備済みディレクトリを共有しても互いの結果を上書きしません。
「このジョブの後にこれを実行する」は各スケジューラ自身の仕組み(--dependency=afterok、-W depend、-hold_jid)、あるいはキューのないホストではラッパーが前のプロセスを待つ方法で実現します。ジョブ同士の成否に依存させたくない場合は afterany を選べます。キューが決して満たせない依存関係の下で、失敗したジョブの後ろに取り残されたジョブは、誤解を招く恒久的な PENDING ではなく BLOCKED と表示されます。
複数の入力ファイルを Job Monitor にドロップすると、既定では各ファイルがそれぞれ自身の名前を持つ独立したジョブになり、選択したコマンドテンプレートで事前入力されます。Shift を押しながらドロップすると、以前の挙動(ドロップした全ファイルを1つのジョブにアップロードする)に戻せます — 複数の入力を本当に必要とするコマンド向けです。
スケジューラを持たないホスト — このマシン自身も含む — でも、ジョブを適切に直列化する必要があります。ヘルパーキューは物理コア数とメモリでディスパッチします(ジョブ数ではありません):8コアのマシンではシングルコアのジョブが8個同時に走り、90 GB のジョブ2つが120 GBを同時に共有することはなく、残りは待機します。何もインストールする必要がなく、キューはプレーンな番号付きシェルスクリプトとして ssh 越しに読め、MoleditPy を閉じても動き続け、キューが空になれば自分自身で終了します。何も残したくないホスト向けに、連鎖レーンモードも用意されています。
ヘルパー自身のランナースクリプトは、コンテンツハッシュではなくプラグイン自身のバージョンで命名されます(moleditpy_runner_v<version>.sh / .ps1)— 古いコピーは、より新しいプラグインバージョンから次にジョブが投入されたときに、新しい名前のファイルをアップロードすることで置き換えられます。古いコピーは削除されずホストに残ります — ジョブを実行したスクリプトは保存しておく価値があり、キューがプレーンな ssh で読めるのはまさにそのためです。
ジョブテーブルにはキュー ID、状態、経過時間、何の後ろに連鎖しているかが表示されます。ダブルクリックで、実行中はログを、完了後は結果を開きます。状態はウィンドウを閉じても、プロジェクトを閉じても、MoleditPy を再起動しても保持され、起動時に自動的に追跡が再開されます。列ヘッダーをクリックすると(整形されたテキストではなく実際の経過秒数・実際のタイムスタンプで)並べ替えられ、入力するとすべての列を対象にその場でフィルタされます。
| 状態 | 意味 |
|---|---|
SUBMITTED / PENDING
|
キュー投入済み |
RUNNING / COMPLETING
|
ノード上で実行中 |
DONE |
ラッパー終了、終了コード 0 |
FAILED |
ラッパー終了、非ゼロ — コードがテーブルに表示されます |
CANCELLED |
キャンセル済み |
LOST |
終了コードが記録されないままキューから消えた |
QUEUED |
まだ終了していない別ジョブの後ろに連鎖中 |
BLOCKED |
失敗したジョブの後ろで、キューが決して満たせない依存関係の下にある |
FAILED (rc=143) はスケジューラ自身がジョブを kill したサイン — 143 は 128 + SIGTERM、つまりウォールタイム超過、プリエンプション、あるいはノードドレインです。LOST はラッパーが終了コードを書き込まないままジョブがキューから消えたことを意味します — 強制 kill、OOM、ノードのクラッシュなどです。リモートディレクトリはツールチップに表示され続け、Download と Tail Log はどちらも引き続き使えます。
何かが実行中・キュー中・ブロック中の間は MoleditPy 自身のステータスバーにカウンターが表示され、クリックするとモニターが開きます。ジョブがなければ何も表示されず、ポーリングも行われません。ジョブが完了・失敗・キューから消えたときはデスクトップ通知でジョブ名とホスト名が知らされます — 既定でオンで、チェックボックス1つでオフにできます。
ジョブが終了すると、出力は既定で入力ファイルの隣に自動的に取得され、そのファイル形式をすでに扱えるプラグインに渡されます — ORCA のジョブが完了すれば、追加設定なしでそのまま ORCA Result Analyzer で開かれます。結果を開く際にはまずエディタがクリアされるので、投入した分子が 2D キャンバスに残ったまま、戻ってきた結果の 3D 表示と並ぶことはありません。未保存の作業があるときは File > New と同じように確認されます。Resubmit はワンクリックで同じホスト・同じ入力・同じリソースでジョブを再投入します。
ORCA Input Generator Pro と Gaussian Input Generator Pro は、このプラグインがインストールされていると Save の隣に Submit to Cluster... ボタンを表示します — インストールされていなければボタン自体が現れません。入力を保存してこのプラグインに渡し、ファイル選択もジョブ名の再入力も不要です。この経路で渡された仕事には投入先のホストの手がかりがない(ファイルは保存ダイアログで指定した場所に書かれるだけ)ため、equal path を設定したホストがあればそちらでウィザードが開きます — 結果のダウンロードが不要な唯一のマシンだからです。自分でホストを選べばその選択が優先されます。他のプラグインも、ホストのプラグインリストから見つかる公開 API job_manager.submit_file(paths, name="") を使って同じことができます。
Job Manager と Host Monitor はどちらも MoleditPy なしで直接起動できます:
python -m job_manager # Job Monitor
python -m job_manager --host-monitor # Host Monitorpythonw -m job_manager を呼ぶ .bat を作れば(コンソールウィンドウが残りません)、Windows でどちらもワンクリックのデスクトップショートカットにできます。
~/.moleditpy/job_manager/ — プラグインフォルダの外に意図的に置かれています。Plugin Installer は更新時にそのフォルダをまるごと置き換えるため、ジョブが数日がかりで実行される以上、その記録は更新をまたいで残る必要があるからです。
| ファイル | 内容 |
|---|---|
settings.json |
ホストプロファイル、投入プリセット、設定、保存済みコマンドテンプレート — パスワードは一切書き込まれません |
jobs.pmejbs |
追跡中のジョブ一覧(プレーンな JSON) |
archived/jobs_<date>.pmejbs |
Clear List で書き出されたリスト — クリアしても削除はされません |
downloads/ |
取得済みの結果(ジョブごとに1ディレクトリ) |
手作業で取得した、クラスタからコピーしてきた、あるいはこのプラグインが存在する前に実行された — 誰も追跡していない結果のフォルダは、Rebuild list from folder で読み取り専用のジョブ記録として再構築できます:出力を含むディレクトリごとに1エントリが、その隣に保存されます。再構築されたリストの中身は、背後にホストがないため投入もキャンセルもポーリングもできません。
ワークフローグラフはありません。 連鎖は一直線です — 各ジョブは正確に1つの先行ジョブを待ちます。ファンアウトも、「A と B の両方の後に C を実行する」も、失敗時のリトライもありません。分岐が必要な場合は Extra directives に手で依存関係を書いてください。Job Manager はそれをそのまま通し、通常どおり追跡します。
ヘルパーキューはバッチシステムではありません。 2つのリソース予算と単一先行依存を持つ FIFO です — 優先度、バックフィル、フェアシェア、予約、アカウンティングはありません。
ファイルブラウザはありません。また割り当て/アカウンティング照会もありません — 何が戻ってくるかは取得パターンが決めます。sacct も sinfo もクォータ照会もありません。
- Official Plugins — プラグインカタログ全体
- Plugin: ORCA Input Generator Pro — このプラグインが入っていると Submit to Cluster... ボタンとリレータグのチェックボックスが現れます
-
Plugin: Gaussian Input Generator Pro — 同様に
%oldchk向け - Plugin: ORCA Result Analyzer — 完了した ORCA ジョブの出力を自動的に開きます
このページは Job Manager v1.0.2 を対象に、2026-08-19 に最終更新されました。最新のバージョンは REGISTRY/plugins.json を参照してください。