Parallel processing 在Fortran中使用MPI发送数据时,它必须是数组吗?
这是一个非常简单的问题。我正在练习在Fortran中使用MPI,据我所知,发送和接收源必须是数组,如下所示:Parallel processing 在Fortran中使用MPI发送数据时,它必须是数组吗?,parallel-processing,fortran,mpi,Parallel Processing,Fortran,Mpi,这是一个非常简单的问题。我正在练习在Fortran中使用MPI,据我所知,发送和接收源必须是数组,如下所示: do 20 i = 1, 25 final_sum(1) = final_sum(1) + random_numbers(i) 20 continue print *, 'process final sum: ', final_sum(1) call MPI_GATHER(final_sum,1,MPI_INTEGER,sum_recv_buff,1,M
do 20 i = 1, 25
final_sum(1) = final_sum(1) + random_numbers(i)
20 continue
print *, 'process final sum: ', final_sum(1)
call MPI_GATHER(final_sum,1,MPI_INTEGER,sum_recv_buff,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierror)
这里,我使用数组
final_sum
来保存单个值。有更好的方法吗?这是我第一次使用Fortran,因为我已经用C做了一些练习,所以我试着用Fortran来看看它们的区别和相似之处。高性能标记是正确的。在调用使用缓冲区的MPI例程时,通常不进行类型检查。MPI例程利用Fortran特性,使调用过程具有隐式接口。在机器语言级别上,只传递一个指针(它可能是指向临时副本的指针!)。这意味着您可以毫无问题地使用标量或数组。只要使用计数1和正确的MPI类型,就可以传递和接收标量
MPI派生类型是一项功能,使您能够处理更复杂的数据。否,您也可以发送标量、标量派生类型和派生类型数组。调查MPI派生的数据类型。