AI-RAN: Nvidia Areial RAN - cuRAN (3)

在做 Open Source 的專案時, 常常覺得 Open Source 就像是迷宮,
要在大量的資料以及討論串中, 尋找有用的資源.
總是想到著名的大教堂與市集的比喻, 
作為一個初始的開發者, 總是沒辦法貢獻市場甚麼,
頂多就是作為一個有經驗的迷航者, 未來尋路的旅人指指方向.

科隆大教堂聖誕市集(照片:Shutterstock)

回歸正題, 在一系列尋找後, 我們可以找到當年的安裝文件,
https://docs.nvidia.com/aerial/archive/cuda-accelerated-ran/24-1/aerial_cubb/cubb_install/installing_tools.html
在文件中, 我們可以看到其安裝的需求, 包含如下:
  • Install the GPU card and CX6-DX NIC (GA100 + CX6-DX MCX623106AE-CDAT).
  • Connect the CX6-DX port 0 on both servers using a 100GbE cable.
    (另一邊為 RU 模擬器, 皆需要 CX6-DX 網卡)
  • Connect the Internet port to the local network.
針對 CX6-DX 網卡 driver 的安裝, 可以參考:
https://docs.nvidia.com/aerial/archive/cuda-accelerated-ran/24-1/aerial_cubb/cubb_install/installing_tools.html#install-rshim-and-mellanox-firmware-tools-on-the-host
CX6-DX 網卡為 Nvidia 收購 mellanox 後推出的產品, 有其自己特殊的 driver 設定, 
在安裝好 CX6-DX 網卡後, 要把 MAC 為只填入對應的設定檔. 
針對 GPU 的安裝, 在此範例中, 使用的 CUDA 版本為: 535.54.03,
同時, 還需要停止 Nouveau 並安裝額外的 GDRCopy Driver, 用以進行低延遲記憶體搬移.

[更新] 這邊需要注意一下, GDRCopy 對 cuRAN 是必須功能,
此驅動程式提供 GPU 和 CX6-DX 網卡直接溝通的能力, 
同時, 在較低階的 CX6-LX 網卡上並不支援此驅動程式, 故無法使用.

接著, 我們需要對 BIOS 進行設定:
  • Set the Power Policy to Best Performance.
  • Set the Power Policy SpeedStep (Pstates) option to “Disabled”.
  • Disable HyperThreading. Ensure you have performed Step 1 above before doing this step.
  • Save the BIOS settings, and then reboot the system.
這部分的設置, 基本上就是關閉 Intel 的省電模式, 以及對 hyper threading 的支援,
有趣的是, 這兩項功能正是 Intel 針對 CPU 計算能耗與效能優化的主要工具,
由此可見, Nvidia 對計算的設計與需求並未針對 x86 CPU 架構最佳化.

在此安裝範例中, 所使用的 OS 為 Ubuntu 22.04 Server 版,
同時, 需要更新 Kernel 為 Low-Latency (linux-image-5.15.0-1042-nvidia-lowlatency),
GPU 和 CX6-DX 網卡透過 PCIe 介面接到主機板上:

$ lspci |grep -i nvidia
# If the system has A100 40G GPU installed
b6:00.0 3D controller: NVIDIA Corporation Device 20f1 (rev a1)
# If the system has A100 80G GPU installed
b6:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)
# If the system has A100X GPU installed
bb:00.0 3D controller: NVIDIA Corporation Device 20b8 (rev a1)

$ lspci |grep -i mellanox
b5:00.0 Ethernet controller: Mellanox Technologies MT2892 Family [ConnectX-6 Dx]
b5:00.1 Ethernet controller: Mellanox Technologies MT2892 Family [ConnectX-6 Dx]

在文件中, 值得注意的還有對 CPU core 的設定,
除了上述要關閉 hyper threading 之外, 還需要指定 CPU core 的運算,
在這份範例中, Intel Xeon Gold 6240R 有 24 核, 
其中, 2-21 核配置給 cuRAN 專屬使用 (cuBB software stack).

在上述硬體設定完後, 我們就可以進行相關的硬體與驅動程式設置,
在 cuRAN 中, 計算單元執行於 docker 之上, 包成一個單一的 container, 稱為 cuBB,
因此, 在軟體準備上, 第一步驟即是安裝 docker 環境.
接著, 透過 nvidia-container-toolkit 取得 cuBB 的 container (需要 Nvidia 開發者帳號),
透過以上步驟, 就建立起 cuRAN 的基本測試環境.

考慮到這一套硬體裝置已經無法購買,
不論是 Nvidia GA100 GPU 或是 Gigabyte 的 Aerial Kit 都已停產,
我們只能按照這份文件, 以及市面上的硬體來建立 cuRAN 的環境,
以下列出一些可能需要注意的地方:
  • GPU 的算力與記憶體:
    1) GA100 記憶體為 40 GB, 替代 GPU 應該不能少於此數值
    2) GPU 算力和記憶體獨立, Nvidia 有自行分類的種類, 也需確認需求
  • CPU 的核心設置: 
    1) 需考慮 CPU 的核心數量並做對應設置, CPU 核心不應少於 24
    2) 不確定是否需要 Xeon 架構, 考慮到多數進階功能皆關閉, 應是不用
  • CX6-DX 網卡:
    1) CX6-DX 有許多不同支援功能, 最好可以買到同一型號, 或者確認支援性
    2) 測試範例是兩邊 Server 對接, 若接實體裝置, 須注意光纖規格
我其實有上官方論壇詢問 cuRAN 的硬體支援規格,
不過, Nvidia 目前對於硬體共通性的測試有限, 只回答目前他們有測試的架構,
因此, 更一般性硬體串接測試, 也就只能讓大家自行試錯了...
如果有遇到問題, 還是可以去論壇回報, 他們會幫忙看錯誤的訊息.
這一篇文章中, 我略過了同步的部分, 我們留待下一篇文章中說明.

留言

熱門文章

LTE筆記: RSRP, RSSI and RSRQ

[WiFi] WiFi 網路的識別: BSS, ESS, SSID, ESSID, BSSID

LTE筆記: 5G NR Measurement Events