模拟最大 CPU 负载的最简单方法?

Easiest way to simulate the maximum CPU load?

我必须在最极端的发热和电流消耗条件下测试嵌入式计算机,为此我想编写一个程序,尽可能多地使用 quad 的 CPU 资源核心 CPU(每个核心一个线程)。你能推荐一些 非常 CPU 很饿的东西吗?

我必须在 ARMv7 上为 Linux 执行此操作并且语言是 C 或 C++,我发现的其他示例要么用于 Windows 要么不用于 C/C+ +。

我正在我的 Windows 计算机上尝试这样的事情,显然它正在工作,因为它占用了 CPU 总功率的 12%(这是一个 i7 四核,每个核心 2 个线程):

float x = 1.5f;
while (1)
{
    x *= sin(x) / atan(x) * tanh(x) * sqrt(x);
}

我不知道如何让它成为多线程。

必须是自己的程序吗?你总是可以只使用一些现有的代码来燃烧很多周期,比如光线追踪器或比特币,以及 运行 其中的几个。

您的代码是连续的。您有八个可用线程(4 个核心 * 每个核心 2 个线程 = 总共 8 个线程),并且您当前的代码将其中一个线程用于 1 thread / 8 available = 12.5% 的 CPU。如果您必须编写自己的代码(而不是使用其他人已经建议的预先存在的密集代码),我建议将 #pragma omp parallel 放在 while 循环之上并使用 [=13 进行编译=] 标志(假设您使用的是 MinGW,如果不是,确切的选项可能会有所不同)以便您使用所有可用的线程。

这有点取决于你的意思"maximum CPU load"。

关于CPU用法,基本上什么都行。请记住,您需要的线程数(或可执行文件的实例数)与 CPU 的内核数一样多。

不过,您需要记住的是,CPU 使用并不是 SoC 中电源使用的全部和最终结果。您需要牢记的其他方面包括:

  • 内存访问。您当前使用的应用程序根本不涉及内存。

  • 其他片上外围设备,例如闪存控制器、SPI/I2C/UART 驱动程序等

  • 一个 GPU,如果您的 SoC 包含一个。 (这很容易使我到目前为止提到的所有其他东西的用电量相形见绌!)

  • 片外外围设备:闪存、内存、显示器、电池充电器,以及您设备中的任何其他设备。