代码之家  ›  专栏  ›  技术社区  ›  Hielke Walinga

GNU并行不使用所有处理器

  •  0
  • Hielke Walinga  · 技术社区  · 6 年前

    我正在使用GNU并行来加速进程。然而,GNU并行并不使用我的机器上的所有核心。我想知道这里的限制因素是什么。

    命令:

    find data -type f | parallel --pipe -P 70 python program.py > output 
    

    但是,它只使用70个内核中的4个。我想知道是否有人知道其他限制使它只使用4核。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Ole Tange    6 年前

    我不知道 program.py 做。但使用起来很少见 --pipe 一起 find . 所以我想这就是你想要的:

    find data -type f | parallel -P 70 python program.py > output 
    

    --管子 输出来自 找到 必须至少为70 MB才能并行运行70个作业,因为默认 --block-size 为1 MB:

    find data -type f | parallel --pipe -P 70 python program.py > output 
    

    如果 程序,Py 确实读取stdin上的文件名,那么您可能应该使用 --round-robin 用较小的 --block :

    find data -type f | parallel --pipe --block 1k --round-robin -P 70 python program.py > output
    

    这将从 找到 给第一个作业第一个1千字节,给第70个作业第70千字节,给第一个作业第71千字节。