Slurm ブロックスケジューリングによる NVIDIA GB200 NVL72 のシステム・ワークロード効率最大化
NVIDIA は GB200 NVL72 のラックスケールアーキテクチャに対応するため、Slurm のブロックスケジューリング機能を活用して、NVLink コヒーレンス領域を跨ぐ割り当てによる性能低下を防ぎ、実運用レベルの効率化を実現する方法を解説している。
キーポイント
GB200 NVL72 のアーキテクチャ的特徴と課題
単一ラック内に 72 個の Blackwell GPU を統合し、NVLink コヒーレンス領域を拡張する新設計により、従来のドメイン境界を超えたワークロード処理が性能低下を招く新たな課題が生じている。
ラックスケール・ロカリティの重要性
ネットワークファブリックを単なるベストエフォート型トポロジーとして扱う従来のスケジューリングでは、アロケーションが分断されキュー待ち時間が延びるため、「ラックスケールの局所性」が必須要件となる。
Slurm ブロックスケジューリングによる解決
Slurm のトポロジー/ブロックプラグインとセグメントスケジューリング機能を用いることで、アプリケーション固有の NVLink 要件を原子的なブロックとして表現し、最適な配置を実現する。
本番環境向け構成ガイド
topology.yaml の設定や --segment パラメータの使用法など、プロトタイプから生産グレードのラックスケールオーケストレーションへ移行するための具体的な構成手順が示されている。
GB200 NVL72 ラックの複雑なトポロジ
18 台の計算トレイと 9 台の NVLink スイッチトレイから構成され、GPU とスイッチ間に合計 1,296 の接続が存在する極めて複雑な物理レイアウトを有しています。
高度なワークロード知能の必要性
GB200 NVL72 ラックにおける増大する相互接続の複雑さに対処し、効率的にリソースを管理するためには、より洗練されたワークロードインテリジェンスが不可欠です。
NVL72 の通信帯域とドメイン境界の重要性
GB200 NVL72 は GPU 間で 1.8 TB/s、ラック全体で 130 TB/s の超高速帯域を提供するが、ドメインを跨ぐ通信は 50 GB/s に急減するため、ジョブを NVLink ドメイン内に閉じ込めることが必須となる。
影響分析・編集コメントを表示
影響分析
この記事は、次世代 AI インフラの主流となる GB200 NVL72 の真価を発揮させるために、従来のスケジューリング概念からの転換が不可欠であることを示唆しています。Slurm の機能拡張を具体的に解説することで、大規模クラスター運用担当者がアーキテクチャの特性に合わせた最適化を即座に実践できる道筋を提供し、実用段階での性能最大化に大きく寄与します。
編集コメント
GB200 NVL72 のような超並列環境では、ハードウェアのポテンシャルを最大限引き出すためには、OS やミドルウェア側のスケジューリング戦略の根本的な見直しが求められます。Slurm の最新機能を正しく活用する指針は、大規模 AI 運用チームにとって極めて重要な技術的知見です。
NVIDIA GB200 NVL72 は、NVIDIA NVLink の整合性をラック全体に拡張することで、GPU クラスターを構築する根本的に新しい方法を導入しました。この設計はエクサスケール性能を実現しますが、多くのスケジューリングシステムが前提としていた仮定も変化させます。
その結果、「ラックスケールの局所性」が強制的な制約となります。ワークロードがドメイン境界を越えるとパフォーマンスが急激に低下し、ネットワークファブリックをベストエフォート型のツリートポロジと見なすスケジューラーは、キュー待ち時間を増加させアプリケーションのパフォーマンスを劣化させるような割り当ての断片化を引き起こします。
これに対処するため、Slurm ワークロードマネージャー はトポロジ/ブロックプラグインを導入し、セグメントスケジューリングによる機能拡張を続けています。このプラグインにより、管理者やユーザーはアプリケーション固有の NVLink 要件を、緩やかに最適化された割り当てではなく、原子的なブロックとして表現できるようになります。
本記事では、NVIDIA GB200 NVL72 アーキテクチャがどのように独自性を有するか、Slurm のブロックスケジューリングが配置とパフォーマンスの最適化にどう役立つか、そしてプロトタイプクラスターから本番グレードのラックスケールオーケストレーションへ移行するために、topology.yaml、--segment および関連機能の設定をどのように行うかを解説します。
NVIDIA GB200 NVL72 アーキテクチャはどのように独自なのか?
NVIDIA GB200 NVL72 は、GPU クラスター設計における新たなパラダイムを代表する、ラック単体のエクサスケールコンピューターです。以前のサーバー世代では NVIDIA NVLink がシャーシ内で使用されていましたが、GB200 NVL72 はこのコヒーレントメモリドメインをラック全体に拡張します:18 個の計算トレイにまたがる 72 個の NVIDIA Blackwell GPU が、第 5 世代 NVLink によって統合されています。
image*図 1. GB200 NVL72 ラックと NVLink トポロジーにおける日益複雑化する相互接続には、より高度なワークロードインテリジェンスが必要*
ラック内のすべての通信は NVLink の速度で動作します:NVIDIA GB200 NVL72 は GPU あたり 1.8 TB/s の双方向スループットを提供し、合計帯域幅は 130 TB/s に達します。ドメイン境界を越える通信では性能が著しく低下し、通常は InfiniBand または Ethernet を介して 50 GB/s(400 Gb/s)程度となります。
大規模な GB200 NVL72 クラスターを運用するには、NVLink ドメインをジョブのハード境界として扱う新しいワークロードスケジューリングアルゴリズムが必要です。これらの新アルゴリズムは効率的なワークロードに不可欠ですが、同時にシステム断片化に関する管理側の認識も必要とします。トポロジー/ブロック Slurm プラグインは、ユーザーと管理者の両方にとってこの 2 つの課題を解決する手助けとなります。
Slurm におけるブロックスケジューリングはどのように機能するのか?
Slurm は長年、トポロジ認識型ジョブスケジューリングをサポートしてきました。トポロジ/ツリープラグインは、大規模クラスターにおける標準的な手法です。これは、ネットワーク計算ファブリックをスイッチとノードの階層ツリーとしてモデル化します。トポロジ/ツリーの主な目的は、ジョブが跨ぐスイッチ数を最小限に抑えることですが、これはベストエフォート型の試みに過ぎません。ジョブはより早く開始するために、リーフスイッチ間で重度に断片化される可能性があります。
すべての計算ノードをインフィニバンドファブリックで接続するクラスターにおいては、このトレードオフは理にかなっています。複数のリーフスイッチにまたがるジョブは、単一のリーフスイッチ下で実行する場合よりもわずかに低速になるかもしれませんが、開始時間とパフォーマンスの間のトレードオフは一般的に許容範囲と見なされています。
GB200 NVL72 および GB300 NVL72 の登場により、新たなアプローチが必要となりました。NVIDIA と SchedMD による共同開発の結果、Slurm 23.11 リリースにおいて新しいトポロジ/ブロックプラグインが導入され、GB200 NVL72 などのラックスケールアーキテクチャをサポートするようになりました。
image*図 2. クラスター内の各マルチノード NVLink ドメインはブロックとしてモデル化され、これは剛性のあるスケジューリング単位です*
ジョブが単一のブロック(18 ノード以下)に収まる割り当てリクエストを提出した場合、ノードは常に 1 つのブロックから割り当てられ、ジョブは断片化されることはありません。
image*図 3. デフォルトのスケジューリング下でブロック全体にノードがどのように割り当てられるかを示すジョブ割り当て例(-N12, -N8, -N32)*
トポロジー/ブロックのデフォルト動作では、16 ノードを要求するジョブは、アイドル状態の 16 ノードを持つ単一のマルチノード NVLink ドメインが利用可能になるまでスケジューラが待機することになります。これにより、ジョブキューでの待ち時間が長くなる可能性があります。実際には、アプリケーションの NVLink 接続要件が、NVL72 ドメイン全体よりも小さい場合があります。
ユーザーがアプリケーションのトポロジー要件をジョブスケジューラに伝えることを可能にするため、Slurm はトポロジー/ブロックジョブに対して --segment 引数を導入しました。これは、同じブロック内に配置しなければならないノードの原子グループを定義する調整可能なパラメータとして機能し、スケジューラの効率性とアプリケーションの実際のハードウェア局所性要件とのバランスを取るのに役立ちます。
このパラメータを変更することで、スケジューリングの制約を大幅に緩和できます。例えば、12 ノードを要求しつつ --segment=4 を指定するジョブは、3 つの別々のブロックに分割して実行可能です。単一のブロックに 12 ノードが利用可能でないため、--segment=4 を指定しなければこの新しいジョブを実行することはできません。
image*図 4. セグメント化された割り当ての例 (-N12 --segment=4) は、ジョブが複数のブロックにどのように分割されるかを示しています*
Slurm ブロックスケジューリングはパフォーマンスをどのように最適化するのか?
ユーザーをしばしば驚かせる重要な微妙な点は、Slurm が同じジョブの複数のセグメントを同じブロックに割り当てられる可能性があるという事実です。
セグメントの使用は、ワークロードの特定の局所性要件に基づいてパフォーマンスを最適化するために不可欠です。テンソル並列処理 (TP) は、遅延感受性の通信を高速な NVLink ファブリック内に維持するために小さく密なセグメントを必要とする場合があります。一方、エキスパート並列処理 (EP) は、すべてのオールツーオール集合演算が常に単一の NVLink ドメイン内で行われるようにするために、より大きなセグメントサイズを必要とする場合があります。
--segment=16 のような大きなセグメント値を使用することは、ノードをブロック間でバランスよく割り当てるための方法でもあります。図 4 は、32 ノードがブロック 3 に 18 ノード、ブロック 4 に 14 ノードとして分割される様子を示しています。代わりに --segment=16 を使用すれば、図 5 に示すように各ブロックに正確に 16 ノードを割り当てることを保証できます。
image*図 5. ブロック間でのノードの均等な分散を示すバランス型割り当て例 (-N32 --segment=16)*
Slurm 25.11 で導入されたコマンドライン引数 --consolidate-segments と --spread-segments を使用すると、セグメントの配置をユーザーが制御できるようになります。
Slurm ブロックスケジューリングの設定方法
トポロジー/ブロック設定については、Slurm 管理者に対しては、クラスター内の各 GB200 NVL72 ドメイン(18 ノード)ごとに 1 つのブロックを定義することを推奨します。18 ノード未満のジョブで --segment オプションを指定しない場合、Slurm はアロケーションをブロック境界間で断片化しません。代わりに、クラスター内で十分なリソースが利用可能になるまでジョブをキューに残置します。
これにより、このジョブに割り当てられたすべてのノードが NVLink を介して通信できるようになり、クラスターの現在の状態に関わらず一貫したパフォーマンスが保証されます。18 ノードを超えるジョブで --segment オプションを指定しない場合、Slurm は必要な最小限のブロック数にアロケーションを収めます。
topology/block の設定には、Slurm 25.05 で導入された機能であるファイル topology.yaml を利用することを推奨します。例えば、2 つの GB200 NVL72 ドメインを定義するには、以下のスクリプトを使用します:
- topology: gb200-nvl72
cluster_default: true
block:
block_sizes:
- 18
blocks:
- block: block01
nodes: node[0001-0018]
- block: block02
nodes: node[0019-0036]
Slurm のトポロジ/ブロックプラグインは、複数の階層レベルでのグループ化をサポートしており、最初のレベルは NVL72 ドメインとなり、より上位のレベルのブロックは、データセンター行やデータセンターホールをまたぐ際の性能への影響など、計算ファブリック設計の物理的な現実を反映することができます。
GB200 NVL72 クラスターにおいて、計算ファブリックに対して完全な fat-tree(脂肪樹状トポロジ) が構成されている場合、マルチノード NVLink ドメインに対しては Slurm ブロックを単一のレベルのみ使用することが推奨されます。これは、リーフスイッチをまたぐ際の性能低下が、NVL ドメインをまたぐ際の性能低下ほど急峻ではないためです。スケジューリング可能な最小単位は 1 ノード(4 つの GPU)となります。
Slurm によって作成されたブロックトポロジは、以下のコマンドで確認できます:
$ scontrol show topology
BlockName=block01 BlockIndex=0 Nodes=node[0001-0018] BlockSize=18
BlockName=block02 BlockIndex=1 Nodes=node[0019-0036] BlockSize=18
新しい機能を十分に活用し、アプリケーションがトポロジ要件の追加によって恩恵を受けられるジョブを提出するためには、クラスターユーザーはクラスター管理レベルで有効化された --segment 引数付きでジョブを提出する必要があります。NVLINK が 4 つの GPU(1 ノード)間のみで必要である場合は、スケジューラーに対する配置柔軟性を最大化できるため、--segment=1 を使用すべきです。
--segment=18 の使用は推奨されず、代わりに --segment=16 の使用が勧められる可能性があります。これにより、Slurm が排水済みまたはダウンしたノードを含むブロックを使用する機会が増えます。クラスター管理者はまた、ガイドラインから強制へ切り替えることもでき、クラスターのガイドラインを満たさないジョブを拒否することで実現できます。これは、シンプルな cli_filter/lua スクリプトを使用して達成できます:
function slurm_cli_pre_submit(options, pack_offset)
if options["segment"] == "18" then
slurm.log_error("error: using --segment=18 is currently not allowed.")
return slurm.ERROR
end
return slurm.SUCCESS
end
function slurm_cli_setup_defaults(options, early_pass)
return slurm.SUCCESS
end
function slurm_cli_post_submit(offset, job_id, step_id)
return slurm.SUCCESS
end
$ srun -N18 --segment=18 hostname
srun: error: lua: error: using --segment=18 is currently not allowed.
srun: error: cli_filter plugin terminated with error
NVIDIA IMEX の設定方法
ブロックスケジューリングの設定に加えて、同じマルチノード NVLink ドメイン上で実行されるジョブ間のドライバレベルでの分離を確保するために、Slurm 内で NVIDIA IMEX サービスが NVLink ネットワークに対して適切に設定されていることを確認することも有益です。
NVLink ドメイン内のノード間で GPU メモリのインポートおよびエクスポートを有効にするには、クラスター内のすべての計算ノードで NVIDIA IMEX サービスを開始する必要があります。IMEX 設定ファイルが静的な場合、推奨されるアプローチは、ブート時に nvidia-imex systemd サービスを単純に開始し、Slurm ジョブ全体を通じて同じサービスインスタンスを維持することです。
各ジョブに対して IMEX チャネル の割り当てを Slurm が管理できるようにするためには、Switch/nvidia_imex プラグイン(Slurm 24.05 で導入)を有効にすることが推奨されます。これにより、ジョブ間のドライバレベルでの分離が提供され、誤った干渉を防ぐことができます。プラグインを有効にするには、slurm.conf に以下の単一行を使用します。
SwitchType=switch/nvidia_imex
このアプローチでは、IMEX サービスとチャネルの管理に、Slurm のプロローグおよびエピログスクリプト内でカスタムロジックを実装する必要はありません。
トポロジー/ブロックアドバンスド機能とは何ですか?
トポロジー/ブロックプラグインの初期リリース後、NVIDIA は Slurm コミュニティと緊密に協力し、トポロジー/ブロックプラグインの動作に対するより多くの制御を提供する新機能を導入してきました。
Slurm 25.05 から、Slurm トポロジファイルに不完全なブロック(定義されたブロックサイズよりノード数が少ないブロック)を宣言できるようになりました。また、プレースホルダーとしてノードが全くないブロックも宣言可能です。これはドメイン内のすべてのノードがまだオンラインになっていないクラスタの初期段階で有用です。Slurm 24.05 以降では、定義されたブロックサイズよりも多くのノードをリストするだけで、ドメイン内に予備ノードを宣言することも可能になりました。
topology.yaml ファイルの導入により、従来のアプローチにおける主要な制約の一つが解消されました:現在では、Slurm クラスタ上で複数のトポロジプラグインを同時に使用でき、各 Slurm パーティションに対して異なるトポロジプラグインを関連付けることが可能になりました。この機能は、トラブルシューティングのためにクラスタ管理者がトポロジ/ブロックプラグインをバイパスする方法を定義するために活用されます。これは、topology.yaml 内で「フラット」なトポロジを定義することで実現されます:
- topology: gb200-flat
cluster_default: false
flat: true
次に、このトポロジを slurm.conf の管理者専用パーティションに関連付けます:
PartitionName=admin-flat AllowAccounts=admin Default=NO Nodes=nodes[0001-0036]
Hidden=YES Topology=gb200-flat
セグメントサイズがノードの可用性に与える影響は?
--segment オプションを適切に設定することの重要性を検討するためには、特定のジョブに対する有効なクラスタ容量へのセグメントサイズのインパクトを示す簡易的な数学モデルを使用できます。管理者は、セグメントサイズがノードの可用性にどのように影響するかを理解しておく必要があります。
image*図 6. 単一の非常に大きなジョブが --segment を使用している場合の、利用可能なクラスター容量への影響(ノード未利用率λが増加するにつれて)*
--segment=9 の影響も観察できます。ノードが 1 つでも未利用になると、ドメインは --segment=9 を使用するジョブに対して 9 ノードしか提供できないため、ノード未利用率λが増加すると期待される利用可能容量は急速に低下します。一方、--segment=16 の場合、未利用ノードが 3 つ未満であれば、ドメインは 16 ノードを提供し続けます。
ラックスケールアーキテクチャの最適化を始めるには
ラックスケールアーキテクチャは AI コンピューティングの未来であり、NVIDIA Blackwell GB200 NVL72 は、技術がより大きなドメインサイズへと向かう中で設計されたこのアプローチの最初の試作です。この新しいパラダイムをサポートするために、ソフトウェアインフラストラクチャも進化させる必要があります。Slurm のトポロジ/ブロックプラグインは基盤を提供し、Slurm コミュニティと協力して、大規模な展開・理解・最適化・運用を容易にするための継続的な取り組みにコミットしています。
ラックスケールオーケストレーションの最適化をお考えですか?Blackwell クラスターでブロックスケジューリングの実装を開始するには、Slurm topology.yaml ドキュメントおよび NVIDIA MNNVL ユーザーガイドをご覧ください。
原文を表示
NVIDIA GB200 NVL72 introduces a fundamentally new way to build GPU clusters by extending NVIDIA NVLink coherence across an entire rack. This design enables exascale performance, but it also changes the assumptions that many scheduling systems were built on.
As a result, “rack-scale locality” becomes a hard constraint. When workloads cross domain boundaries, performance drops sharply, and a scheduler that treats the network fabric as a best-effort tree topology will fragment allocations in ways that increase queue times and degrade application performance.
To address this, Slurm workload manager introduced the topology/block plugin and continues expanding its capabilities with segmented scheduling. The plugin enables administrators and users to express application-specific NVLink requirements as atomic blocks rather than loosely optimized allocations.
This post explains how NVIDIA GB200 NVL72 architecture is unique, how Slurm block scheduling helps optimize placement and performance, and how to configure topology.yaml, --segment, and related features so you can move from prototype clusters to production-grade rack-scale orchestration.
How is NVIDIA GB200 NVL72 architecture unique?
NVIDIA GB200 NVL72 is an exascale computer in a single rack that represents a new paradigm in GPU cluster design. While previous generations of servers used NVIDIA NVLink within a single chassis, GB200 NVL72 extends this coherent memory domain across an entire rack: 72 NVIDIA Blackwell GPUs spanning 18 compute trays, unified with fifth-generation NVLink.

All communications within the rack operate at NVLink speeds: NVIDIA GB200 NVL72 provides 1.8 TB/s bidirectional throughput per GPU, for a total of 130 TB/s aggregate bandwidth. Communication crossing domain boundaries faces a steep performance drop, typically 50 GB/s (400 Gb/s) through InfiniBand or Ethernet.
Operating GB200 NVL72 clusters at scale requires new workload scheduling algorithms to treat NVLink domains as hard boundaries for jobs. While these new algorithms are essential for efficient workload, they also require administrative awareness around system fragmentation. The topology/block Slurm plugin helps users and administrators with both of these.
How does block scheduling work in Slurm?
Slurm has long supported topology-aware job scheduling: the topology/tree plugin has been the standard for large-scale clusters. It models the networking compute fabric as a hierarchical tree of switches and nodes. While the primary objective of topology/tree is to minimize the number of switches a job spans, it is a best-effort attempt. The job might end up being heavily fragmented across leaf switches in order to start sooner.
For clusters with an InfiniBand fabric connecting all compute nodes, this trade-off makes sense. A job split across multiple leaf switches might run slightly slower than under one single leaf switch, but the tradeoff between start time and performance is generally considered acceptable.
The introduction of GB200 NVL72 and GB300 NVL72 required a new approach. From a joint effort between NVIDIA and SchedMD, the new topology/block plugin was introduced in the Slurm 23.11 release to support rack-scale architectures such as GB200 NVL72.

If a job submits an allocation request that fits within a single block (18 nodes or less), the nodes will always be allocated from one block and the job will not be fragmented.

With the default behavior of topology/block, a job requesting 16 nodes forces the scheduler to wait for a single multinode NVLink domain with 16 idle nodes. This can lead to increased job queueing times. In reality, the application might have NVLink connectivity requirements that are smaller than the full NVL72 domain.
To enable users to communicate the topology requirements of their applications to the job scheduler, Slurm introduced the --segment argument for topology/block jobs. This acts as a knob that defines the atomic group of nodes that must be placed in the same block and helps balance scheduler efficiency against the actual hardware locality requirements of the application.
By modifying this parameter, you can significantly ease scheduling constraints. For example, a job requesting 12 nodes but specifying --segment=4 can be split across three separate blocks. This new job would not be able to run without --segment=4, as there is no single block with 12 nodes available.

How does Slurm block scheduling optimize performance?
An important subtlety that often surprises users is the fact that Slurm can assign multiple segments of the same job to the same block.
Using segments is essential for optimizing performance based on the specific locality requirements of the workload: Tensor Parallelism (TP) may require small, tight segments to keep latency-sensitive communication on the high-speed NVLink fabric, while Expert Parallelism (EP) may require larger segment sizes to enforce that all-to-all collective operations will always be performed within a single NVLink domain.
Using a large segment value such as --segment=16 is also a way to yield a balanced allocation of the nodes across blocks. Figure 4 shows 32 nodes split as 18 nodes on block 3 and 14 nodes on block 4. Using --segment=16 instead would ensure exactly 16 nodes on each block, as shown in Figure 5.

The command-line arguments --consolidate-segments and --spread-segments introduced in Slurm 25.11 enable users to influence the placement of segments.
How to configure Slurm block scheduling
For topology/block, our recommendation for Slurm administrators is to define one block for each GB200 NVL72 domain (18 nodes) in the cluster. For jobs smaller than 18 nodes and not specifying --segment, Slurm will not fragment the allocation across block boundaries. Instead, it will keep the job queued until sufficient resources become available in the cluster.
This guarantees that all the allocated nodes for this job will be able to communicate with NVLink, providing consistent performance regardless of the current state of the cluster. For jobs larger than 18 nodes and not specifying --segment, Slurm will fit the allocation in the minimum amount of blocks required.
To configure topology/block it is recommended to rely on the file topology.yaml, a feature introduced in Slurm 25.05. For example, to define two GB200 NVL72 domains use the following script:
---
- topology: gb200-nvl72
cluster_default: true
block:
block_sizes:
- 18
blocks:
- block: block01
nodes: node[0001-0018]
- block: block02
nodes: node[0019-0036]
The Slurm topology/block plugin supports multiple levels of hierarchical grouping, where the first level would be the NVL72 domains, and the higher levels of blocks can reflect the physical reality of the compute fabric design such as the performance impact when crossing data center rows or data center halls.
For a GB200 NVL72 cluster with a full fat-tree for the compute fabric, it is recommended to use only a single level of Slurm blocks for the multinode NVLink domains, as the performance cliff for crossing leaf switches is not as steep as the performance cliff for crossing NVLink domains. The minimum schedulable unit is a single node (four GPUs).
The block topology created by Slurm can be verified with the following command:
$ scontrol show topology
BlockName=block01 BlockIndex=0 Nodes=node[0001-0018] BlockSize=18
BlockName=block02 BlockIndex=1 Nodes=node[0019-0036] BlockSize=18
To fully benefit from the new capability, and submit a job where the application could benefit from added topology requirements, cluster users want to submit jobs with a --segment argument that is now enabled at the cluster administration level. --segment=1 should be used when NVLink is only needed across four GPUs (one node), as it allows for maximum placement flexibility for the scheduler.
Using --segment=18 could be discouraged in favor of recommending --segment=16. This provides more opportunities for Slurm to use blocks that have drained or downed nodes. Cluster administrators can also decide to switch from guidance to enforcement by rejecting jobs that do not meet cluster guidelines. This can be achieved using a simple cli_filter/lua script:
function slurm_cli_pre_submit(options, pack_offset)
if options["segment"] == "18" then
slurm.log_error("error: using --segment=18 is currently not allowed.")
return slurm.ERROR
end
return slurm.SUCCESS
end
function slurm_cli_setup_defaults(options, early_pass)
return slurm.SUCCESS
end
function slurm_cli_post_submit(offset, job_id, step_id)
return slurm.SUCCESS
end
$ srun -N18 --segment=18 hostname
srun: error: lua: error: using --segment=18 is currently not allowed.
srun: error: cli_filter plugin terminated with error
How to configure NVIDIA IMEX
In addition to configuring block scheduling, it is beneficial to make sure NVIDIA IMEX service for NVLink networks is properly configured in Slurm for driver-level isolation between jobs running on the same multinode NVLink domain.
To enable GPU memory import and export across nodes within an NVLink domain, the NVIDIA IMEX service must be started on all compute nodes of the cluster. When the IMEX configuration file is static, the recommended approach is to simply start the nvidia-imex systemd service at boot time and keep the same instance of the service across all Slurm jobs.
It is recommended to enable the switch/nvidia_imex plugin (introduced in Slurm 24.05) to allow Slurm to manage the allocation of an IMEX channel for each job. This provides driver-level isolation between jobs and prevents accidental interference. To enable the plugin, use the following single line in slurm.conf:
SwitchType=switch/nvidia_imex
With this approach, management of the IMEX service and channels does not require custom logic in the Slurm prolog and epilog scripts.
What are the topology/block advanced features?
After the initial release of the topology/block plugin, NVIDIA has been working closely with the Slurm community to introduce new features that provide more control over the behavior of the topology/block plugin.
Starting from Slurm 25.05, you can now declare incomplete blocks (blocks with fewer nodes than the defined block size) in the Slurm topology file. You can even declare a block with no nodes at all, as a placeholder. This is useful in the early stages of a cluster when all nodes in a domain are not yet online. Since Slurm 24.05 it is also possible to declare spare nodes in a domain: simply by listing more nodes than the defined block size.
The introduction of the topology.yaml file lifted one major constraint with the legacy approach: one can now use multiple topology plugins simultaneously on a Slurm cluster, and associate a different topology plugin for each Slurm partition. This feature is leveraged to define a way for cluster admins to bypass the topology/block plugin for troubleshooting purposes. This is achieved by defining a “flat” topology in topology.yaml:
- topology: gb200-flat
cluster_default: false
flat: true
Then associate this topology to an admin-only partition in slurm.conf:
PartitionName=admin-flat AllowAccounts=admin Default=NO Nodes=nodes[0001-0036]
Hidden=YES Topology=gb200-flat
What is the impact of segment size on node availability?
To study the importance of setting --segment appropriately, one can use a simplified mathematical model that demonstrates the impact of the segment size on the effective available cluster capacity for a given job. Administrators need to be aware of how segment size can affect node availability.

You can also observe the impact of --segment=9: the expected usable capacity degrades quickly as the node unavailability rate λ increases, since having only a single unavailable node means the domain can only contribute nine nodes for jobs using --segment=9. Whereas for --segment=16, a domain will contribute 16 nodes as long as there are less than three unavailable nodes.
Get started optimizing your rack-scale architecture
Rack-scale architectures are the future of AI computing, and NVIDIA Blackwell GB200 NVL72 is the first iteration of this design as technology steers towards greater domain sizes. The software infrastructure needs to evolve to support this new paradigm. The Slurm topology/block plugin provides the foundation and the commitment to continue working with the Slurm community to make it easier to deploy, understand, optimize, and operate at scale.
Ready to optimize your rack-scale orchestration? Review theSlurm topology.yaml documentation and the NVIDIA MNNVL User Guide to start implementing block scheduling on your Blackwell clusters.
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み