MPI并行遇到的消息传递问题
各位好,我有个MPI消息传递的问题想请教下,我的数据类型为结构体(派生数据类型),定义如下:
type efield
double precision::r1,r2,i1,i2
endtype
type(efield),dimension(:,:),allocatable::e
但消息传递部分我有些不确定,比如我要发送n个派生数据类型,那我是应该每次发送n个数据成员,然后一共4次呢?还是一次性发送n个派生数据类型的变量就可以?如果可以将派生数据类型整体发送,那么buffer的数目应该是n还是4N,以及数据类型如何写?
我按照一次发送n个派生数据,类型写的doubleprecision,根据输出看的话,ierr是0,应该是没什么问题,但感觉还是不确定。毕竟只有这个rank操作成功了,其他rank遇到了一些问题。
call MPI_Isend(e(pml_cell,Ny-ypml_cell+1:Ny-1),ypml_cell-1,MPI_DOUBLE_PRECISION,pairx2,0,MPI_COMM_WORLD,request,ierr)
print*,'rank02',ierr
本帖最后由 li913 于 2024-5-27 09:19 编辑
mpi可以发送派生类型(成员不能是动态数组或指针),但是需要自己定义一个mpi_type. 了解一下MPI_Type_create_struct li913 发表于 2024-5-27 09:17
mpi可以发送派生类型(成员不能是动态数组或指针),但是需要自己定义一个mpi_type. 了解一下MPI_Type_crea ...
好的,谢谢:-handshake
页:
[1]