"parallel --jobs 10"は、10のジョブが実行されることを意味しますか?

--jobsGNUオプションが指定されたことはparallel正確に何を意味しますか?

私は次を実行します:

parallel --jobs 10 ./program ::: {1..100}

これはprogram集中的なタスクであり、個々のタスクは互いに完全に独立しています。{1..100}各タスクを表す記号入力。私のPCで実行されているプロセスを確認すると、次のプロセスが何度も発生します。少ない10以上のジョブが同時に実行されています。

では、--jobsどういう意味ですか?

ベストアンサー1

マニュアルページによると、--jobsマシンごとに並列に実行される最大ジョブ数(強調):

——位置N

各システムのワークスロット数。走るに従ってN個の作業が同時に行われます。 0 はできるだけ多くを意味します。

だからといって、必ずしもそうだというわけではありません。並列コンピューティングの最初の要件は、ジョブを独立して実行でき、最終出力を組み合わせてジョブを順次実行すると同じ出力を生成できることです。これが不可能な場合は、ジョブを並列に完了できません。

また、GNU並列処理のマニュアルページから:

GNU Parallelは、1つ以上のコンピュータを使用してタスクを並列に実行するためのシェルツールです。ジョブは単一のコマンドでも、入力の各行に対して実行する必要がある小さなスクリプトでもかまいません。

これでファイルには2行しかありません。これを渡すと、--jobs 10必要なparallel最小入力は1行なので、2行に対して10個のジョブを実行できません。したがって、2つの場所のみが表示されます。

これは、GNU並列性だけでなく、ほぼすべての並列コンピューティングエンジンにも当てはまります。

おすすめ記事