所以我有一个可执行文件,我需要用不同的输入参数多次运行它。每次运行大约需要一个小时,我注意到在整个小时内,8个核心中只有1个核心的CPU利用率为100%,其余的都处于空闲状态。
有没有可能产生4-5个进程,每个进程使用不同的内核并使用不同的参数?这是常见的做法吗?这是我第一次为多核而烦恼,所以如果有任何其他我需要注意的事情,请让我知道。
目前,我正在使用Python运行,并等待这个可执行文件完成。
发布于 2015-12-07 20:27:08
您所描述的是在编译大程序时常规完成的-多个编译器进程会衍生出来,处理不同的文件。
如果您的程序像看起来那样受CPU限制,输入数据很容易分区,并且在编写结果时各种实例不会互相践踏,那么您可以尝试看看是否获得了预期的加速比。
发布于 2015-12-07 20:19:53
在运行并行进程时,应考虑共享资源,此外,根据负载情况,它可能比单进程快,也可能不比单进程快(例如,如果瓶颈不是cpu)
常见问题通常与“竞争条件”和死锁有关,前者是指两个进程使用彼此不知道的相同数据,从而导致数据由于覆盖而损坏的情况
不知道任务的更多细节,就不可能准确地回答
发布于 2015-12-07 22:19:25
正如已经提出的,一种方法是在应用程序中对输入集进行分区,并使用多处理模块并行处理它。
或者,您可以预先对输入进行分区,并使用GNU并行或良好的旧xarg在输入上运行程序的多个副本(查看-n和-P选项)。
然后,如果需要的话,还有将结果合并在一起的问题。
所有这一切都取决于能够将输入拆分成可以独立处理的部分,而不需要协调或共享内存。否则它会变得更复杂。
https://stackoverflow.com/questions/34133095
复制相似问题