我需要在多核(和多线程)机器上运行多个作业。我正在使用GNU Parallel 实用程序在内核之间分配作业以加快任务速度。要执行的命令可在名为“commands”的文件中找到。我使用以下命令来运行 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 秒内并行完成。
现在,我想知道是否有一种方法可以强制该工具在不同的“核心”上运行,而不是在同一核心上的不同“线程”上运行。任何帮助表示赞赏。谢谢!