HNU計算機系統試驗perflab1

2021-09-29 02:04:20 字數 1329 閱讀 8442

void

*****_rotate1

(int dim,pixel *src,pixel *dst)

}}

**一文字描述:

這裡是書上的第乙個方法,消除迴圈的低效率。通過觀察源**可以發現在迴圈中對dim-1-j這個資料進行了重複的呼叫,所以這裡可以對迴圈進行修改,將計算時的行列進行調換,可以提前計算dim-1-j,這樣就可以省去每一次迴圈中重複計算的時間,可以很好的提高效率。

**二

char *****_rotate2_descr=

"*****_rotate2: ***** baseline implementation"

;void

*****_rotate2

(int dim,pixel *src,pixel *dst)

**二文字描述:

通過劃分成4*4的小方塊對整個圖進行劃分,可以提高空間區域性性,但當dim比較小的時候,反而會變慢,因為當dim比較小的時候,決定時間的主要因素是演算法複雜度,而分塊演算法的複雜度比較高。

**三

void

*****_rotate3

(int dim,pixel *src,pixel *dst)

**三文字描述:

這是書上的第二個方法,書上說可以通過消除函式呼叫來提高效率,我看了一下,在迴圈過程中重複呼叫了乙個ridx函式,而這個函式的功能就是計算三個引數i,j,n的引數式in+j的數值,所以這裡我可以直接將其去掉了,然後在第二個for迴圈外計算tmpdim的數值,因為這個是重複使用的,然後再在算式中直接計算所需要的資料,而省去了呼叫函式的時間,但總體上優化不明顯

**四

void

*****_rotate4

(int dim, pixel *src, pixel *dst)

}}

**四文字描述:

這個方法是通過在for迴圈中盡可能多的進行操作,以此來達到提高效率的目的,這裡我只是將步長提高到了2,可以將步長提高到2的倍數,直到32

**五

void

*****_rotate5

(int dim, pixel *src, pixel *dst)

src+

=tmp2;

dst+

=tmp4;

}}

通過迴圈展開可以進行很強的優化

HNU計算機系統實驗快取7 快取8

一 test trans 64x64矩陣轉置實驗 1 64 64矩陣,每行64元素,每8一組32位分8個組,故cache每4行填滿整個cache。2 測試傳統8分塊,結果如圖,發塊與不分快結果一樣,沒有優化。這是因為a陣列8x8讀取資料的時候與之前一樣,都是每組第乙個miss以後hit,但是b陣列按...

計算機系統

一陰一陽之為道。早在幾千年我國古人就知道天地萬物皆由正反兩個東西組成的。自從人類進入電氣時代,隨著電子元件的快速發展,各種裝置隨之誕生了。一些元件 例如閘流體 可以根據電壓的高低變化自行導 通或者關斷。如果是高電壓導通,就規定是1 低電壓導通規定是0,那麼眾多的這些元件組成的乙個整體就可以0 和1來...

計算機系統

做加法時,主要判斷是否溢位 無符號加溢位條件 cf 1 帶符號加溢位條件 of 1 舉例 若n 8,計算107 46 107 0110 1011 46 0010 1110 01001 1001 溢位標誌of 1 零標誌zf 0 符號標誌sf 1 進製標誌cf 0 無符號 sum 153,因為cf 0...