假设我想运行一个并行程序来处理一堆文件,并且该程序接受一个-t
选项来增加所使用的线程数。我正在使用的机器的输出具有以下规格lscpu
:
CPU(s): 16
Thread(s) per core: 1
Core(s) per socket: 8
Socket(s): 2
...
我不清楚运行指定的多个线程的程序与将输入文件列表通过管道传输到parallel
.由于每个核心只有一个线程,因此同时执行这两项操作是否完全多余?
答案1
最好的建议是:测试和测量。
即使程序可以在多个线程中运行,它也可能会不时暂停(读取或写入磁盘),在此期间其他线程可以使用 CPU。
因此,除了测试和测量之外,实际上没有一个真正的答案。
有关的:https://oletange.wordpress.com/2015/07/04/parallel-disk-io-is-it-faster/