通過矩陣乘法看記憶體訪問對CPU運算速度的影響

2021-05-24 02:23:06 字數 3139 閱讀 5483

關於intel c++編譯器和visual c++編譯器的差異塊可見「intel和microsoft c++編譯器在矩陣乘法測試例子中執行時間的差異」,從速度上考量這裡僅測試intel c++編譯器的情形。矩陣乘法有普通的按定義的方法和塊方法,測試結果表明後者可達到前者的兩倍速度。速度和「通過加法運算看記憶體訪問對cpu運算速度的影響」中的結果差不多。程式**如下:

執行結果如下:

規模為640

test passed

單精度:

矩陣階數為

640,

普通方法

: 0.188000s(2.789gflops),8x8

塊方法: 0.250000s(2.097gflops)

test passed

單精度:

矩陣階數為

640,

普通方法

: 0.172000s(3.048gflops),16x16

塊方法: 0.125000s(4.194gflops)

test passed

單精度:

矩陣階數為

640,

普通方法

: 0.203000s(2.583gflops),32x32

塊方法: 0.078000s(6.722gflops)

test passed

單精度:

矩陣階數為

640,

普通方法

: 0.187000s(2.804gflops),64x64

塊方法: 0.078000s(6.722gflops)

test passed

單精度:

矩陣階數為

640,

普通方法

: 0.187000s(2.804gflops),128x128

塊方法: 0.079000s(6.637gflops)

test passed

雙精度:

矩陣階數為

640,

普通方法

: 0.297000s(1.765gflops),4x4

塊方法: 0.343000s(1.529gflops)

test passed

雙精度:

矩陣階數為

640,

普通方法

: 0.297000s(1.765gflops),8x8

塊方法: 0.281000s(1.866gflops)

test passed

雙精度:

矩陣階數為

640,

普通方法

: 0.313000s(1.675gflops),16x16

塊方法: 0.156000s(3.361gflops)

test passed

雙精度:

矩陣階數為

640,

普通方法

: 0.312000s(1.680gflops),32x32

塊方法: 0.141000s(3.718gflops)

test passed

雙精度:

矩陣階數為

640,

普通方法

: 0.297000s(1.765gflops),64x64

塊方法: 0.156000s(3.361gflops)

規模為1280

test passed

單精度:

矩陣階數為

1280,

普通方法

: 1.328000s(3.158gflops),8x8

塊方法: 3.187000s(1.316gflops)

test passed

單精度:

矩陣階數為

1280,

普通方法

: 1.313000s(3.194gflops),16x16

塊方法: 1.437000s(2.919gflops)

test passed

單精度:

矩陣階數為

1280,

普通方法

: 1.328000s(3.158gflops),32x32

塊方法: 0.765000s(5.483gflops)

test passed

單精度:

矩陣階數為

1280,

普通方法

: 1.360000s(3.084gflops),64x64

塊方法: 0.703000s(5.966gflops)

test passed

單精度:

矩陣階數為

1280,

普通方法

: 1.391000s(3.015gflops),128x128

塊方法: 0.718000s(5.842gflops)

test passed

雙精度:

矩陣階數為

1280,

普通方法

: 2.750000s(1.525gflops),4x4

塊方法: 7.360000s(0.570gflops)

test passed

雙精度:

矩陣階數為

1280,

普通方法

: 2.688000s(1.560gflops),8x8

塊方法: 3.859000s(1.087gflops)

test passed

雙精度:

矩陣階數為

1280,

普通方法

: 2.641000s(1.588gflops),16x16

塊方法: 1.796000s(2.335gflops)

test passed

雙精度:

矩陣階數為

1280,

普通方法

: 2.625000s(1.598gflops),32x32

塊方法: 1.375000s(3.050gflops)

test passed

雙精度:

矩陣階數為

1280,

普通方法

: 2.687000s(1.561gflops),64x64

塊方法: 1.234000s(3.399gflops)

矩陣乘法 矩陣乘法的基本實現

求解關於兩個矩陣的乘積 參考線性代數裡面的兩個矩陣相乘的規則,我這裡不再贅述,詳情附上了乙個鏈結,我的程式設計也是用了裡面的例子 這裡寫鏈結內容 具體的過程我會在 片裡面加上注釋 矩陣乘法 author seen 2015 09 18 include using namespace std int ...

mysql 矩陣乘法 矩陣乘法高階操作

對於矩陣乘法的一些操作 我們 其實 大部分是 多追加乙個係數 或者和 其他演算法連在一起。至於核心無非就是 先列出dp 方程再優化 或者 直接 對題目進行建模 構建矩陣。至於矩陣乘法的正確性 形狀的正確性 是可以證明的 但是內部最真實的正確性我還無法證明。這道題是 字串型別的題目 求方案數 很煩 大...

矩陣乘法 C

using system using system.collections.generic using system.text namespace exe03 static void main string args int martixb new int int martixc new int m...