Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing 在Fortran中使用MPI发送数据时,它必须是数组吗?_Parallel Processing_Fortran_Mpi - Fatal编程技术网

Parallel processing 在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

这是一个非常简单的问题。我正在练习在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,MPI_INTEGER,0,MPI_COMM_WORLD,ierror)

这里,我使用数组
final_sum
来保存单个值。有更好的方法吗?这是我第一次使用Fortran,因为我已经用C做了一些练习,所以我试着用Fortran来看看它们的区别和相似之处。

高性能标记是正确的。在调用使用缓冲区的MPI例程时,通常不进行类型检查。MPI例程利用Fortran特性,使调用过程具有隐式接口。在机器语言级别上,只传递一个指针(它可能是指向临时副本的指针!)。这意味着您可以毫无问题地使用标量或数组。只要使用计数1和正确的MPI类型,就可以传递和接收标量


MPI派生类型是一项功能,使您能够处理更复杂的数据。

否,您也可以发送标量、标量派生类型和派生类型数组。调查MPI派生的数据类型。