win环境下在Vs2017中配置MPI请看这里:MPI环境搭建
参数: buf:发送缓冲区的首地址 count:需要发送的字节数 datatype:每个发送元素的数据类型 dest:目标的rankID(integer) tag:消息标识(integer) comm:通信域
参数: buf:发送缓冲区的首地址 count:需要发送的字节数 datatype:每个发送元素的数据类型 source:源进程的rankID(integer) tag:消息标识(integer) comm:通信域 status:状态标识? Note: send与recv函数往往成对出现,同一tag下的send与recv互相匹配
在需要用动态数组尤其是二维数组传输数据是若使用动态创建的vector来传输数据有可能会遇到数据错误(如主进程发送的是1但从进程接收的却是inf)、或者是数组访问越界。猜测可能是由于vector本身长度不固定,即使在声明时创建的是n*m维数组但mpi_recv函数向vector中写入数据时可能不会按预想的那样依次写入,因此访问出错。 对此问题建议声明为静态二维数组(Array)用于MPI间的通讯,其他更好的解决办法暂未发现。 出错的具体代码表现如下:
job aborted: [ranks] message [0-4] terminated [5] process exited without calling finalize [6-9] terminated ---- error analysis ----- [5] on DESKTOP-OC33V33 parallelProject.exe ended prematurely and may have crashed. exit code 0xc0000005 [0] on DESKTOP-OC33V33 parallelProject.exe ended prematurely and may have crashed. exit code 0xc0000374其他报错问题可参考该博文
