MPI_bcast中是否有变量的大小限制?
我有最新的MPICH2(3.0.4)在一台四核双CPU(英特尔至强)机器上使用英特尔fort编译器编译 我遇到一个MPI_bcast问题,无法广播阵列MPI_bcast中是否有变量的大小限制?,mpi,mpich,Mpi,Mpich,我有最新的MPICH2(3.0.4)在一台四核双CPU(英特尔至强)机器上使用英特尔fort编译器编译 我遇到一个MPI_bcast问题,无法广播阵列 gpsi(1:201,1:381,1:38,1:20,1:7) 使其成为一个大小为407410920的数组。当我尝试广播此阵列时,出现以下错误 Fatal error in PMPI_Bcast: Other MPI error, error stack: PMPI_Bcast(1525)......: MPI_Bcast(buf=0x7f50
gpsi(1:201,1:381,1:38,1:20,1:7)
使其成为一个大小为407410920的数组。当我尝试广播此阵列时,出现以下错误
Fatal error in PMPI_Bcast: Other MPI error, error stack:
PMPI_Bcast(1525)......: MPI_Bcast(buf=0x7f506d811010, count=407410920,
MPI_DOUBLE_PRECISION, root=0, MPI_COMM_WORLD) failed
MPIR_Bcast_impl(1369).:
MPIR_Bcast_intra(1160):
MPIR_SMP_Bcast(1077)..: Failure during collective
rank 1 in job 31 Grace_52261 caused collective abort of all ranks
exit status of rank 1: killed by signal 9
MPI launch string is: mpiexec -n 2 %B/tvdbootstrap
Testing MPI configuration with 'mpich2version'
Exit value was 127 (expected 0), status: execute_command_t::exited
Launching MPI job with command: mpiexec -n 2 %B/tvdbootstrap
Server args: -callback 127.0.0.1:4142 -set_pw 65f76672:41f20a5c
所以问题是,MPI_bcast中变量的大小是否有限制,或者数组的大小是否超出了它所能处理的范围?是的,有限制。通常是2^31,大约有20亿个元素。你说你的阵列有4.07亿个元素,所以看起来应该可以工作。然而,如果限制是20亿字节,那么您将超过它大约30%。尝试将数组大小减半,看看是否有效
请参阅:是的,有一个限制。通常是2^31,大约有20亿个元素。你说你的阵列有4.07亿个元素,所以看起来应该可以工作。然而,如果限制是20亿字节,那么您将超过它大约30%。尝试将数组大小减半,看看是否有效
请参阅:正如John所说,您的数组太大,因为它不能再由
int
变量来描述。在这种情况下,您有几个选择
正如John所说,数组太大了,因为它不能再由
int
变量来描述。在这种情况下,您有几个选择
是的,约翰,缩小尺寸很有效。那么,广播超大阵列的合适方式是什么?令我惊讶的是,我的同事正在运行相同的代码,但不同的安装却没有得到错误。那么,它依赖于实现吗?如果是这样的话,哪种实现应该允许这样做?是的,约翰,缩小规模是可行的。那么,广播超大阵列的合适方式是什么?令我惊讶的是,我的同事正在运行相同的代码,但不同的安装却没有得到错误。那么,它依赖于实现吗?如果是这样,哪种实现应该允许这样做?wes,注意他正在运行mpich-3.0.4,如果您使用MPI数据类型方法,它可能会爆炸。这很公平。首次更新到mpich 3.1。然后做数据类型的事情。韦斯,注意他正在运行mpich-3.0.4,如果你使用MPI数据类型的方法,它可能会爆炸。这很公平。首次更新到mpich 3.1。然后做数据类型的事情。限制是“有符号整数的大小”,对大多数平台来说是2^31。“使用MPI数据类型”的答案是正确的。限制是“有符号整数的大小”,对于大多数平台是2^31。“使用MPI数据类型”答案是正确的方法。