マルチコアでコマンドを実行する方法

マルチコアでコマンドを実行する方法

実行時間を短縮するために、すべてのアイドルコアで実行したいコマンドがあります。特に、私は以下からダウンロードしたPitman-Yor Adapter-Grammar Samplerソフトウェアを実行しています。ここ

./py-cfg/py-cfg-mp -r 0 -d 10 -x 10 -D -E  -e 1 -f 1 -g 10 -h 0.1 -w 1 -T 1 -m 0 -n 500 -G x.tgt y.tgt < z.tgt

parallel -j "$(nproc)"指定されたコマンドの前に追加しようとしました。この回答では

ただし、次のエラーが発生します。

Error in ./py-cfg/py-cfg-mp, argc = 29, optind = 27

ベストアンサー1

答えは次のとおりです。状況によって異なります。

GNU Parallel では、異なる入力を使用して同じプログラムを並列に実行できます。

parallel gzip ::: *.txt

これは現在のディレクトリのすべてのファイルで実行されますgzip.txt

gzipシングルスレッドなので、各インスタンスは単一のCPUコアのみを使用します。

それほど複雑ではありません。

gzipただし、複数のコアを使用して単一の(大きな)ファイルを圧縮するように並列化したい場合、.txt作業ははるかに複雑です。実際には、pigzこのために作られたさまざまなプログラムを使用します(たとえば)。

つまり、自動的にgzipマルチスレッドを実行することはできません。

Pitman-Yorアダプタ(構文サンプラー)についてはわかりません。gzipシングルスレッドの場合は、さまざまな入力で複数のインスタンスを実行できます(GNU Parallelがこれを行うのに役立ちます)。ただし、単一の入力が与えられると、複数のコアで実行されるようにサンプラーを自動的に変換することはできません。

まだわからない場合は、次のようにしてください。https://stackoverflow.com/help/minimal-reproducible-example

おすすめ記事