0

私はいくつかの動的LCAを並列化しようとしています(10のようなものです...1000以上実行する必要があります...)そしてこれを得ました

Can't expand MemType 1: jcol 19852
Can't expand MemType 0: jcol 17930
multiprocessing.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/home/giuseppec/miniconda3/envs/bw2/lib/python3.4/multiprocessing/pool.py", line 119, in worker
    result = (True, func(*args, **kwds))
  File "/home/giuseppec/miniconda3/envs/bw2/lib/python3.4/multiprocessing/pool.py", line 47, in starmapstar
    return list(itertools.starmap(args[0], args[1]))
  File "multiprocess_both.py", line 129, in dyn_lca
    timeline=dynamic_lca.calculate()
  File "/home/giuseppec/miniconda3/envs/bw2/lib/python3.4/site-packages/bw2temporalis/dynamic_lca.py", line 54, in calculate
    **self.gt_kwargs
  File "/home/giuseppec/miniconda3/envs/bw2/lib/python3.4/site-packages/bw2calc/graph_traversal.py", line 44, in calculate
    lca, supply, score = self.build_lca(demand, method)
  File "/home/giuseppec/miniconda3/envs/bw2/lib/python3.4/site-packages/bw2calc/graph_traversal.py", line 107, in build_lca
    lca.decompose_technosphere()
  File "/home/giuseppec/miniconda3/envs/bw2/lib/python3.4/site-packages/bw2calc/lca.py", line 216, in decompose_technosphere
    self.solver = factorized(self.technosphere_matrix.tocsc())
  File "/home/giuseppec/miniconda3/envs/bw2/lib/python3.4/site-packages/scipy/sparse/linalg/dsolve/linsolve.py", line 377, in factorized
    return splu(A).solve
  File "/home/giuseppec/miniconda3/envs/bw2/lib/python3.4/site-packages/scipy/sparse/linalg/dsolve/linsolve.py", line 257, in splu
    ilu=False, options=_options)
MemoryError
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "multiprocess_both.py", line 181, in <module>
    dyn_multi=[x for x in pool_dyn_multi.get()] 
  File "/home/giuseppec/miniconda3/envs/bw2/lib/python3.4/multiprocessing/pool.py", line 608, in get
    raise self._value
MemoryError

行列反転中にscipyがメモリ不足になっているようです(私は確かにこれを言うのに最も精通しているわけではありませんが、少し調べました)何かが変わるかどうかを確認するためにscikit-umfpackをインストールしようとしました....実行中ですしかし、それでも非常に遅く、あまり有望ではないようで、さらにこの警告を返すだけです:

Warning: (almost) singular matrix! (estimated cond. number: 3.33e+14)

実際にこれに対処する方法について何も考えていません...誰かが持っていますか?

PS: bw2 のバグではないように見えるので、ここに投稿しました。

4

1 に答える 1

0

プールのサイズは?おそらく最も簡単な方法は、並行して実行するジョブの数を減らし、CPU の数を使用可能な半分程度に設定することです。

また、どこかでメモリ リークが発生し、ジョブの終了後にメモリが解放されていない可能性もあります。MPプール構築maxtasksperchild=1時に設定することで回避できます。

于 2016-04-23T21:18:27.163 に答える