mpirun と 2 つのコアでプロセスを実行していますが、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)
コードは通常は機能しますが、大量のデータでのみ問題が発生するため、プロセス間で交換するマトリックスのサイズが大きくなります