- BlueField-2 DPU上で実行することを想定
- MPICHの通信チャネルの設定は,
./configure --with-device=ch3:sock ...
対応 - MPICH(mpirun)実行時に、環境変数
MPICH_PORT_RANGE
の設定が必要 - TCP port番号の範囲はこちら (unisonflow-mpichを参考にした)
unsigned short mpich_port_start = 50000;
unsigned short mpich_port_end = 50100;
-
DPUのセットアップ NVIDIA DEVELOPPERS GUIDE
-
DPU: dockerのインストール
-
DPU: OVS(Open vSwitch)設定
-
DOCAアプリケーションのビルド
- ビルドスクリプト
- ARM用のバイナリにコンパイルする必要があるため,ビルド用のdockerコンテナが起動し,コンテナ内でビルドが実行される,ビルドが成功した場合,実行ファイルが
src/build
以下に出力される.
-
DOCAアプリケーション実行
-
こちらのサンプルアプリ(simple-forward-vnf)を参考にしているため,実行方法もこちらに従う.
# Build DPU application without containers
DPU$ ./src/build_app.sh
# Run the application
DPU$ sudo ./bin/run_mpiid.sh
- mpichのインストールが必要, mpicc, mpirunが利用できることが必要
- ログ記録時刻(UTC)
- 送信元ノードIP
- 宛先ノードIP
- 送信データサイズ
- MPI関数
- putLogのフロー
- バッファされている文字列長buf_lenを取得
- if buf_len > LOG_BUF_SIZE
- mutex lock
- ファイルオープン
- ファイルに文字列を出力
- ファイルクローズ
- mutex free
- else
- bufferに最新のログを追加
パケット受信→解析処理→送信の順番で実行すると,解析処理の時間がかかってしまうため,通信遅延時間が大きくなる.
通信遅延時間短縮を目的の一つとしているため,パケット受信→送信までの時間をできるだけ短くする必要がある.