mila.infiniband

InfiniBand

この役割は、InfiniBandインターフェースのインストールと設定を行います。

役割の変数

インストール

APTまたはYUM/DNFリポジトリを定義し、GPGキーへのパスを指定します。

# デフォルトのaptリポジトリ
infiniband_apt_repository: 'deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu18.04/amd64/ ./'

# デフォルトのyum/dnfリポジトリ
infiniband_yum_repository: 'https://linux.mellanox.com/public/repo/mlnx_ofed/latest/rhel8.3/$basearch/'

# MellanoxのGPGキー
infiniband_gpg_key: 'http://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox'

パッケージを最新のバージョンにアップグレードするためには:

infiniband_upgrade: True

リポジトリの優先度を設定します(APTのみ)。

infiniband_apt_priority: 490

カーネルヘッダーのパッケージ名は、ディストリビューションによって異なる場合があります。これは次のように定義できます:

infiniband_kernel_headers_package: 'linux-headers'

NVIDIA DGXのような一部のアプライアンスは、自分用のソフトウェアスタックを運営しています。アプライアンスがすでにMellanox OFEDドライバーのインストールを管理している場合、追加のリポジトリを設定する必要もドライバーをインストールする必要もありません。その場合、以下のパラメータをホストインベントリでFalseに設定できます。この設定は、ディストリビューションからのカーネルモジュールを使用する場合にも当てはまります。

infiniband_configure_repos: True
infiniband_install_kernel_modules: True

IPoIB

IPoIBで構成するインターフェースのリストを定義します。リストの各項目には、インターフェース名(iface)、デフォルトのIPv4アドレスからのオフセット、CIDRプレフィックスを定義する必要があります。リストが定義されていない場合、この役割はIPoIBインターフェースを構成しません。

infiniband_ipoib_interfaces:
  - iface: 'ib0'
    offset: -3064461568
    prefix: 17

オフセットを計算するには、以下を使用します:

$ python3 <<EOF
import ipaddress
source_net='192.168.121.0'
target_net='10.0.128.0'
offset=(int(ipaddress.ip_address(source_net))-int(ipaddress.ip_address(target_net)))
print(f"offset: -{offset}")
EOF

仮想化 - SR-IOV

適用するパラメータを持つMellanox HCAのリストを設定します。pci_busは/sys/bus/pci/devices/の値と一致する必要があります(例:/sys/bus/pci/devices/0000:41:00.0/)

infiniband_hca_devices:
  - device: mlx5_0
    pci_bus: '0000:41:00.0'
    sriov_en: True
    num_of_vfs: 8

現在サポートされているのはSRIOV_ENNUM_OF_VFSパラメータのみです。

VFの64ビットIB GUIDに使用するプレフィックスを定義します。この役割は、次のようにGUIDを定義します:

  • プレフィックス(40ビット)
  • "00"(8ビット)
  • デバイスID(8ビット):上記のリストinfiniband_hca_devicesのアイテムインデックス
  • VF ID(8ビット):infiniband_hca_devices[*].num_of_vfs内のVFのインデックス

SR-IOVを使用して複数のホストを設定する予定がある場合、デフォルトとは異なる値を設定することを強くお勧めします。

高可用性構成でのフェイルオーバーを可能にするために、特定のVMが実行される可能性のあるすべてのホストで同じinfiniband_hca_devicesとinfiniband_guid_prefixを使用してください。

infiniband_guid_prefix: "4d:69:6c:61:00"

デフォルトでは、この役割は新しい設定を読み込むためにホストを再起動します。再起動を禁止することも可能です:

infiniband_allow_reboot: false

高可用性クラスターで予期しないダウンタイムを避けるために、この役割はホストを一つずつ再起動します。スロットルを増やすことも可能です:

infiniband_throttle_reboot: "{{ ansible_play_hosts | length }}"

例のプレイブック

InfiniBandをインストールして構成します:

- hosts: computes:&infiniband
  roles:
    - role: mila.infiniband
      tags: 'role::infiniband'
プロジェクトについて

Install and configure InfiniBand interfaces

インストール
ansible-galaxy install mila.infiniband
ライセンス
mit
ダウンロード
10.1k
所有者
Quebec Artificial Intelligence Institute