我有一个命令,我想在所有空闲核心上运行以加快执行时间。具体来说,我正在运行从以下位置下载的 Pitman-Yor Adaptor-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