我想使用多进程并行运行相同的代码。你知道吗
我的进程代码只运行了8分钟。在10分钟内使用“强制单线程”的东西。但当我并行运行24个实例时,每个实例大约需要1个小时。你知道吗
以前,当每个进程像疯子一样疯狂地跨越线程时,我的上下文切换为1.6M。 然后我使用了下面的env。强制Numpy每个进程只使用一个线程的变量:
os.environ["NUMEXPR_NUM_THREADS"] = '1'
os.environ["OMP_NUM_THREADS"] = '1'
os.environ["MKL_THREADING_LAYER"] = "sequential" # Better than setting MKL_NUM_THREADS=1 (source: https://software.intel.com/en-us/node/528380)
即使在那之后,我的问题仍然存在。我每个进程有大约1小时的运行时间。 使用glans,除了使用95-100%的CPU(glans中为红色)之外,其余都是绿色的,内存、bandwith,甚至上下文切换都在5K左右恢复正常
你知道为什么会这样吗?我不明白为什么这是6倍慢并行时,没有明显的指标弹出的目光
对于我的具体问题,我已经找到了答案。这似乎是由于我的硬件,而不是代码。你知道吗
该代码在另一台16个cpu的服务器上运行良好。当我使用其中15个的时候,我得到了8分钟的时间,这正是我想要的。你知道吗
我认为旧服务器中的某些东西使多进程处理速度变慢。你知道吗
无法工作的旧服务器:
工作的新服务器:
相关问题 更多 >
编程相关推荐