https://github.com/sjfeng1999/gpu-arch-microbenchmark ``` git clone --recursive https://github.com/sjfeng1999/gpu-arch-microbenchmark.git cd gpu-arch-microbenchmark/turingas python setup.py install sudo apt update sudo apt install python-is-python3 sudo python setup.py install ``` ``` sudo apt install nvidia-cuda-toolkit echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc cd ~/gpu-arch-microbenchmark rm -rf build mkdir build && cd build cmake .. && make ``` ``` nvcc --version nvidia-smi ```   ``` python ../compile_sass.py -arch=(70|75|80) ./(memory_latency|reg_bankconflict|...) ``` 在 NVIDIA GPU 的 CUDA 架構中,數字表示不同的 GPU 架構的代碼名稱和版本號。: --- ### **1. 架構 70** - **對應微架構**:Volta - **典型 GPU**: - Tesla V100 - NVIDIA DGX 系列中的部分型號 - **特點**: - 支援 Tensor Cores,專為深度學習矩陣運算加速設計。 - CUDA Compute Capability(計算能力):**7.0** - 更高的記憶體頻寬和性能。 --- ### **2. 架構 75** - **對應微架構**:Turing - **典型 GPU**: - NVIDIA RTX 20 系列(如 RTX 2080、RTX 2070) - Quadro RTX 系列 - **特點**: - 支援 RT Cores(光線追蹤核心)和 Tensor Cores。 - 改進的浮點和整數運算效率。 - CUDA Compute Capability(計算能力):**7.5** - 專為遊戲和高性能計算設計。 --- ### **3. 架構 80** - **對應微架構**:Ampere - **典型 GPU**: - NVIDIA RTX 30 系列(如 RTX 3080、RTX 3090) - A100 Tensor Core GPU - **特點**: - 支援第三代 Tensor Cores 和第二代 RT Cores。 - 提供顯著提升的性能和能效比。 - CUDA Compute Capability(計算能力):**8.0** - 為 AI 和 HPC(高性能計算)設計。 --- --- ### 1. **`cache_linesize`** **用途:** - 測試和確定 GPU 的 L1 或 L2 快取線大小(Cache Line Size)。 - 快取線大小是快取記憶體與主記憶體之間傳輸數據的基本單位,通常為 32 或 128 字節。 - 有助於理解快取效能,優化記憶體訪問模式以減少快取失誤(cache miss)。 --- ### 2. **`memory_bandwidth`** **用途:** - 測量 GPU 記憶體的最大帶寬(Memory Bandwidth)。 - 這反映了 GPU 與其全局記憶體(Global Memory)之間的數據傳輸速率。 - 是衡量資料密集型任務(如深度學習和科學計算)性能的關鍵指標。 --- ### 3. **`global_memory_bandwidth`** **用途:** - 測試 GPU 的全局記憶體(Global Memory)帶寬性能。 - 與 `memory_bandwidth` 類似,但專注於訪問全局記憶體的效率。 - 可以幫助分析不同記憶體存取模式的性能影響。 --- ### 4. **`memory_latency`** **用途:** - 測量 GPU 記憶體的訪問延遲(Memory Latency),即從發出記憶體請求到數據返回所需的時間。 - 記憶體延遲對延遲敏感型工作負載(如分支計算和資料檢索)的性能有重大影響。 - 有助於理解記憶體延遲瓶頸,從而進行軟體優化。 --- ### 5. **`reg_bankconflict`** **用途:** - 測試 GPU 寄存器檔案(Register File)中的銀行衝突(Bank Conflict)。 - 銀行衝突發生在多個執行緒試圖同時訪問同一寄存器銀行時,導致訪問延遲。 - 測試結果可以幫助優化寄存器分配以降低延遲。 --- ### 6. **`shared_bankconflict`** **用途:** - 測試 GPU 共享記憶體(Shared Memory)中的銀行衝突。 - 共享記憶體被分成多個銀行(通常為 32 個),當多個執行緒訪問同一銀行時會導致衝突,增加延遲。 - 這有助於優化共享記憶體訪問模式,避免瓶頸。 --- ### 7. **`warp_schedule`** **用途:** - 分析 GPU 執行緒束(Warp)的排程效率。 - GPU 的排程單位為 32 個執行緒(Warp)。該測試衡量不同 Warp 的執行和切換效率。 - 有助於識別執行緒分支和資源爭用問題,從而優化程式結構。 --- ### 應用場景 1. **微架構性能分析:** 測試 GPU 微架構的基本參數和性能特性。 2. **軟硬體協同優化:** 幫助開發者優化程式結構和記憶體訪問模式。 3. **瓶頸分析:** 檢測 GPU 資源的潛在瓶頸,如記憶體帶寬不足或銀行衝突。 4. **學術研究:** 用於設計新的 GPU 架構或改進現有模型的參考。 如果你正在進行特定的測試或優化,可以根據需求深入分析這些指標的結果!
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up