兩者都旨在「加快計算」,但架構層級、通訊方式、擴展模型截然不同。
| 維度 | 並行計算 | 分布式計算 |
|---|---|---|
| 定義 | 單一電腦內多核心/多 CPU 同時執行任務 | 多台獨立電腦透過網路協作完成任務 |
| 硬體 | 多核 CPU、GPU、單機多插槽 | 叢集、雲端節點、邊緣裝置 |
| 記憶體 | 共享記憶體 (UMA/NUMA) | 分散式記憶體,需網路傳輸 |
| 通訊 | 執行緒同步、鎖、共享變數、MPI (共享記憶體模式) | 訊息傳遞 (gRPC、MQ、MPI over TCP)、RPC、REST |
| 擴展方式 | 垂直擴展 (Scale-up):換更強 CPU/加記憶體 | 水平擴展 (Scale-out):加節點 |
| 容錯 | 單點故障風險高,需進程級檢查點 | 節點失敗可自動遷移,天然高可用 |
| 典型場景 | 科學計算、圖形渲染、矩陣運算、資料庫並行查詢 | 大數據處理 (MapReduce/Spark)、微服務、CDN、區塊鏈 |
| 程式模型 | OpenMP、CUDA、Pthreads、Java ForkJoinPool | MapReduce、Actor 模型、Kubernetes Job、Ray、Dask |
選型原則:資料能放進單機記憶體且強一致性需求高 → 並行;資料量超單機、需線性擴展、容錯優先 → 分布式。