gpt4 book ai didi

linux - 我们可以在执行读取指令后检查缓存中的值吗?

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:47 25 4
gpt4 key购买 nike

最近写了一个矩阵转置的程序。

     for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < 1000; j++)
{
ndata[j][i] = odata[i][j];
}
}

从上面的代码,我们知道内循环对odata是缓存友好的,但是对ndata不友好,这会导致很多cache miss,我想在 read 指令 执行后检查 L1 cache 和 L2 cache 的值。我怎样才能做到这一点?

最佳答案

首先 - 1000*1000*2 个元素(什么,int?)不适合我所知道的任何 L1,也许是 L3。

至于你的问题 - 没有简单的方法来检查缓存的内容(期望在产生该信息的 CPU 或缓存模拟器上运行它),你可以测量该行的访问时间但是你会a) 影响缓存的内容或它们的 LRU 权重,并且 b) 可能会得到无意义的结果,除非您在一次测量中测量访问多个这样的行并摊销。

顺便说一句,如果您有兴趣改进此代码,只需在每次迭代时为 ndata[j+1][i] 添加 SW 预取。

关于linux - 我们可以在执行读取指令后检查缓存中的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20545315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com