Re: [問題] 如何利用cache讓程式整體效率提高?
會在L1或L2我不知道...
但是只要在cache裡連續存取速度就差很多了
一般而言 CPU會從主記憶體抓連續的4個資料
出來到cache 而一維陣列可以保證資料皆連續
二維陣列就沒有了
所以以後請愛用一維陣列來存資料
雖然有時容易搞混 不過要是想增加效率 就都改用一維陣列吧
對了 你這矩陣乘法寫法是最慢的...
把矩陣拆成4*4大小來做會比較快
詳細做法和原理當然就是和cache有關
程式碼上網google一下應該有
6層迴圈就做得出來
※ 引述《heymei0421 (heymei)》之銘言:
: 大家好
: 我想讓cache增加執行效率
: 比如說 兩個矩陣相乘 每個矩陣的維度為1000
: 其程式碼假設如下
: int i,j,k;
: int sum;
: int a[1000][1000],b[1000][1000],c[1000][1000];
: for(i=0;i<1000;i++)
: {
: for(k=0;k<1000;k++)
: {
: sum=0.0;
: for(j=0;j<1000;j++)
: sum=sum+a[i][j]*b[j][k];
: c[i][k] = sum;
: }
: }
: 由上可知 a[i][j]這個資料會反覆的利用在第一列
: 我要怎麼才能確定a[i][j]會在cache L1 或者 L2?
: 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.162.1.12
推
03/28 03:40, , 1F
03/28 03:40, 1F
→
03/28 03:40, , 2F
03/28 03:40, 2F
→
03/28 03:42, , 3F
03/28 03:42, 3F
→
03/28 03:43, , 4F
03/28 03:43, 4F
→
03/28 03:44, , 5F
03/28 03:44, 5F
推
03/28 03:51, , 6F
03/28 03:51, 6F
→
03/28 03:52, , 7F
03/28 03:52, 7F
→
03/28 03:52, , 8F
03/28 03:52, 8F
→
03/28 04:05, , 9F
03/28 04:05, 9F
推
03/28 04:46, , 10F
03/28 04:46, 10F
推
03/28 08:47, , 11F
03/28 08:47, 11F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
-3
16