我可能出于各种原因希望尽可能提高CPU温度:
- 测试冷却设置。
- 提高风扇转速,而不干扰BIOS设置。
- 测试温度调节对运行在同一芯片上的其他进程的影响。
我知道现代CPU有许多功能单元和各种各样的技巧来尽可能多地占用它们,所以,我知道这个答案对于特定的CPU微体系结构可能有一些变体。
但是,我可以运行什么代码,这将做最尖峰的CPU温度?
内联汇编是好的。但是,如果能用C或C++来回答就好了。
我确实写了这个函数,希望它能让几个不同的函数单元被无意义的计算所占用:
void busy_busy_busy()
{
using uint_t = ::std::uint64_t;
const auto maxuint = ::std::numeric_limits<uint_t>::max();
::std::random_device random_device;
::std::mt19937_64 generator(random_device());
::std::uniform_int_distribution<uint_t> ints(0, maxuint >> 1);
::std::uniform_real_distribution<long double> doubles(0, 1);
long double starting = doubles(generator);
long double const one_third = 1.0l / 3.0l;
while (starting != one_third) {
auto tmp = starting;
tmp *= doubles(generator);
starting *= ints(generator);
starting += tmp;
starting /= maxuint >> 2;
}
}
现成的基准测试通常不是为此而设计的。它们旨在测试有目的地合成的负载或模拟真实世界使用的负载的执行速度。它们会增加CPU温度,但我追求的是非常专门设计的代码,以增加CPU温度与合成负载,这可能永远不会发生在这些基准测试。
我个人有一台AMD锐龙93950X.
1条答案
按热度按时间t3psigkw1#
这是一个不太好的答案,我可能不会接受它,但它是对我的原始程序的更新,基于一些有用的几乎是答案的评论,我认为它更适合这项任务:
最近的gcc将对此进行适当的矢量化:https://compiler-explorer.com/z/96se4MxPa