我正在运行一个具有 mpirun 和 2 个内核的进程,当我在两个进程之间混合值时,它会被杀死。这两个进程都使用了大约 15% 的机器内存,即使混合时内存会增加,但仍然应该有足够的内存。所以我假设用于在进程之间传递消息的内存量是有限制的。我如何找出这个限制是什么以及如何删除它?
当 mpirun 死亡时,我收到的错误消息是:
File "Comm.pyx", line 864, in mpi4py.MPI.Comm.bcast (src/mpi4py.MPI.c:67787)
File "pickled.pxi", line 564, in mpi4py.MPI.PyMPI_bcast (src/mpi4py.MPI.c:31462)
File "pickled.pxi", line 93, in mpi4py.MPI._p_Pickle.alloc (src/mpi4py.MPI.c:26327)
SystemError: Negative size passed to PyBytes_FromStringAndSize
这是导致错误的代码位:
sum_updates_j_k = numpy.zeros((self.col.J_total, self.K), dtype=numpy.float64))
comm.Reduce(self.updates_j_k, sum_updates_j_k, op=MPI.SUM)
sum_updates_j_k = comm.bcast(sum_updates_j_k, root=0)
该代码通常有效,它只会遇到大量数据的问题,这使得我在进程之间交换的矩阵的大小增加