並行快速傅里葉變換
串行算法回顧
並行算法
- 二維網孔連接網絡上的FFT:
將n個處理器排成 的二維網孔連接網絡,假設輸入序列 已經存放在了各個處理器中。
下面以16點變換來解釋這個問題,連成的網絡及編號如下圖所示:
根據快速傅里葉變換的算法,我們來研究這16個點計算時四次循環的具體執行情況。
- 同一列間隔一行的元素運算。
- 同一列間相鄰行的元素運算。
- 同一行間隔一列的元素運算。
- 同一行間相鄰列的元素運算。
由上面的算法執行過程,我們發現,數據交換只在同一行或同一列之間的節點間進行。如果我們在第一,二步循環之後對網孔中的數據進行矩陣轉置,那麼就可以只在同一列節點之間進行運算。
- 超立方體連接網絡上的FFT:
如果我們按超立方體連接的格雷碼將待變換點列填入,那麼我們發現,數據交換將只在相鄰節點間進行。因此數據通信花費恆為O(1)。
算法複雜度分析
可擴放性分析
首先,我們設消息傳遞並行計算機中通信模型使用的是Store-and-forward而不是cut-through模型。下面令 表示通信開銷, 表示通信開始時間, 表示傳送一個字的通信時間, 表示數據每一跳的延遲, 表示第l次循環時的開銷,而 表示進行一個單位運算的時間。p為處理器數,d=log(p),n為待變換的序列大小。 那麼我們有公式:
有這個公式,我們可以得出:
- 參考文獻:The Scability of FFT on Parallel Computers, Anshul Gupta and Vipim Kummar。