View a markdown version of this page

PCS AWS でのハードウェアトポロジの設定 - AWS PCS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

PCS AWS でのハードウェアトポロジの設定

Slurm は、コンピューティングノードの内部ハードウェアレイアウトがわかっている場合、より良い配置決定を行います。コアがソケットと非統一メモリアクセス (NUMA) ドメインにグループ化される方法、L3 キャッシュがコアにマッピングされる方法、各 GPU がアタッチされるコアなどです。このトピックでは、Slurm がそのレイアウトをモデル化する方法と、サポートされている各 Slurm バージョンで AWS PCS がレイアウトを設定する方法について説明します。

CPU トポロジ

コンピューティングノードのコアは互換性がありません。これらは物理パッケージ (ソケット) と NUMA ドメインにグループ化され、各グループはメモリコントローラーや L3 キャッシュなどのリソースを共有します。同じグループに配置された 2 つのタスクはより高速に通信し、キャッシュを共有します。グループ間で配置されたタスクは、それらの共有リソースに対して競合が少なくなります。

Slurm は、ノードあたりのこのグループ化を の Sockets、CoresPerSocket、および ThreadsPerCore設定で記述しますslurm.conf。Slurm がソケットとして扱うものは、ノードごとのParameters設定で設定できます。

  • numa_node_as_socket – 各 NUMA ドメインはソケットです。

  • l3cache_as_socket – 各 L3 キャッシュドメインはソケットです。これは、ソケットレベルが粗すぎる特定のプロセッサで役立ち、L3 キャッシュはより良いタスク分散を提供する可能性があります。

CPU トポロジーが設定されている場合、ソケット対応スケジューリングオプションは意図したとおりに機能します。 --ntasks-per-socketや などのジョブオプションと--sockets-per-node、クラスターレベルのSelectTypeParameters設定の CR_Socketまたは CR_Socket_Memory値を使用したソケットベースの割り当てです。Slurm がソケット、コア、スレッドを割り当てる方法の詳細については、Slurm ドキュメントの「マルチコア/マルチスレッドアーキテクチャのサポート」を参照してください。

AWS PCS は 25.11 より前の Slurm バージョンでは CPU トポロジを設定しないため、これらのバージョンのノードはソケットごとに 1 つのコアをアドバタイズし、これらのオプションは効果がありません。

GPU アフィニティ

ノード内の各 GPU は 1 つの NUMA ドメインに最も近いため、ノードのコアのサブセットはローカルです。GPU のローカルコアで実行されるタスクは、他のソケットのタスクよりも短いパスでデータを転送します。Slurm は、GPU-to-coreのアフィニティ (gres.confレコードの Cores 属性) を記録しますLinks。 GPU-to-GPU

AWS PCS コンピューティングノードでは、デバイスの列挙は個々のインスタンスに依存し、デバイスはノードの起動時にのみ表示されるため、この情報を事前に静的に設定することはできません。Slurm のAutoDetectメカニズムはこれを解決します。ノードが起動すると、 は NVIDIA Management Library (NVML) にslurmdクエリを実行し、検出されたアフィニティを登録時にコントローラーに報告します。

注記

ノードの電源がオフになっている間、Slurm は GPU-to-CPU間のアフィニティを認識しません。アフィニティはノードが起動して登録されたときにのみ使用可能になるため、パワーダウンしたノードのスケジューリングは、アフィニティなしで行われます。

自動検出された GPU アフィニティはソケットの観点から表されるため、正しい CPU トポロジが必要です。ノードがノードの設定済みソケット境界に合わない GPU アフィニティを登録すると、Slurm はノードを に設定INVALID_REGし、ドレインします。詳細については、「PCS での無効なノード登録 (INVALID_REG) AWS のトラブルシューティング」を参照してください。

GPU アフィニティが利用可能になると、Slurm は割り当てられた GPUs のローカルコアにタスクを配置できます。汎用リソース (GRES) のアフィニティはソケットの詳細度で処理されます。配置はジョブオプションによって異なります。検出されたアフィニティを使用する組み合わせには--gpus-per-task、 --ntasks-per-socketと 、 --gpusと が含まれます--ntasks-per-gpu。

Slurm バージョン別のトポロジ動作

PCS AWS が設定するものと自分で設定できるものは、クラスターの Slurm バージョンによって異なります。

Slurm 25.11 から

カスタム設定による CPU トポロジ

CPU トポロジは、コンピューティングノードグループの SocketsおよびParametersカスタム Slurm 設定を使用して自分で設定できます。詳細については、「PCS コンピューティングノードグループのカスタム Slurm AWS 設定」を参照してください。

  • を Slurm がソケットとして扱うドメインの数Socketsに設定します。 AWS PCS は、マッチングを計算して設定CoresPerSocketします。値はノードのコア数を均等に分割する必要があります。

  • ドメインが何であるかを宣言l3cache_as_socketするには、 を numa_node_as_socketまたは Parametersに設定します。

ではl3cache_as_socket、 Socketsが必要です。 AWS PCS はインスタンスタイプの L3 キャッシュレイアウトを決定できないため、L3 キャッシュドメインの数を指定します。これは、26.05 以降を含むすべての Slurm バージョンに適用されます。

例– hpc7a.96xlargeコンピューティングノードグループのソケットとしての L3 キャッシュドメイン (24 L3 キャッシュドメイン、それぞれ 8 コア)
aws pcs update-compute-node-group \ --cluster-identifier my-cluster \ --compute-node-group-identifier my-cng-1 \ --slurm-configuration \ 'slurmCustomSettings=[{parameterName=Sockets,parameterValue=24},{parameterName=Parameters,parameterValue=l3cache_as_socket}]'
注記

AWS PCS は、ハードウェアに対する正確性ではなく、Sockets値の構造を検証します。ノードの実際のレイアウトと一致しない値は、配置が最適でないか、GPU 自動検出がアクティブなINVALID_REG場合に になります。

AutoDetect を使用した GPU トポロジ (オプトイン)

Slurm 25.11 では、GPU 自動検出はデフォルトでオフになっています。のコンピューティングノードグループの GPU レコードAutoDetectに を追加してオプトインしますgresCustomSettings。詳細については、「PCS でのカスタム GRES AWS 設定の構成」を参照してください。

AutoDetect では、ノードの CPU トポロジを設定する必要があります。25.11 では、これは前のセクションで説明したようにSocketsコンピューティングノードグループの を設定することを意味します。これがないと、ノードはデフォルトのone-core-per-socketレイアウトに合わない GPU アフィニティを登録し、Slurm はそれらを に設定しますINVALID_REG。

Slurm 26.05 から

デフォルトの CPU トポロジ

Slurm 26.05 以降、 AWS PCS はデフォルトで NUMA ベースの CPU トポロジを設定します。 AWS PCS はコンピューティングノードグループのインスタンスタイプから NUMA ドメインの数を決定し、各ノードParameters=numa_node_as_socketで Sockets、CoresPerSocket、 を設定します。

以下のルールが適用されます。

  • コンピューティングノードグループが複数のインスタンスタイプを使用している場合、 AWS PCS はすべてのインスタンスタイプに同じ数の NUMA ドメインがある場合にのみデフォルトのトポロジを適用します。それ以外の場合、 AWS PCS はトポロジを未設定のままにして、以前のバージョンの動作と一致します。

  • コンピューティングノードグループのカスタム Slurm 設定Socketsで を設定した場合、値が優先され、PCS AWS は を追加しませんParameters。これを使用してデフォルトを上書きします。たとえば、L3 キャッシュドメインを でソケットとして使用する場合はParameters=l3cache_as_socket、 Sockets値が必要です。

注記

自動トポロジは、Slurm 26.05 以降で作成されたクラスターと、26.05 以降に更新したクラスターに適用されます。

デフォルトでは GPU 自動検出

Slurm 26.05 以降、 AWS PCS はデフォルトで GPU 自動検出を有効にします。 AWS PCS は、PCS が CPU トポロジを自動的に設定したか、Sockets自分で設定したかにかかわらず、ノードのソケットレイアウトがわかっている場合に GPU コンピューティングノードグループに対して生成する GPU AWS レコードAutoDetect=fullに を追加します。ソケットレイアウトが使用できない場合、 AWS PCS は なしで GPU レコードを出力しAutoDetect、以前のバージョンの動作と一致します。 AWS PCS が生成する GPU レコードと、そのレコードを独自のレコードと照合する方法の詳細については、「」を参照してくださいPCS AWS が gres.conf レコードを適用する方法。