推 damody: Cpu cache08/30 17:08
推 sunev: row major08/30 17:13
什麼?
※ 編輯: sec5566 (42.72.112.232), 08/30/2016 17:27:08
→ Eleina: array 在 mem 中的儲存方式 -> 載入 cache 哪個容易 miss08/30 17:32
→ carylorrk: 這兩個寫法在記憶體的儲存方式不是一樣嗎?08/30 17:41
→ carylorrk: a[2][5] 跟 a[5][2] 跟 a[10] 都是連續記憶體配置吧?08/30 17:43
→ carylorrk: 然後如果 loop 都是先動 col 再動 row,就是順序存取?08/30 17:46
→ nowar100: 跟順序存取比較無關 關鍵是他怎麼從mem load to cache的08/30 19:06
→ nowar100: 事實上目前的a[0][0] a[1][0] 這種方式也不會是順序存取08/30 19:07
遇過韌體公司都考類似的程式
如果跟硬體有關 那就不懂他考這幹嘛了
※ 編輯: sec5566 (42.72.112.232), 08/30/2016 19:46:52
→ wtchen: 不懂,二維矩陣宣告(非malloc)預設不會用連續空間? 08/30 19:57
→ wtchen: 如果是用**p宣告二維陣列我可以理解可能不會連續 08/30 19:58
→ Schottky: 我倒覺得問題應該是出在原 PO 不記得的程式碼裡 08/30 20:16
→ bluesoul: 不要做多餘的事情,程式就會快 08/30 20:20
推 wuliou: 速度有差啊 前三樓的原因 08/30 23:18
推 stupid0319: 買I7以上電腦 08/30 23:19
→ james732: 話說這種東西應該跟compiler與hardware實作也會有關係? 08/31 00:02
推 EdisonX: 是 cache 沒錯,像是 matrix 相乘,加快的方式就是把第二 08/31 00:04
→ EdisonX: 個 matrix 轉秩後再相乘,便是用 cache 特性. 08/31 00:04
→ EdisonX: 若取出的資料和上一筆資料都在附近(locality),cache率高. 08/31 00:05
→ EdisonX: (所以才有 matrix mult. blocking 算法 ) 08/31 00:09
推 ronin728: 給了關鍵字先Google,看不懂網路文章再來問,這是常識 09/04 12:20
推 wtchen: 問一下,有沒有辦法在跑程式的過程中偵測到cache miss? 09/04 15:10
→ wtchen: 不是perf那種,而是讀取data的當下發現不在cache裡 09/04 15:11
→ wtchen: 還是perf有函式庫可以套用到C program裏面? 09/04 15:11
推 wope: edisonx 正解 09/13 00:41
→ wope: malloc也有類似的問題 09/13 00:43