1. 程式人生 > >演算法與平行計算常規

演算法與平行計算常規

利用平行計算機實現軟體和硬體上的並行演算法的主要步驟和層次

  • 第5層是指應用層,在這一層裡描述的是需要平行計算平臺實現的應用和問題。對應所需的輸入和輸出的格式也在這層進行定義。某些輸入和輸出(I/O)介面的描述還需要考慮資料儲存的位置和時間的相關性。這一層的結果會被更低一層採納以便指導並行演算法的開發工作。
  • 第4層是演算法開發層,這裡需要考慮到應用在問題中的實現。需要應用實現的計算內容決定了演算法的具體任務和任務之間的相互依賴關係。在這一階段的程式,演算法的並行性並不一定會顯現出來,因為在探索演算法子任務執行的時候仍然在運用傳統的線性思考。在這一階段,也不需要考慮子任務的時間排程和處理器分配的問題。可能在這階段就將這些問題解決的做法看起來很誘人,但是這樣做會適得其反,因為這會掩蓋程式中潛在的並行性。該層的結果是一個依賴圖,或是一個有向圖,或者是一個概括了任務之間依賴關係的鄰接矩陣。
  • 第3層是並行化層,在這一層將試著釋放演算法中潛在的並行性。這一層接收了第4層對演算法的描述並且給出了基於軟體實現的執行緒時間排程和處理器分配。另一種選擇是在這一層進行基於超大規模積體電路的硬體實現的任務排程和處理器分配。
  • 第2層是程式碼層,在本層中並行演算法用高階語言表示為程式碼。使用何種語言取決於目標平行計算在何種平臺執行。
  • 第1層的目標是演算法的實現,或是在平行計算機平臺的應用。實現的途徑可以是在平行計算平臺上使用多執行緒,也可以是在特定用途積體電路(ASIC)上或者現場可程式設計門陣列(FPGA)上使用特定的應用並行處理系統。