答えはわかりませんが、CondorUsersメーリングリストでこの質問をする必要があります。CondorのDAG機能をサポートする人々はそれを監視し、応答します。サブスクリプション情報については、このページを参照してください。トラフィックはかなり少ないです。
一般に、コンドルの同じホストで2つのジョブを事前に特定のホスト(DAGまたはDAGなし)にロックせずに一緒に維持することはかなり困難です。私は実際にこれを行うための本当に実行可能な方法を考えることができません。BがCの前に開始するかCがBの前に開始するようにします。Bが常にCの前に開始する必要があることを強制する場合は、ジョブBの作業の一部を作成できます。実行を開始するときに、ジョブCのClassAdのRequirements部分を変更して、「Machine ==」文字列が含まれるようにします。ここで、はマシンBが着陸したマシンの名前です。これには、ジョブCを保留して提出するか、Bが実行されるまでまったく提出しない必要があります。また、Bは、スタートアップ作業の一環としてジョブCを解放する必要があります。
それはかなり複雑です...
だから私はちょうど考えました:あなたはコンドルの動的な開始/スロット機能を使用し、DAGを折りたたんであなたが望むものを達成することができます。現在2つの別々のノードBとCがあるDAGでは、これを1つのノードB'に集約し、マシンで起動したときにBとCの両方を並行して実行します。ジョブ要件の一部として、マシンに2つのCPUが必要であることに注意してください。マシンが静的に割り当てられたスロットだけでなく、すべてのリソースをアドバタイズするように、動的スロット構成を使用するようにスターターを切り替えます。これで、BとCが常に1台のマシンで同時に実行されます。多数のシングルCPUジョブを含むキューにいくつかのマルチCPUジョブがある場合、動的スロットにはいくつかの飢餓の問題がありますが、少なくともより簡単に解決できる問題です。
別のオプションは、B'に特別なジョブ属性をタグ付けすることです。
MultiCPUJob = True
そして、マシンのスロット1だけをターゲットにします。
Requirements = Slot == 1 && ...your other requirements...
そして、「MultiCPUJob = Trueのジョブをスロット1で実行しようとすると、このマシンのスロット2にあるジョブをプリエンプトします。これは、このジョブに2つのコア/CPUが必要であることがわかっているためです。 "。
これは非効率的ですが、6.8.x以降の任意のバージョンのCondorで実行できます。私は実際にこのタイプのセットアップを自分の静的にパーティション化されたファームで使用しているため、ベンチマークのためにジョブがそれ自体にマシンを必要とする場合、マシンを再構成しなくても実行できます。
そのプリエンプションオプションについて詳しく知りたい場合は、私に知らせてください。condor-userlistアーカイブでさらに構成を読むことをお勧めします。