Chun Min Chang
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.

      Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Explore these features while you wait
      Complete general settings
      Bookmark and like published notes
      Write a few more notes
      Complete general settings
      Write a few more notes
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 2025 7月2日 日常報告 主題 :NVLink、NVSwitch ## Ref [深入PCI与PCIe之一:硬件篇](https://zhuanlan.zhihu.com/p/26172972) [PCI/PCIe(1): 基礎篇](https://hackmd.io/@RinHizakura/rklZtud9T) [NV A100 Tensor Core GPU Architecture](https://images.nvidia.com/aem-dam/en-zz/Solutions/data-center/nvidia-ampere-architecture-whitepaper.pdf#:~:text=Ampere%20architecture,GPU%20communication%20bandwidth%2C%20and%20improved) [P100](https://zhuanlan.zhihu.com/p/635788964) ## NVLink 點對點高速連接與協定原理 NVLink是一種高帶寬的近距離序列介面,用於GPU之間(或GPU與CPU之間)進行資料和控制訊息傳輸。與傳統的PCIe集中式匯流排不同,NVLink採用**多條差分對線**組成點對點(Point-to-Point)的**網狀拓撲連接**,沒有中央交換樞紐。每對NVLink裝置之間建立直接高速連結,可視為在電路板上多對銅線承載的專屬通信通道,由強健的軟體協定控制資料傳送 ![v2-352487d20e575deeca69f0b16b81f3e6_1440w](https://hackmd.io/_uploads/H15vDSWBeg.jpg) ### 簡易版的的網狀拓撲(Mesh Topology) ```t [GPU0]───┬────[GPU1] │ │ │ │ [GPU3]───┴────[GPU2] ``` 在 DGX 系統裡,會加入一顆叫做 NVSwitch 的晶片,用來讓: 所有 GPU 都能彼此直接連通 就像一個 高速交換器,把每張 GPU 都用 NVLink 連到交換器上 ``` ┌─────────────┐ │ NVSwitch │ └─────┬───────┘ │ ┌───────┼───────┐ [GPU0] [GPU1]...[GPU7] ``` ### 原理 >在運作原理上,NVLink類似一條高速記憶體共享匯流排:它允許處理器之間以幾乎共用記憶體的方式交換資料,並透過循環冗餘校驗(CRC)和封包重傳機制確保資料可靠傳輸 * CRC(Cyclic Redundancy Check): 是一種檢查資料有沒有出錯的數學方法 每一包資料在送出前都會加上一組「CRC 校驗碼」 接收端收到資料後會重新計算一次 CRC 如果不一致 → 表示資料有損壞 * 封包重傳(Retransmission): 如果 CRC 檢查不過,NVLink 會自動要求重傳那一包資料 這樣就確保:即使在高速運作下,資料也能保證正確送達 > 其實很像是網路協議中的checksum機制,但運作方式不同 | 項目 | CRC | TCP checksum | | ---- | ----------------- | ------------------------------- | | 運算方式 | 多項式除法(XOR 位元運算) | 加總(16-bit one's complement sum) | | 偵測能力 | 強(可發現連續錯誤) | 弱(易漏抓某些錯誤) | | 用途 | 高速實體層 / 封包校驗 | 傳輸層 / 基本資料校驗 | | 常見應用 | Ethernet、PCIe、USB | TCP、UDP | > 問題又來了,記憶體共用不會導致記憶體污染? NVLink 本身「不處理記憶體一致性」問題,它只是傳輸通道。真正控制一致性的是上層架構與軟體 API。 ### 差分對線 差分對線 = 兩條訊號線,一正一負,同步傳送資料 不像早期的電路只用一條訊號線 + 接地線(single-ended),差分傳輸會用 一對信號線(+ 和 -) 傳送相同但反向的訊號。 #### 🔒 優點一:抗干擾能力強(Noise Immunity) 外部電磁干擾(EMI)會同時影響 D+ 和 D− 但接收端只看「兩者的差值」,共通干擾會被自動消除 👉 所以適合高速傳輸(GHz 級別) #### ⚡ 優點二:訊號完整性高(Signal Integrity) 差分線對的阻抗匹配 + 緊密佈線,減少反射和串音 可以傳很快、很遠的數據 #### IN NVLINK 每個 NVLink Link = 多個 Sub-Link 每個 Sub-Link = 多個 差分對(differential pairs) 每個差分對傳一組資料位(bit)串流 #### 由來 PCI 發展後期,資料傳輸量增大,因此產生PCI-X和AGP PCI-X -> 提高頻率 AGP -> 在同頻率下想辦法塞更多資料(一個clock下傳更多) ![截圖 2025-06-30 晚上7.26.48](https://hackmd.io/_uploads/HyDsVlgrxe.png) 但由於是並行傳輸,干擾的問題增加 -> 因此採用差分傳輸來穩定訊號 不過現在的SATA/SAS/PCIe基本改用串行而非並行 #### 並行 串行 | 傳輸方式 | 說明 | | -------------- | -------------------- | | 並行傳輸(Parallel) | 多條資料線同時傳送多個 bit | | 串行傳輸(Serial) | 一條資料線一次傳送一個 bit,依序送出 | 兩者差異 | 項目 | 並行傳輸 | 串行傳輸 | | -------- | -------------------- | ----------- | | 傳輸線數 | 多條(8、16、32條) | 少條(常為1\~4條) | | 硬體成本 | 高(需多線、多插針) | 低 | | 同步難度 | 高(需同時到達,會有「偏移/時序問題」) | 易同步 | | 抗干擾能力 | 差(線多易串音) | 好(差分對+編碼) | | 傳輸距離 | 短(訊號衰減大) | 遠(可數公尺以上) | | 傳輸速度(現代) | 比串行慢(受限於同步難度) | 非常快(GHz級) | 速度上很不直覺,因為 ``` 並行傳輸: 需要 8 條資料線 一個時鐘周期內傳送 8 bit 串行傳輸: 只用 1 條資料線 每個時鐘傳 1 bit,要 8 個時鐘周期 ``` 不過要把實際狀況考慮進去 ``` 並行傳輸像「8 條腳踏車道」: 同時 8 輛車出發 → 傳 8 個資料 但: 每輛車要同時抵達目的地(要同步) 每條車道長短不能差(要等長) 車多時會互相干擾(串音) 串行傳輸像「1 條磁浮列車高速軌道」: 一次一個車廂,但車廂速度極快,毫無干擾 抵達速度遠超腳踏車 → 雖然一次只傳 1 bit,但一秒內可以送數十億 bit(GHz 等級) 👉 所以「並行頻率受限、同步困難」,而「串行可拉到超高頻率,單線也能贏」 ``` 這就回到了一開始的問題,當吞吐量增高,並行會有干擾的問題導致頻率上不去,而這使得雖然一次可以送多,但容易錯誤且缺漏,且要求同步到達的前提過高 故改為串行,雖然一次少量,但穩固且抗干擾,頻率自然能拉高,使得吞吐量上升 且 CDR、SerDes(資料bit串化)+encode、差分使得串行變得可靠 #### CDR CDR = Clock Data Recovery 意思是:「在資料線上,沒有獨立的時脈線,但接收端仍然能從資料中恢復出正確的時脈」,用來判斷資料 bit 的切換時機。 >這是由於各個硬體之間的clock不一定相同,所以資料傳輸過程中,接收方會不知道怎麼處理這些bits 如果很難想像,你可以試著用DFF的角度思考,如果今天有10hz與20hz的DFF分別放在接收與發送端,10hz那邊一定會漏資料,對吧 而因為在串行中 ✅ 只有一條資料線(或差分對) 🚫 沒有獨立的時脈線(不像並行總線會配一條 Clock 線) 所以我們要設計能讓接收端知道發送端的clock的協議 >「從資料流的節奏,估出原本的時脈,自己重建出來」 這就是encode的用處,你增加了一個bits,作用是用來跟對方說我的頻率是多少,用來識別資料流 * 專業一點來說 - 資料編碼: 串行資料通常會使用編碼技術(例如 8b/10b、64b/66b、128b/130b)來保證資料中有足夠「變化」(例如不能一直是 0 或 1) - 相位比較器(Phase Detector): 比對資料變化發生的時間和本地時脈,調整對齊 (調整成local端的clock) - 鎖相迴路(PLL / CDR Circuit): 使用電子電路「拉近」接收端的內部時脈與資料變化的相位,最後達到同步(增加或減少local的頻率,達到同步) ``` 發送端資料(Serial bit stream): ---|‾‾‾|___|‾‾‾|___|‾‾‾|___| ← 每個 | 是資料變化點 接收端: ↑ ↑ ↑ ↑ CDR 偵測變化點,調整內部 clock,相位漸漸對齊 ------------------------------------------------ 發送端資料(Serial bit stream): ---|‾‾‾|___|‾‾‾|___|‾‾‾|___| ← 每個 | 是資料變化點 接收端: ↑ ↑ ↑ ↑ CDR 偵測變化點,調整內部 clock,相位漸漸對齊 ``` ## NVHS - NVLink中的物理層 | 特性 | 解釋 | | ------------ | -------------------------------- | | 串列傳輸(Serial) | 使用高速差分對線,一對一對跑 bit stream | | 高頻寬 | NVHS 支援每條 link 高達 50+ GB/s(單向) | | 低延遲 | 比 PCIe 還低,支援高效率 GPU-GPU 傳輸 | | 差分對傳輸 | 使用 Differential Pairs,抗干擾、訊號穩定 | | 自訂時脈/協定 | 不像 PCIe 要遵守標準,NVHS 完全為 NVLink 優化 | | 支援 CDR | 從資料流中恢復時脈,確保同步 | ### 架構 ```t [NVLink Protocol Layer] ↓ [NVHS PHY Layer: SerDes + CDR + EQ] ↓ [高速差分對線路] ↓ [另一張 GPU 上的 NVHS 接收端] ``` > * NVIDIA Hopper Architecture Whitepaper 說明了 NVLink 4.0 使用的 NVHS 技術(PHY 層) PDF 下載(頁 41~42): 🔗 https://resources.nvidia.com/en-us/architecture/hopper-whitepaper > * NVIDIA Grace Hopper Superchip Whitepaper 說明 NVLink/NVHS 如何應用於 CPU-GPU 間 🔗 https://www.nvidia.com/en-us/data-center/grace-hopper-superchip/ ## Topology 拓撲結構 在Topology中,常見的動作有幾個 * Broadcast:A 發資料給所有 GPU * All-Reduce:所有 GPU 彼此交換資料並彙總 ### 第一代的DGX-1 (8張GPU 連結方式 :Hybrid Cube-Mesh 混合立方體 #### 具體結構: 每張 GPU 最多有 6 條 NVLink 每張 GPU 連接 4 張 GPU(不是全部 7 張) 構成一個類似 3D 立方體的網路 部分連線用了雙 NVLink → 提升頻寬 不考慮全連接(Fully Connected) 太貴:一張 GPU 要有 7 條 NVLink → 超過硬體極限 超出硬體極限 環狀(Ring),使得最大步數 = 3 #### 問題 然而,由於8卡網絡中並非每對GPU都有直接鏈路連接,在全對全(All-to-All)通信中某些GPU對仍需經過中介轉 hop 或回落到較慢的PCIe通道,導致瓶頸 (這很像NOC中以processor當作router的solution) ## NVSwitch : 為了解決中介的Switch >Switch = 同個net中的轉送 Router = 不同net的傳送 ![截圖 2025-07-01 晚上8.05.24](https://hackmd.io/_uploads/HJbU1L-Heg.png) ![截圖 2025-07-01 晚上7.39.49](https://hackmd.io/_uploads/ByyScB-Bxx.png) ![截圖 2025-07-01 晚上7.40.48](https://hackmd.io/_uploads/HynB9H-Hll.png) ![截圖 2025-07-01 晚上7.58.21](https://hackmd.io/_uploads/H1tO6H-rge.png) ![截圖 2025-07-01 晚上7.59.02](https://hackmd.io/_uploads/ry2o6Hbrxe.png) > Ref : [NVDIA NVSWITCH](https://images.nvidia.com/content/pdf/nvswitch-technical-overview.pdf?utm_source=chatgpt.com) > Ref : [NVSWITCH BLOCK](https://www.fibermall.com/blog/analysis-nv-switch.htm?srsltid=AfmBOopfIcm4C-Cnk_U7EVM2tUaA7J7-uKUEz5WzVaiQUySdRXI69-VK&utm_source=chatgpt.com) NVSwitch可以理解為一顆內建NVLink埠的高效能交換器ASIC晶片。第一代NVSwitch晶片內部實作了一個18×18全連接交叉交換架構,提供18個NVLink埠,每埠全雙工速度50 GB/s(雙向總和) 簡單來說 * 18×18 完全連接交叉交換器(crossbar): 交換器內部每個埠能與其他 17 個埠進行直接連接,屬於 非阻塞(non-blocking) 結構 * 每埠全雙工 50 GB/s: 包含上行 25 GB/s + 下行 25 GB/s,總計 50 GB/s → 全交換總頻寬達 900 GB/s * 應用於 DGX 系列: DGX‑2 系統中以多顆 NVSwitch 串接 16 張 V100 GPU; 每張 GPU 有 6 個 NVLink 埠,可透過 NVSwitch 形成高頻寬的 GPU 互連網絡 ### 非阻塞式交換矩陣: 任意埠對任意埠都可在全速進行資料轉發,不會因其他連線的存在而損失頻寬 >非阻塞式交換矩陣是指: 在任何輸入端與輸出端連線的組合中,都可以同時全速傳輸資料,互不干擾。 ->所有輸入埠與所有輸出埠之間都有一條獨立的交換路徑 但這就跟網路運作的方式一樣,一定會有同時多個unit要傳送到同一個終點的情況,只是因為中間的通道互相獨立,因此不需要用到網路實作上用於路徑分配的演算法 這種情況下,處理方式差異不大,buffer、queue、priority、round-robin(排隊)、QoS(權重分配) > 這樣每條通信通道不會被分割? 就算是通過switch ,我不是還是得要分出多條線路接入switch? 先上規格 | GPU 型號 | 支援的 NVLink 埠數 | 每埠頻寬(雙向) | | -------- | ------------- | -------------------------- | | **H100** | 18 埠 | 50 GB/s(單向) / 100 GB/s(雙向) | | **V100** | 6 埠 | 25 GB/s(單向) / 50 GB/s(雙向) | 可以確定的是,物理上的port數限制還是存在的 ### 點對點 每張 H100 有 18 個 NVLink 埠 直連 8 張 GPU,形成點對點拓撲 **每張 GPU 要接其他 7 張 → 每張要用掉 7 條線** 所以 H100 雖然總頻寬有 900 GB/s,但它得分給這 7 條鏈路 → 每條只有大約 128 GB/s >「因為這次只傳一張 GPU,所以我可以用全部 900 GB/s」 這樣不行,因為 900 GB/s 是總埠數頻寬,而每條是 point-to-point,不能動態合併 簡而言之,每個port的頻寬是固定的,你想要增加吞吐量,那你就只能從物理層面下手,而非動態分配各個port的流量 -> 你想要更多,那就多接幾條線 > 那為什麼不動態分配port的頻寬呢? 不像網路 switch 或 PCIe fabric 可以動態選路,這是硬體層面,不是軟體 一開始佈線就綁死了該線路的位置與方向,所以物理特性就決定了頻寬的上限 > 為什麼不用大頻寬再動態分配 * 原因1:SerDes 串列技術本身的物理限制 * NVLink 使用的是高速差分對訊號(SerDes) 每一對差分線配有專屬的發射端 & 接收端,時脈同步是獨立校準的 * 若你想合併成一個「超寬通道」,你就得設計: 1. 一個 多位元同時傳送的大型串列引擎 2. 一組更高頻、更大擴展範圍的 SerDes 這在高速下(>50GHz)幾乎不可行: >同步難度極高 容易產生 時脈偏移(skew) 無法像你說的「水龍頭」一樣精確控制出水大小 ## 實際案例 | 技術 | 說明 | | ---------------------- | ------------------------------------------------ | | **Thunderbolt 3/4** | 多條 PCIe + DisplayPort 信號在單條 Type-C 線路中「多工傳輸」 | | **PCIe Gen5/6** | 支援 link width 調整(x1, x4, x8, x16),但仍是靠多條 lane 串接 | | **InfiniBand HDR/NDR** | 用多個 100Gbps lane 聚合成單一連接 | ## 各代架構比較 > [Picture ref](https://developer.nvidia.com/blog/nvidia-ampere-architecture-in-depth/?utm_source=chatgpt.com) > [Content ref](https://blog.csdn.net/asialee_bird/article/details/145998718) P100 ![v2-847d92db0a0bf42b37c1fd7bf109f5c6_1440w](https://hackmd.io/_uploads/H14oIr-rle.jpg) GA100 ![gaEfOQD6l3q8p4TzybT7gMVZc8YQkni-0-9ClI9Ei4epE4aHSLjg9-3ON8bkRFZxvm1G-nOCZ9CPy_zqw-EmBWje-sOiSem0oFWA4J7HnhdVdF5RUbrLB7n5-XGKDGznfh6R3xna](https://hackmd.io/_uploads/BknaISZHee.png) > [ref SM pascal](https://blog.csdn.net/asialee_bird/article/details/145998718) ![v2-ef0c719d48878b1a2c17d13566750289_1440w](https://hackmd.io/_uploads/r1S4HSWHge.jpg) > [ref SM ampere](https://developer.nvidia.com/blog/nvidia-ampere-architecture-in-depth/?utm_source=chatgpt.com) ![raD52-V3yZtQ3WzOE0Cvzvt8icgGHKXPpN2PS_5MMyZLJrVxgMtLN4r2S2kp5jYI9zrA2e0Y8vAfpZia669pbIog2U9ZKdJmQ8oSBjof6gc4IrhmorT2Rr-YopMlOf1aoU3tbn5Q](https://hackmd.io/_uploads/BJp5BHbHxg.png) | 架構名稱 | 推出時間 | 製程技術 | 代表 GPU | 新功能特色 | | ---------- | ---- | -------------- | -------------------- | ------------------------------------------ | | **Pascal** | 2016 | 16nm FinFET | GTX 1080, Tesla P100 | 高效能/瓦數比、首次支援 NVLink、FP16 支援 | | **Volta** | 2017 | 12nm FFN | Tesla V100 | 首次加入 Tensor Core、針對 AI 加速設計 (tensor for matrix calculate) | | **Ampere** | 2020 | 7nm + 8nm 混合製程 | RTX 30 系列、A100、H100 | 第二代 Tensor Core、第一代 RT Core、超大頻寬、改進多運算資源排程 | > GPU = 多個 CUDA Core(通用計算單元) + Tensor Core(專用矩陣運算單元) + 其他硬體模塊。 ``` GPU(整張顯示卡) ├── SM0(Streaming Multiprocessor) │ ├── 64 個 CUDA Cores(做算術) │ ├── 4 個 Tensor Cores(做 AI 加速) │ ├── 32 KB Shared Memory(多線程共用) │ ├── Register File(暫存器) │ └── Scheduler + Warp Dispatcher ├── SM1 ├── ... └── SM N ``` 一張 NVIDIA GPU 裡面有很多個 SM, 每個 SM 裡面有很多 CUDA 核心(ALU)可以同時處理數據, 所以 GPU 才能「大量平行計算」。 ### DPX 是什麼? DPX 是 Hopper 架構中新增的 Dynamic Programming eXtensions 指令集。 ✅ 定義 DPX 指令 = 專門為 動態規劃演算法(Dynamic Programming) 設計的加速器指令 加速像是: DNA 比對(如 Smith-Waterman 演算法) 路徑搜尋(如最短路徑、序列比對) 多階段決策問題 ## Driver & Software Layer ### NCCL與集體通信優化 #### NCCL(NVIDIA Collective Communication Library) 是針對多GPU通信優化的函式庫,專門充分利用NVLink/NVSwitch拓撲進行集體運算。NCCL會自動探知系統中GPU互聯拓撲,為例如DGX-1的8卡混合立方網配置最佳的通信路徑 它實作了高效的環形(ring)和樹形(tree)算法來執行 All-Reduce、Broadcast、All-Gather 等集體操作,並隱式地將GPU編號排列成最佳環路順序,確保充分利用NVLink帶寬 NCCL通過拓撲感知及最佳路由,在軟體層將NVLink網路的潛力發揮到極致,使多GPU協同的通信開銷顯著降低。 #### Fabric Manager 可以在大型拓撲(例如包含多顆NVSwitch的集群)下管理交換路由,確保資料封包沿最佳路徑傳送,同時實現對不同使用者/任務的隔離(例如在複雜環境中限制某些GPU之間不可互訪) ### 驅動與路由管理 NVIDIA驅動程式內建了對NVLink與NVSwitch的支援。驅動在啟動時會枚舉系統中的NVLink連接情況,將直連的GPU標記為P2P可直訪(P2P Accessible)。應用層可以透過CUDA API查詢哪些GPU對之間有NVLink相連,從而決定資料放置和傳輸策略(例如MPI或NCCL可利用此資訊構造拓撲感知的通信計畫)

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully