gpt4 book ai didi

parallel-processing - 使用 GNU parallel 在多核上运行并行作业

转载 作者:行者123 更新时间:2023-12-04 08:01:11 27 4
gpt4 key购买 nike

我需要在多核(和多线程)机器上运行多个作业。我正在使用 GNU Parallel utility跨核心分配作业以加速任务。要执行的命令在名为“命令”的文件中可用。我使用以下命令运行 GNU Parallel。

猫命令 |平行-j +0

根据此位置的指南- gnu parallel ,此命令应该使用所有内核来运行此任务。我的机器有 2 个内核,每个内核有 2 个线程。然而,系统监视器显示 4 个 CPU(CPU1 和 CPU2 属于 core1,CPU3 和 CPU4 属于 core2)。每个作业(模拟)在单核上运行大约需要 20 秒。我使用这个 GNU 并行实用程序和上面的命令并行运行了 2 个作业。我在系统监视器中观察到,如果将 2 个作业分配给 cpu1 和 cpu2(即同一个内核),显然没有提速。它们大约需要 40 秒才能完成,这大约是它们按顺序运行所花费的时间。但是,有时该工具会将 2 个作业分配给 CPU1 和 CPU3 或 CPU4(这意味着,2 个作业分配给了 2 个不同的核心)。在这种情况下,两个作业在 20 秒内并行完成。

现在,我想知道是否有一种方法可以强制该工具在不同的“核心”上运行,而不是在同一核心上的不同“线程”上运行。任何帮助表示赞赏。谢谢!

最佳答案

GNU Parallel 生成进程。它不决定在哪个内核上运行它。您的操作系统会这样做。 GNU/Linux 可以通过让进程在同一个物理 CPU 的内核上生成来节省电力:

echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

(参见 https://lesswatts.org/tips/cpu.php)

如果您的计算机设置为省电,这可能适合您。

GNU/Linux 还可以控制在哪些内核上生成进程。使用taskset,您可以告诉 GNU/Linux 使用掩码 10101010(bin)=0xAA; 在每个其他核心上生成;这里显示的是 128 核机器:

cat commands | taskset 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa parallel -j +0

关于parallel-processing - 使用 GNU parallel 在多核上运行并行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14365401/

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