マルチコア (およびマルチスレッド) マシンで複数のジョブを実行する必要があります。GNU Parallel ユーティリティを使用してコア全体にジョブを分散し、タスクを高速化しています。実行するコマンドは、'commands' というファイルで入手できます。次のコマンドを使用して、GNU Parallel を実行します。
猫コマンド | 並列 -j +0
この場所のガイダンスに従って- gnu parallel、このコマンドは、すべてのコアを使用してこのタスクを実行することになっています。私のマシンには 2 つのコアがあり、コアごとに 2 つのスレッドがあります。ただし、システム モニターには 4 つの CPU が表示されます (CPU1 と CPU2 はコア 1 に属し、CPU3 と CPU4 はコア 2 に属します)。各ジョブ (シミュレーション) は、シングル コアで実行するのに約 20 秒かかります。上記のコマンドでこの GNU 並列ユーティリティを使用して、2 つのジョブを並列に実行しました。システム モニターで、2 つのジョブが cpu1 と cpu2 (同じコア) に割り当てられている場合、明らかに速度が向上しないことがわかります。完了するまでに約 40 秒かかります。これは、順次実行した場合にかかる時間とほぼ同じです。ただし、ツールが 2 つのジョブを CPU1 と CPU3 または CPU4 に分散することがあります (つまり、2 つのジョブが 2 つの異なるコアに割り当てられます)。この場合、両方のジョブが 20 秒で並行して終了します。
ここで、同じコアの異なる「スレッド」ではなく、異なる「コア」でツールを強制的に実行できる方法があるかどうかを知りたいです。どんな助けでも大歓迎です。ありがとう!