首页 > 解决方案 > 关于 mpi4py Scatter large arrays 的问题

问题描述

我正在尝试使用 mpi4py 分散大型 numpy 数组。python代码片段如下所示

import numpy as np

from mpi4py import MPI

comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()

assert size == 32

multi_dm = None
multi_gas = None

dm_split = np.empty((512*512/32, 1024), dtype=np.float64)
gas_split = np.empty((512*512/32, 1024), dtype=np.float64)

if (rank == 0):

    dm_temp = np.random.normal(0.0, 1.0, (512, 512, 1024)
    gas_temp = np.random.normal(0.0, 1.0, (512, 512, 1024)

    indexes = np.where(dm_temp[:,:,0]>-1.0)
 
    multi_dm = np.zeros( (512*512, 1024), dtype=np.float64)
    multi_gas = np.zeros( (512*512, 1024), dtype=np.float64)
    multi_dm = dm_temp[indexes]
    multi_gas = gas_temp[indexes]
   
    del dm_temp
    del gas_temp

comm.Scatter(multi_dm, dm_split, root=0)
comm.Scatter(multi_gas, gas_split, root=0)

输入后mpiexec -n 32 ipython some_name.py,它给了我如下所示的错误消息。

===================================================================================
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   PID 36749 RUNNING AT super
=   EXIT CODE: 11
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11)
This typically refers to a problem with your application.
Please see the FAQ page for debugging suggestions

我应该怎么做才能解决这个问题?

标签: pythonnumpynumpy-ndarraympi4py

解决方案


推荐阅读