我们正在考虑一台新工作站(将运行 Fedora 25/26),想知道什么样的 CPU 比较好。首先,我需要知道我需要多少个核心。为了帮助做出决定,我想看看我将要使用的应用程序之一的执行情况。
“make” 是否充分利用了多核/多线程?多 CPU 呢?例如,使用多核是否会显著缩短内核时间,还是差异不明显?
我在这里不进行科学计算,所以几毫秒的差异不会困扰我。
答案1
是的:https://www.gnu.org/software/make/manual/html_node/Parallel.html
GNU make 知道如何同时执行多个配方。通常,make 每次只执行一个配方,等待它完成后再执行下一个配方。但是,“-j”或“--jobs”选项会告诉 make 同时执行多个配方。您可以使用 .NOTPARALLEL 伪目标(请参阅特殊内置目标名称)抑制特定 makefile 中的并行性。
您需要问的问题不是 MAKE 是否可以利用多线程,而是您是否需要它来利用这一点。您正在制作的应用程序是否可以通过 MAKE 在多个离散配方中进行编译?
不过,说实话,现在要找到非多核处理器非常困难,所以为什么还要问这个问题呢?如果你预算有限,你的电脑可能会有至少 4 个逻辑处理单元。
其余的问题我们无法在这里回答:您的应用程序会给 MAKE 服务器带来什么样的负载?
答案2
正如另一个答案所述,“make -j”将允许 make 在多个线程上运行,这将加快构建速度。我发现限制在 6-10 左右,直到线程受到 IO 限制。它是线程作为参数,没有 CPU 或核心。
如果您正在运行大量大型构建,则应设置“distcc”。distcc 充分利用了 gcc 同时在多台主机上运行的能力。您的主构建将启动,并且 gcc 将意识到您的网络上设置了许多 distcc 节点以“外包”编译。它将执行此操作并协调将状态和 .o 返回主机。
https://www.linux-magazine.com/Online/Features/Distributed-Compiling-with-distcc