高效能運算學習筆記(1)

安洛8發表於2024-10-06

一、程式最佳化

  1. CPU程式最佳化
    1.1 體系結構:CPU流水線技術、高速緩指令集、CPU超標量設計
    1.2 並行技術:MPI、OpenMP、SIMD、彙編
    1.3 演算法:演算法最佳化
  2. GPU程式最佳化
    1.1 GPU的體系結構(計算核心、高頻寬、多級儲存)
    1.2 GPU並行框架:CUDA、OpenCL、OpenACC
    1.3 並行設計的演算法
  3. 程式最佳化核心
    3.1 演算法並行可行性
    3.2 編寫與體系結構相匹配的程式(並行效率、多級儲存、指令集最佳化)

二、CPU和GPU區別

  1. CPU核心數量少,GPU核心數量多。
  2. CPU是減低延遲設計導向,GPU是增加資料吞吐量設計導向。
  3. CPU適合IO密集型任務,GPU適合資料計算任務。
  4. CPU切換執行緒有上下文代價,GPU執行緒幾乎每個都有物理核心,執行緒切換零開銷。

三、所有的機器學習和深度學習模型最基礎的計算任務都是稀疏/稠密矩陣、集合基元。

四、稀疏矩陣向量乘問題(SpMV)

  1. 常見的稀疏矩陣儲存方法有 COO、CSR、DIA(適合對角矩陣),通常CSR儲存效率高些。
  2. CSR-SIMD最佳化,可變長的具有連續地址的非零元段,以段的形式對矩陣進行儲存。

五、演算法庫

  1. BLAS/LAPACK 是基礎的線性代數庫
  2. PETSc C語言實現主要用來求解偏微方程組

相關文章