为什么在多核CPU上增加计算过程需要更长的时间



我用docker 运行简单算法计算测试

OS:ubuntu 20.4

CPU:i5-8250U @ 1.60GHz - Kaby Lake - Goldmount - 4 core

在单个docker容器上运行测试需要1.5(显然在主机上也是如此(

在双集装箱上,每个也需要1.5

每个有三个1.7

每个有四个2.0

在5的情况下,它们似乎开始发挥作用,而不是像那样

所以我可以理解为什么我们失去了5个容器的并行性,因为只有4个核心。但是为什么用<=4我们看到了计算时间的增长?

Docker文件:使用docker run -v <path>:<path> <imagename> /app/a.out <test_name> & docker run ... <test_name_2> & docker run ...运行的集装箱

FROM ubuntu:20.04

WORKDIR /app

测试代码:testFloat运行10次并从中获取平均值用g++ -O0 -static编译

double testFloat(Timer tmr) {
float total = 0.0;
tmr.reset();
for (unsigned long long int i = 0; i < 100000000; i++)
{
float r1 = randf();
float r2 = randf();
total = r1/r2;
}
double elapsed = tmr.elapsed();
return elapsed;
}

我不知道还有什么可以帮助,所以问你是否需要额外的信息

您的处理器是这样的:https://ark.intel.com/content/www/us/en/ark/products/124967/intel-core-i5-8250u-processor-6m-cache-up-to-3-40-ghz.html

它的基频为1.6千兆赫,最大涡轮频率为3.4千兆赫。这意味着它可以以大约2倍的速度运行,但不是一直运行。具体来说,并不是所有4个核心都能在3.4 GHz下运行。这可能就是为什么当同时运行3或4个进程时,您会观察到每个内核的速度减慢——这会迫使所有内核都放慢速度以避免过热。

最新更新