演習 - HPC SKU の正しい NUMA マッピングを見つける

完了

研究開発チームの密結合された HPC アプリケーションの 1 つでは、パフォーマンスのためにハイブリッド並列処理 (MPI + スレッド) を使用します。 HB120_v2 がこのアプリケーションに最適な SKU であると判断したため、プロセスとスレッドを固定する最適な場所を特定する必要があります。

次の演習では、研究開発チームが HB120_v2 NUMA トポロジを特定するために使用した手順に従い、どの CPU ID がどの NUMA ドメインに対応しているかを検出します。

Note

この演習は省略してもかまいません。 この演習を実行する場合は、始める前に Azure サブスクリプションを作成する必要があります。 Azure アカウントをお持ちでない場合、またはこの時点で作成しない場合は、提示されている情報を理解するため手順に目を通してください。

  1. Azure CLI をインストールしたコマンド プロンプトを開きます。

  2. Azure アカウントにサインインします。 この手順で、リソースをデプロイするためのアクセス許可があることが確かめられます。

    az login
    
  3. リソース グループを作成する。 このリソース グループに HB120_v2 VM をデプロイします。 RESOURCE-GROUP_NAME を任意の一意な名前に置き換え、LOCATION を自分の近くの場所 (たとえば、eastus) に置き換えます。

    az group create \
       --name <RESOURCE-GROUP_NAME> \
       --location <LOCATION>
    
  4. Azure Marketplace から CentOS-HPC 7.8 イメージを使用する HB120_v2 VM を作成します。 RESOURCE-GROUP_NAME を前の手順で作成したリソース グループに置き換え、VM-NAME を任意の一意な名前に置き換えます。

    az vm create \
       --resource-group <RESOURCE-GROUP-NAME> \
       --name <VM-NAME> \
       --admin-username azureuser \
       --generate-ssh-keys \
       --image OpenLogic:CentOS-HPC:7_8:latest \
       --size Standard_HB120rs_v2
    

    このコマンドが完了するまで少し時間がかかることがあります。 VM が作成されたら、VM の publicIpAddress を書き留めておきます。これは JSON 出力の一部になります。 次の手順でこの IP アドレスを使用します。

  5. 自動的に生成された ssh キーを使用して、HB120_v2 VM にサインインします。

    ssh azureuser@<VM-PUBLIC-IP-ADDRESS>
    
  6. lstopo-no-graphics をインストールします (hwloc rpm から)。

    sudo yum install -y hwloc
    
  7. lstopo-no-graphics を実行して NUMA トポロジを特定します。

    lstopo-no-graphics 2>&1 | tee lstopo-no-graphics.out
    
  8. コア ID と、それらがメンバーである NUMA ドメイン ノードを書き留めておきます。

HB120v2 のコア ID と 30 個の NUMA ドメインのマッピングは、0-3、4-7、8-11、12-15、16-19、20-23、24-27、28-31、32-35、36-39、40-43、44-47、48-51、52-55、56-59、60-63、64-67、68-71、72-75、76-79、80-83、84-87、88-91、92-95、96-99、100-103、104-107、108-111、112-115、116-119 です。

この NUMA マッピング情報により、プロセスとスレッドを固定する場所がわかります。 各プロセスは、その独自の NUMA ドメインにマップされる必要があります。 MPI プロセスの場合のみ、NUMA ドメインあたり 1 つ、2 つ、3 つ、または 4 つのプロセスを実行してみます。 最適なパフォーマンス (実時間の短縮など) が得られるマッピングを確認します。 ハイブリッド並列アプリケーションの場合、プロセスとそのスレッドを同じ NUMA ドメインにグループ化します。 次の MPI ユニットでは、プロセスを NUMA ドメインに固定するために使用する MPI コマンドライン引数を示します。