実行時間を短縮するために、すべてのアイドルコアで実行したいコマンドがあります。特に、私は以下からダウンロードした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