【发布时间】:2018-02-19 13:15:42
【问题描述】:
我们已经使用 Ananconda python 环境安装了 mpi4py 和 petsc。 mpi4py 和 petsc 喜欢的测试代码运行 mpi 效果很好
$ mpirun -n 4 python ./test.py
但是当我们运行OpenMdao v2.2.0的测试mpi代码的时候,总是报错likes
$ mpirun -n 4 python ./test_proc_alloc.py
ERROR: test_4_subs_max2 (__main__.ProcTestCase5)
----------------------------------------------------------------------
Traceback (most recent call last):
File "./test_proc_alloc.py", line 186, in test_4_subs_max2 p = _build_model(nsubs=4, max_procs=[2,2,2,2]) File "./test_proc_alloc.py", line 47, in _build_model p.setup(vector_class=vector_class, mode=mode, check=False)
File "anaconda2/5.0.0/lib/python2.7/site-packages/openmdao/core/problem.py", line 409, in setup model._setup(comm, 'full', mode)
File "anaconda2/5.0.0/lib/python2.7/site-packages/openmdao/core/system.py", line 714, in _setup.self._setup_var_sizes(recurse=recurse)
File "anaconda2/5.0.0/lib/python2.7/site-packages/openmdao/core/group.py", line 466, in _setup_var_sizes subsys._setup_var_sizes(recurse)
File "anaconda2/5.0.0/lib/python2.7/site-packages/openmda /core/component.py", line 233, in _setup_var_sizes self.comm.Allgather(sizes[type_][iproc, :], sizes[type_])
File "MPI/Comm.pyx", line 640, in mpi4py.MPI.Comm.Allgather (src/mpi4py.MPI.c:98562) Exception: Invalid buffer pointer, error stack: PMPI_Allgather(1093): MPI_Allgather(sbuf=0x5629c3c809e8, scount=1, MPI_LONG, rbuf=0x5629c3c809e0, rcount=1, MPI_LONG, MPI_COMM_WORLD) failed
PMPI_Allgather(1026):缓冲区不能有别名
什么是错误?谢谢。
【问题讨论】:
-
能把test.py文件的内容贴出来吗?
-
test.py 只是从 petsc4py-3.8.0/demo like kspsolve/test_mat_cg.py 复制而来。我可以使用 mpi 和 serial 获得相同的迭代和残差。
-
有可能但不太可能,petsc3.8 中存在当前与 OpenMDAO 不兼容的更改。你可以尝试使用 3.7 吗?
标签: openmdao