引言
現(xiàn)代的高度并行式處理器的進(jìn)展如AnalogDevices的TigerSHARC®系列處理器,要求尋找更為有效的方法來(lái)并行實(shí)現(xiàn)許多標(biāo)準(zhǔn)算法的操作。該應(yīng)用手記不僅解釋最快的16位FFT如何在TigerSHARC上的實(shí)現(xiàn),而且提供指導(dǎo)算法的開(kāi)發(fā),使你能夠?qū)⑼患夹g(shù)施于其他算法。一般來(lái)說(shuō),大多數(shù)算法有幾個(gè)層次的優(yōu)化級(jí),該手記將給予詳細(xì)討論。第一和最直截了當(dāng)?shù)膬?yōu)化級(jí)是指令的并行,這是處理器架構(gòu)所允許的。這種工作是簡(jiǎn)單而又煩人的。優(yōu)化的第二級(jí)是循環(huán)體展開(kāi)( loop unrolling)和軟件的流水線操作,以取得最大并行性,避免流水線停止工作。雖然比簡(jiǎn)單的一級(jí)并行復(fù)雜,但可按描述的步驟進(jìn)行工作,無(wú)需深入了解算法,幾乎沒(méi)有獨(dú)創(chuàng)性。第三級(jí)是重建算法的數(shù)學(xué)操作,仍產(chǎn)生有效的結(jié)果,但更適合處理器的架構(gòu)。這需要徹底了解算法,不像軟件的流水線操作那樣,它沒(méi)有既定的引導(dǎo)你走向最佳方案的步驟。這在寫(xiě)最佳代碼中是最有趣的。在實(shí)際應(yīng)用中,常常不需要用到所有的優(yōu)化層次。當(dāng)所有的優(yōu)化級(jí)需要時(shí),最好以反向的順序進(jìn)行這些級(jí)的優(yōu)化。在代碼完全被流水化操作以后,再來(lái)嘗試改變基本的底層算法已經(jīng)太遲了。由此,程序師必須要先考慮算法結(jié)構(gòu),隨后組織代碼。然后通常將優(yōu)化層次1和2(并行、展開(kāi)以及流水線操作)同時(shí)進(jìn)行。
本手記中所參考使用的代碼由模擬器件公司提供。具體例子使用一個(gè)256-點(diǎn)FFT,但其中的數(shù)學(xué)算法和理念同樣適于其它大。ú恍∮16點(diǎn))的變換。
如同所見(jiàn),重建的算法將FFT打散成更小的部分而后可被并行。在256點(diǎn)FFT(其代碼列表在該應(yīng)用手記的尾部)的情形下, FFT被分成一個(gè)個(gè)16點(diǎn)的FFT有16個(gè),16點(diǎn)FFT以基數(shù)4(radix-4)的格式來(lái)完成(即每個(gè)只有兩個(gè)階)。如果我們做一個(gè)512=點(diǎn) FFT,我們將不得不一次做16個(gè)32點(diǎn)的FFT(或者一次做32個(gè)16點(diǎn)的FFT) ,每個(gè)32點(diǎn)FFT以基數(shù)4格式先完成前兩個(gè)階,最后一階做成基數(shù)2格式。這種不同意味著書(shū)寫(xiě)FFT大小統(tǒng)配( FFT size-generic)的代碼是困難的。雖然實(shí)現(xiàn)的算法是通用的,可同等地適于所有大小的FFT,但代碼卻不能這樣,它必須針對(duì)每一種點(diǎn)大小FFT進(jìn)行手工調(diào)整,以便能夠完全達(dá)到最優(yōu)化。帶上這些一并考慮,讓我們進(jìn)入TigerSHARC園地里迷人的定點(diǎn)FFT世界吧。
完整的文檔請(qǐng)通過(guò)百度云盤(pán)下載:鏈接:http://pan.baidu.com/s/1o6Zm650 密碼:0nqd
ADI DSP任何問(wèn)題,可聯(lián)系OP的QQ:5516164,郵箱:sale@openadsp.com |