平行快速傅立葉轉換
串行演算法回顧
平行演算法
- 二維網孔連接網路上的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。