Sunday, April 15, 2012

row-major order

Q: 假如 a[1][o]在主記憶體的位置8, a[3][3] 在主記憶體的位置 144 , a[4][1] 在主記憶體的位置 184 ,是求a[5][5]在主記憶體的位置?


Ans:
因為有a[1][0]所以index由0開始,
因為a[4][1] >a[3][3] 所以是row-majored

設每個元素有B個byte,每個row有N個元素。
(已知三個位置,列兩個方程式解兩個變數)

8+(3-1)BN+(3-0)B=144 => BN= (136-3B)/2
8+(4-1)BN+(1-0)B=184 => BN= (176-B)/3

=> 3(136-3B) = 2(176-B) => B=8
=> 8N=(136-24)/2 => N=7

=>a[5][5] = 8 + 4BN + 5B = 8 +4*56 + 40 = 272

No comments:

熱門必看