gpt4 book ai didi

c - lmbench 如何使用 C 测量 L1 和 L2 缓存延迟? (无法理解手册中的解释)

转载 作者:太空狗 更新时间:2023-10-29 11:19:26 33 4
gpt4 key购买 nike

我试图了解 lmbench 如何测量 L1、L2 和主内存的延迟。

man page for lat_mem_rd 提到了方法,但我不清楚:

The benchmark runs as two nested loops. The outer loop is the stride size. The inner loop is the array size. For each array size, the benchmark creates a ring of pointers that point forward one stride. Traversing the array is done by

p = (char **)*p;

in a for loop (the over head of the for loop is not significant; the loop is an unrolled loop 1000 loads long). The loop stops after doing a million loads.

如何“创建指向前方一步的指针环”?这是否意味着如果步幅大小为 128 字节,您将需要制作一个链表,每个节点与前一个节点恰好相隔 128 字节? malloc 只是返回一些随机的空闲内存,所以我不明白这在 C 中是怎么可能的。在这段代码中,我总是会遇到段错误。 (测试过,p应该用什么初始化?)

SO( link ) 上有一个类似的线程,第一个答案对此进行了讨论,但它没有讨论如何将跨步方法用于链表。我还查看了源代码本身 (lat_mem_rd.c),但也无法从中理解这一点。

感谢任何帮助。

最佳答案

您可以分配大块内存,然后在您想要的任何边界上的分配 block 内排列链表的元素。

关于c - lmbench 如何使用 C 测量 L1 和 L2 缓存延迟? (无法理解手册中的解释),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19899087/

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