向窗口写

MPI_PUT(origin_addr, origin_count, origin_datatype, target_rank, target_disp,
target_count, target_datatype, win)
INorigin_addr本地发送缓冲区起始地址
INorigin_count 本地发送缓冲区中将要写到窗口内的数据个数
INorigin_datatype  本地发送缓冲区中的数据类型
INtarget_rank目标进程标识
INtarget_disp相对于写窗口起始地址的偏移单位,从该位置开始写
INtarget_count 以指定的数据类型为单位,写入窗口的数据的个数
INtarget_datatype写数据的数据类型
INwin窗口对象
int MPI_Put(void * origin_addr, int origin_count, MPI_Datatype origin_datatype,
int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype
target_datatype, MPI_Win win)
MPI_PUT(ORIGIN_ADDR, ORIGIN_COUNT, ORIGIN_DATATYPE,
TARGET_RANK, TARGET_DISP, TARGET_COUNT,
TARGET_DATATYPE, WIN, IERROR)
<type> ORIGIN_ADDR(*)
INTEGER (KIND=MPI_ADDRESS_KIND) TARGET_DISP
INTEGER ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK,
TARGET_COUNT, TARGET_DATATYPE, WIN, IERROR

MPI_PUT将本进程中从地址origin_addr开始数据类型为origin_datatype 的origin_count个数据,写入进程号为target_rank的窗口空间,具体位置是从相对与该窗口的起始位置的第target_disp个偏移位置开始,target_address=base+target_disp*disp_unit,写入target_count个target_datatype类型的数据。其中base和disp_unit是在创建窗口是指定的。

图16-2 MPI_PUT操作图示