第一章 緒論
1.2 文獻回顧
1.2.2 GPU 之文獻回顧
隨時代的進步,所面臨的問題也越來越複雜化,如全球氣候的準確預 報、淹水模擬、三維水理模式及三維動床模式等,數據的規模已經達到 TB 甚至 PB 量級,因此在計算速度上面臨了嚴峻的考驗。在 1976 年第一部超 級電腦問世後,才開始以電腦求解複雜度較高的問題,隨電腦科技的進步,
運算速度大幅提升後,得以求解規模更加龐大的問題,在 2007 年 NVIDIA 發表了以 GPU 做為計算單元的程式架構 CUDA,其單一核心下運算速度較 CPU 低落許多,但可透過其數十至數百個眾多計算核心進行平行演算,藉 此彌補單一核心運算能力的不足,各時期 CPU 與 GPU 峰值浮點計算能力 比較如圖 1-2 所示。
隨著資料數據達到 TB 甚至 PB 量級,在資料彼此交換傳遞方面效率也
8
是一個重要的問題,所幸在 GPU 在設計架構上也考慮到了此項問題,在顯 示卡中的 PCB 板中可以直接焊接頻率較高的記憶體顆粒,並且 GPU 內中的 記憶體控制器數量相對 CPU 多出許多,使得資料傳輸效率上亦有明顯提升,
各時期 CPU 與 GPU 記憶體頻寬比較如圖 1-3 所示。
在求解數據量龐大的問題,僅能透過超級電腦運算進行求解,並逐漸 發展出了 CUDA、雲端運算等,然而在這些產品中,GPU 有一項特點便是
「成本較低」,因此在工程及學術界開始有許多人力投入了 CUDA 程式的撰 寫。
圖 1- 2 各時期 CPU 與 GPU 峰值浮點計算能力比較
9
圖 1- 3 各時期 CPU 與 GPU 記憶體頻寬比較
Brandvik & Pulla (2008) 透過 GPU 求解二維及三維的 Euler 方程式,在 CPU 部分透過 Fortran 語言進行撰寫,其結果在二維部分加速了 29 倍,三 維部分加速了 16 倍。Egloff & Gmbh (2010) 介紹了如何使用 GPU 求解一維 偏微分方程,在文中詳細的說明計算流程以及如何最佳化求解器。
Tölke (2008) 透過 GPU 加速二維晶格波茲曼法(2D-lattice Boltzmann),
並以流體流經一個多孔介質進行加速比較,加速成果大約 10 倍。 Hérault (2008) 透過 GPU 架構 SPH 模式(smoothed particle hydrodynamics model),
其加速可達 23 倍。
Thibault and Senocak (2008) 透過 GPU 串聯,求解三維方形穴流,在 AMD Opteron (8216) 與四張 NVIDIA s870 server 顯示卡串聯運算下比較,
其加速最高可達 100 倍。但是在 Intel E8400 與 NVIDIA s870 server 單卡兩
10
者運算速度相較之下,僅有 12.6 倍加速效果。Fritzsche (2009) 藉由 GPU 求 解二維方型穴流,將雷諾數固定為 1000 下,改變網格大小分別為 64×64、
128×128 及 256×256,說明了網格大小於 64x64 下核心記算量之密度較小,
故記憶體操作時間無法有效的被隱藏,在網格提高至 128x128 記憶體操作 時間有效的被隱藏,其在網格 128x128 下有最高加速成效為 7.6 倍。
Komatitsch (2010) 透過高階有限元素法模擬地震波的傳播,並且透過 單精度的 CUDA 與 MPI 所運算之結果進行準確性比較,透過不同 CPU 叢 集架構下,得到的加速成果分別是 12 倍及 20 倍。
Kuznik (2009) 透過 GPU 求解 LBM (lattice Boltzmann methods),並指 出單倍的精度已足夠應付多數運算,且 GPU 是一種求解計算流體力學方面 成本較低廉的高速運算系統。Klossa (2010) 透過 CUDA 求解波茲曼方程 (Boltzmann equation),說明了儘管顯示卡的記憶體大小有一定的限制,但在 大部分二維模式中慢速流或是非穩態模擬方面已然足夠,並對於網格大小 及運算設備進行一連串比較。