發表文章

目前顯示的是 2025的文章

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

圖片
之前停頓了一段時間, 沒有繼續寫 Sionna 的文件, 看起來或許是一件好事, Sionna 在 Nvidia 的 GTC 2025 中, 公布了正式的 1.0 版本, 連結如下: https://nvlabs.github.io/sionna/index.html 相較於之前 0.19 的版本,  Sionna 1.0 版中, 明確地把 Sionna 分成三個部分: Sionna RT: A lightning-fast stand-alone ray tracer for radio propagation modeling Sionna PHY: A link-level simulator for wireless and optical communication systems Sionna SYS: System-level simulation functionalities based on physical-layer abstraction 其中, Sionna RT 也就是底層通道模擬的部分, 如之前所述, 這邊需要定義基站和使用者位置, 環境,  系統則會模擬出每一對基站到使用者訊號強度. 第二部分, Sionna PHY 則是利用模擬的通道來進行 PHY 層的計算, 對於 Sionna PHY 而言, 輸入可以是統計的通道 (AWGN, Rayleigh fading), 進行包含包括調變, 編碼, 通道, 接收與解碼的不同功能, 當我們要把 Sionna PHY 和 Sionna RT 進行整合時, 我們可以把 Sionna RT 的輸出存成 sionna.channel 的形式, 表示通道的時間響應 (Channel Impluse Response, CIR), 作為 Sionna PHY 的輸出, 下圖為 Sionna RT + Sionna PHY 結合的範例, 先透過模擬基站 (紅圈) 與使用者 (紅點) 的通道, 記錄下來, 之後放入 Sionna PHY 中進行後續模擬. 來自:  https://nvlabs.github.io/sionna/phy/tutorials/Link_Level_Simulations_with_RT.html 最後, 對於 Sionna SYS, 這一個布建基...

AI-RAN: DPU (Data Processing Unit) 與他的分類 (3)

圖片
回到原本的主題, 讓我們來介紹 DPU 的分類吧, 在 Nvidia 的文件中, DPU 一共有 4 種不同的運作模式, 分別是: DPU mode or embedded function (ECPF) ownership where the embedded Arm system controls the NIC resources and data path (default) Restricted mode which is an extension of the ECPF ownership with additional restrictions on the host side NIC mode where the DPU behaves exactly like an adapter card from the perspective of the external host Separated host mode (symmetric model) 在上一篇文章所介紹的模式, 被稱為 DPU mode, 考慮到所有的裝置也都被命名為 DPU, Nvidia 又稱為 embedded function (ECPF) 模式, 在此模式下, DPU 中的 ARM (CPU) 控制所有的資料流. 在 Restricted mode 則是延伸原有的 ECPF 模式, 但是更限制主機的存取, (無法從主機上對 DPU 進行對應的設定, 所有設定在 ARM 上執行) 主要應用的場域是在安全性較高的網路設定中. NIC mode 則是之前提及的 ConnectX 網卡模式, 最簡單容易設置, 但是, 就無法發揮 DPU 進行負載平衡的功能. 最後 Separated host mode, 這邊的資料比較少, 不過按照文件敘述, 主要是對應於資料中心的網路規劃, 主機和 DPU 分開並平行處理資料流. 這些不同模式, 可以用下列的 MST 指令來設定, 首先是看目前 DPU 狀態: $ mst status -v ... DEVICE_TYPE             MST              ...

AI-RAN: DPU (Data Processing Unit) 與他的分類 (2)

圖片
最近實在是太忙碌了, 以致 2 月的第二篇拖到現在才寫, 原本是想說, 也該找時間回補一篇文章, 達成一個月兩篇的自我承諾, 不過看了看自己的行事曆, 還是不要把承諾給得太輕易好了... 回歸正題, 在上一篇文章中, 我們介紹了 DPU 以及 DOCA 的源起, 接著, 我想我們就從 DPU 的架構來說明, 這樣的功能如何實現, 在開始討論以前, 我想先談談兩個我之淺搞混的產品: ConnectX: 本質上還是 NIC, 但具備硬體卸載 (offload) 能力來減少 CPU 負擔 BlueField: 這個才是 DPU, 具備 ARM CPU 獨立晶片, 也是我們討論的目標 針對 Nvidia CuRAN 的功能, 以上兩者皆能支援, 若以實作上的功能簡單化來說, 使用 ConnectX 可能可以少走一些路. 那我們就從 DPU 的架構開始吧: 來自:  https://docs.nvidia.com/networking/display/bluefieldbsp480/bluefield+software+overview 看到這張圖, 就代表我們要先對其中專有名詞說文解字一下: Rhsim 是 BlueField DPU 的模擬環境,允許在同一台 BlueField DPU 上同時運行 Host 和 DPU 環境,以測試 DPU 處理流量的能力 (這個我們之後再介紹) ConnectX Port 指的是 NVIDIA ConnectX 系列網路介面卡 (NIC) 的網路埠 (Port),這些埠可用於各種高速網路通訊, 例如: Ethernet、InfiniBand、RDMA RDMA (Remote Direct Memory Access) 允許伺服器之間直接存取彼此的記憶體,而不經過 CPU 處理 在上圖中, 我們可以看到 DPU 基本上就是 ConnectX 網卡和 ARM CPU 的組合, 這裡增加的 ARM CPU 一方面提供一個簡單的作業系統 (BlueField OS), 另一方面, 也可以透過此作業系統上的 OpneVSwith 提供 SDN (Software Define Network) 功能. 來自: https://www.servethehome.com/nvidia-bluefield-3-dpu-archite...

AI-RAN: DPU (Data Processing Unit) 與他的分類 (1)

圖片
由於近日工作有所插斷, 所以就來改看一些 DPU 的文章, DPU (Data Processing Unit) 是 Nvidia 生態圈中比較不亮眼的一支, 但卻也是一個建構新型態運算的重要角色. 在 Nvidia 的新型態運算框架中,  主要的目標就是要從以 CPU 為主的計算架構, 改成以 GPU 為主的架構,  這其中有一個困難處, 就是計算透過網路平行化的效能, 為了處理大量的資料, 資料中心必須考慮多個節點的資料平行化, 這些平行運算的資料, 就需要透過網路在各節點中透過 CPU 處理並交換, 因此, 整體運算的瓶頸仍是在 CPU 的運算上. 為了打破這樣的架構, Nvidia 在 2019 年收購了 Mellanox, 並開始開發 DPU 的產品, 用意在直接串連 GPU 的運算算力,  提供資料中心以 GPU 為基礎的計算架構. 來自: https://docs.oracle.com/zh-tw/learn/gpudirect-rdma-ib-write-bw/index.html#introduction 為了達成以 GPU 為核心的平行計算架構,  Nvidia 使用 RDMA (R emote Direct Memory Access, RDMA ) 技術來串聯 GPU, 並透過 DPU 與 GPU 之間的 PCIe 匯流技術 ( Direct Memory Access, DMA ), 繞開 CPU 端到端間的存取, 讓不同節點上的 GPU 可以進行資料交換, 進而提供跨節點的 GPU 平行化計算框架.  來自:  https://developer.nvidia.com/blog/demystifying-doca/ 和發展 CUDA 的策略類似, Nvidia 也希望發展 DPU 的環境形成業界標準. 相對於 CUDA 主要為 CPU 的核心平行化, DPU 這邊的環境稱為: DOCA (Data-Center-Infrastructure-On-A-Chip Architecture), 我們以上圖作為參考的實作框架, 左邊為 GPU 右邊為 DPU, 兩者透過 CUDA 協作,  在 DPU 的框架中, 我們看到有一個 DOCA Runtime, 運作在 D...

AI-RAN: Nvidia Areial RAN - Sionna (2)

圖片
我們就從 Sionna 的安裝開始吧! Sionna 可以簡單的用 Google Co-lab 開啟, 但我們還是開立一個新的 linux 環境來進行安裝. 主要的操作, 請參考:  https://nvlabs.github.io/sionna/installation.html 首先, 先建立一個 conda 環境, 並進入: conda create -n sionna conda activate sionna 接著, 透過 pip 安裝 Sionna 相關套件, Sionna 的相依套件已封裝至 sionna 這個軟體安裝組合中, 除了 sionna 之外, 為了進行圖形化顯示, 我們還需要安裝 jupyter notebook, 提供圖形的顯示, 安裝指令如下: (sionna) ov2@ov2:~$ pip install sionna Defaulting to user installation because normal site-packages is not writeable  Collecting sionna [...] (sionna) ov2@ov2:~$ pip install --upgrade ipykernel jupyterlab jupyter 這邊 jupyter notebook 還需要一些額外的設置, 使外部的編輯需求可以連入, 考慮到此處的設定和伺服器相關, 便不再詳述, 主要步驟即是設定對外 IP 並對 port 進行 NAT 轉換. 安裝完成後, 我們先透過 python 的介面檢查 Sionna 是否可以正確引入, 其對應的指令如下: (sionna) ov2@ov2:~$ python3 Python 3.10.12 (main, Jan 17 2025, 14:35:34) [GCC 11.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sionna >>> print(sionna.__version__) 0.19.1 這邊我們可以看到可以正...

AI-RAN: Nvidia Areial RAN - Sionna (1)

圖片
在一系列文章的最後, 我們進入 Sionna 的介紹, 考慮到 Sionna 只有少數的硬體需求, 我們在此系列文章中, 將介紹 Sionna 的安裝, 環境建立, 以及模擬. 在整體 Sionna 的介紹中, 我們也將側重兩個部分: 光跡追蹤 (Ray-tracing) 通道模型 通道參數對於 5G/6G 通訊應用的轉換 在開啟一系列文章之前, 我們還是先看看 Sionna 如何介紹自己: 來自: https://nvlabs.github.io/sionna/ Sionna 是用以發展 5G 與 6G 相關的研究套件, 支持: MIMO link-level 模擬, LDPC/Polar 編碼解碼, OFDM 通道估測與分配 Sionna 基於 Tensor-flow 開發, 可以使用 GPU 加速, 但也可以單獨使用 CPU 可以使用 Google Co-lab 與 Jupyter 環境編譯操作  來自:  https://developer.nvidia.com/blog/jumpstarting-link-level-simulations-with-sionna/ 事實上, Sionna 的整體實作核心是光跡追蹤的通道模型, 對於此部分的通道模擬機制, Sionna 有單獨的文件介紹:  https://nvlabs.github.io/sionna/em_primer.html 透過此通道模型, Sionna 可以進行 CIR (Channel Impluse Response) 的計算, 並據此取得 5G/6G 通訊環境中, OFDM symbol 的強度響應, 進行後續的資源分配與網速的分析. 基於光跡追蹤模型, Sionna 也提供了 RIS (Reconfigurable Intelligent Surfaces) 的模擬套件, 用以提供 6G 架構下, ISAC (Integrated Sensing and Communications) 的演算法開發, 針對通訊演算法部分,  Sionna 側重通道估測, 以及編碼-解碼設計, 希望透過以 GPU 加速的 5G/6G 通道模擬系統, 加速 5G/6G AI RAN (Radio Access Network) 的發展.