Deadline Scheduler for PDG


この記事では、Deadlineスケジューラの統合、設定、使用方法、および機能の拡張について紹介します。
※3月18日現在、Deadlineの最新バージョンはHoudini17.5をサポートしておりません。
PilotPDGからではなく、Houdini17.5からTOPノードを用いてジョブを送信する際はDeadlineの最新の対応状況をご確認ください。

オーバービュー

 PDGThinkbox Deadlineスケジューラをサポートしています。 PDGノードのライブラリの一部として組み込まれているカスタムスケジューラバインディングノードであるDeadlineスケジューラHDAの使用により、ジョブをDeadlineでスケジュールすることができます。 Deadlineはプラグインメカニズムを使用して幅広い種類のジョブを可能にするため、PDGはこれらの種類のジョブもサポートします。

機能ついて

 Deadlineによってスケジューリングできる広範囲のジョブをサポートするために、PDG Deadlineスケジューラは、DeadlineのコマンドアプリケーションとRunCommandForRepositoryおよびSubmitJob引数を使用します。 RunCommandForRepositoryではPDG内からリポジトリを指定できますが、SubmitJobではキーと値のペアを含むジョブ送信ファイルを指定して汎用ジョブオプションを定義できます。

 Plugin Keyは、ジョブ情報ファイルでジョブに使用するプラグインを指定するために使用されます。
デフォルトでは、Pluginの値はコマンドラインに設定されており、スレーブマシン上で実行されるすべてのコマンドが可能になります。また、この操作を行う際にはコマンドラインプラグインをDeadlineで有効にする必要があることに注意してください。デフォルトでは無効になっています。

 その他のプラグインは、Pluginのパラメータ値を変更することで使用できます。
ジョブファイルのKey-ValueおよびPlugin File Key-Valuesパラメータでは、ジョブとプラグイン固有のオプションを指定できるため、プラグインに必要なオプションを渡すことができます。
詳細については、以下の「ジョブパラメータ」を参照してください。

 異なるオペレーティングシステムを持つリモートマシン上でジョブを実行する場合の重要な問題の1つは、パスマッピングです。
ジョブには何を実行するかに関する情報はありますが、プラットフォームの違いによって必要なアプリケーション、スクリプト、またはリソースがどこにあるかはわかりません。
しかしこれは、さまざまな方法で解決できます。

 最も簡単な方法は、Deadline MonitoryToolsメニューのConfigure Repository Optionsでマップされたパスを使用することです。 Deadlineは、そのオペレーティングシステムのマップされた値にパターンに一致する入力パラメータを変更します。
このプロセスは、以下の「パスマッピング」セクションで説明します。

 ジョブがスケジュールされたら、PDGはそのステータスと結果を知らせる必要があります。 Deadlineは、ジョブの終了時にコールバック・メカニズムを提供しないため、タイマーを使用して各ジョブの状態をポーリングします。
ジョブが完了または失敗すると、PDGはジョブのステータスを通知されます。

 一部のジョブは、結果をTCP経由でレザルトサーバに通知するコールバックを行います。
これらのコールバックを処理するために、Deadlineスケジューラバインディングは自動的にTCPリクエストをListenし、その結果をPDGに転送するサーバーを作成します。

セットアップ

Deadline パス

 PGDにおいてDeadlineをセットアップする手順は以下の通りです。

 Deadline スケジューラを使用するには、Deadlineがインストールされており、Deadlineの実行可能ファイルを介してコマンドラインがセットアップされている必要があります。
デフォルトでは、DeadlineインストーラはDEADLINE_PATH環境変数を設定し、Deadlineコマンドの実行ファイルが存在するディレクトリを指定します(例:C:\Program Files\Thinkbox\ Deadline10\bin)。
これが設定されていない場合は、手動でDEADLINE_PATHを設定する必要があります。

リポジトリ

 Deadlineリポジトリは、ジョブを送信する(すなわち、TOPグラフをクックする)マシンからアクセス可能である必要があります。
リポジトリがリモートマシン上にある場合は、ローカルマシン(ダイレクト接続タイプ)にマウントするか、リモート接続サーバー経由でHTTP(プロキシ接続タイプ)経由でアクセスする必要があります。

 マウントされたリポジトリの例:

コマンドラインの有効化

 コマンドラインジョブを実行する(つまり、プラグインがコマンドラインに設定されている)場合は、コマンドラインプラグインをDeadlineモニタのプラグインの設定から有効にする必要があります。

パスマッピング

 クロスプラットフォームでのワークの実行をサポートするためにパスマッピングを設定します。
コマンドが混在したオペレーティングシステム環境で実行されている場合は、パスマッピングを使用して、各スレーブマシンでパスが正しく解決されるようにします。
 これは、Deadlineモニタから、[Tools]メニューから[Configure Repository Options]を選択し、[Mapped Paths]ページで各オペレーティングシステムのパスを設定することで実行できます。
たとえば、random_spaceship_deadline.hipでは、マップするには2つのパスが必要です。

  • クライアントマシンのマウントされたルートワークディレクトリにマップされた __PDG_SHARED_ROOT__
    (または remotesharedrootパラメータの値)
  • $ HFS / bin / HDAProcessorからクライアントマシン上で実行可能なHDAProcessorの絶対パス

ジョブの送信テスト

 PDGDeadlineを使用する前に、Deadlineコマンドラインからジョブを実際にスケジュールすることができるかどうかを最初にテストすることをお勧めします。
これにより、Deadlineのジョブの送信と実行が正しく設定されます。

使用方法

 DeadlineスケジューラとPDGを使用するには、TOPネットワーク内でDeadlineスケジューラHDAノードを作成します
TABメニュー – >Schedulers  – >Deadline Scheduler)。

 作成したら、Deadlineスケジューラをグラフ全体または一部のノードに個別に設定することができます。

 グラフ全体を設定するには、オブジェクトビューのTOPネットワークノードを選択し、Default TOP Schedulerを新しいDeadlineスケジューラに変更します。

 PDGノードのスケジューラを設定するには、ノードを選択して、Override TOP Schedulerを新しいDeadlineスケジューラに設定します。


クックする前に、新しいDeadlineスケジューラーノードを設定する必要があります。

パラメータ

 Deadlineスケジューラのパラメータは、SchedulerJob Parm2つのカテゴリに分類されます。

Schedulerのパラメータ


 これらのパラメータはDeadlineスケジューラ全体で固有のもので、すべてのジョブで同じ値が使用されます。
したがって、Deadlineでジョブをスケジュールするためのグローバルパラメータと考えることができます。

  • Working Directory: 中間ファイルと出力の生成先となる、マウントされたリポジトリへの相対ディレクトリのパスです。
    中間ファイルはサブディレクトリ上に生成されます(デフォルトはpdgtemp)。
  • Connection Type: リポジトリの接続タイプ(ダイレクトまたはプロキシ)。
    これは、Deadlineコマンドアプリケーションに渡されたRunCommandForRepository引数に使用されます。
  • Repository: Deadlineリポジトリのパスです。必要に応じて、SSL証明書を使用できます。
    ダイレクト接続タイプの場合、これはマウントされたディレクトリへのパスです(例://arundel.sidefx.com/DeadlineRepository)。
    プロキシの場合、これはポートとリポジトリのURL、およびログイン情報になります。
    これは、Deadlineコマンドアプリケーションに渡されたRunCommandForRepository引数に使用されます。
  • Local Shared Root Path: ローカルマシン上のマウントされた作業ディレクトリの絶対パスです。
  • Remote Shared Root Path:
    クライアントマシン上のマウントされた作業ディレクトリのパスです。
    これには、Deadlineがプラットフォーム固有のパスを解決するように設定されている変数が含まれます(上記のパスマッピングを参照)。
    デフォルト値の__PDG_SHARED_ROOT__を使用する場合は、クライアントが使用する各オペレーティングシステムの実際のマウントされた値に__PDG_SHARED_ROOT__をマップする必要があります。これはクライアントが既存のファームで既に使用している他の値に設定できます。
  • Launch Monitor Machine Name: ジョブがスケジュールされているときにそのマシンでDeadline Monitorを起動する場合は、これをマシンの名前に設定します。
    それ以外の場合は空欄にします。

Job Parmsのパラメータ

 これらのパラメータは、すべてのジョブに対してグローバルに設定することも、個々のノードによって上書きしてジョブ固有のオプションを提供することもできます。

  • Plugin: Name of the Deadline plugin to use for this job. This must match an existing plugin in the repository.
  • Plugin: このジョブに使用するDeadlineプラグインの名称です。
    これは、リポジトリ内の既存のプラグインと一致する必要があります。

    以下のオプションに関する詳細については、Thinkbox社のDeadlineマニュアルサブミッションドキュメントを参照してください。
  • Force Reload Plugin: ジョブの後続フレーム間でプラグインをリロードするかどうかを指定します(デフォルトは falseです)。
    これは、すべてのジョブの様子を適切にアンロードしないアプリケーションを扱う際やメモリリークした際に利用します。
  • Pre Job Script: ジョブが最初にレンダリングを開始したときに実行するPythonスクリプトへのフルパスを指定します(デフォルトは空欄)。
  • Post Job Script: ジョブが完了したときに実行するPythonスクリプトへのフルパスを指定します(デフォルトは空欄)。
  • Job Pool: ジョブが送信されるプールを指定します(デフォルトはnone)。
  • Job Group:  ジョブが送信されるグループを指定します(デフォルトはnone)。
  • Frames: レンダリングジョブのフレーム範囲を指定します。
    詳細については、Thinkbox社のJob サブミッションドキュメントの
    Frame List Formatting Optionsを参照してください(デフォルトは 0
  • Job Priority: ジョブの優先度を指定します(0が最も低い、デフォルトは50)。
    maximum priority
    最大優先順位)は、Repository OptionsJob Settingsで設定することができ、デフォルトは100です。
  • Job Department: ジョブが属する部門を指定します。
    これは単にジョブをまとめてグループ化する方法であり、レンダリングには影響しません(デフォルトは空欄)。
  • Job Batch Name: ジョブを論理的にグループ化するためのオプションの名前を指定します(デフォルトは空白)。
  • Job Comment: ジョブのコメントを指定します(デフォルトは空欄)。
  • OnJobComplete: ジョブが完了した後に何を行うかを指定します(デフォルトはなし)。

 

次のキーと値のペアは、オプションをジョブまたはプラグインinfoファイルに書き出すことができます。
これにより、Deadlineプラグインのいずれかをサポートする柔軟性が得られます。

Job File Extra Key-Values

Plugin File Extra Key-Values

ログ

 Deadlineはジョブログファイルをbzip2形式で保存します。
 現時点では、PDGbzip2形式のログファイルの自動抽出と表示をサポートしていません。

スケジューラバインディングの拡張

 現在のPDGDeadlineスケジューラは、コマンドラインインターフェイスを使用して幅広い用途がカバーされていますが、RESTful HTTP APIを使用してDeadlineWebサービスアプリケーションにジョブを照会してサブミットすることが望ましい場合もあります。
同様に、PDG内から他のDeadline機能を使用する必要があるかもしれません。
このような場合は、これらの要件に対処するPDG用の別のカスタムDeadlineスケジューラバインディングを作成することをお勧めします。

 カスタムDeadlineスケジューラを作成するには、リリースされているPythonベースのDeadlineスケジューラバインディングをコピーして編集することから始めるか、

 または、Writing your own PDG scheduler bindingにある、Pythonテンプレートスケジューラーのバインディングコードから作成することをお勧めします。