gpt4 book ai didi

c - 我如何找到我正在运行的 CPU/内核?

转载 作者:行者123 更新时间:2023-12-02 03:23:42 26 4
gpt4 key购买 nike

出于基准测试目的,我使用 rdtsc 来确定我在关键循环中执行某些代码块所花费的伪时间。由于我的代码可以随时在进程之间重新安排,如果我发现我在微测量的开始和停止之间更改了 CPU,我想通过转储数据来最小化噪音。

是否有 x86 指令可用于识别我在哪个 CPU/内核上运行?可以给我唯一标识符或 CPU# 和核心# 等的东西。

显然,cpuid 不再提供信息,所以我正在寻找替代方案。

最佳答案

不是真的。你真的不想要一个单独的指令,因为你的线程可能在执行指令后立即迁移到另一个内核,然后你才能对其结果做任何有用的事情(或者在 RDTSC 和“我在哪个内核上?”之间)。查看)。 RDTSCP 很方便地避免了这种情况,因为它既提供了 TSC 又返回了操作系统在一条指令中告诉它的任何内容,但它需要操作系统支持并且是一个序列化指令(因此比 RDTSC 更重量级,这可能会影响细粒度的时序测量) .

正如有人在评论中指出的那样,如果每次测量的精度对您都很重要,您可能需要使用操作系统 API 来固定线程以确保它不会迁移。或者,迁移相对较少,因此如果您可以进行足够的测量,那么它偶尔引起的异常值就会很明显并且很容易排除。

关于c - 我如何找到我正在运行的 CPU/内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31518480/

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