没有针对MPI_CART_CREATE的特定子例程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有针对MPI_CART_CREATE的特定子例程相关的知识,希望对你有一定的参考价值。
我试图玩我的mpi实现的拓扑结构,但我使用MPI_CART_CREATE
遇到错误。
示例Fortran代码
use mpi
implicit none
integer :: ierror, nproc, ring_comm
call MPI_INIT(ierror)
call MPI_COMM_SIZE(MPI_COMM_WORLD, nproc, ierror)
call MPI_CART_CREATE(MPI_COMM_WORLD, 1, nproc, .false., 1, ring_comm, ierror)
call MPI_FINALIZE(ierror)
产生错误:
call MPI_CART_CREATE(MPI_COMM_WORLD, 1, nproc, .false., 1, ring_comm, ierror)
1
Error: There is no specific subroutine for the generic 'mpi_cart_create' at (1)
我无法弄清楚为什么会产生这个错误,因为所有参考文件都表明这是正确的形式。为什么我会收到此错误?
答案
根据标准(并给出一个版本的here)子程序的绑定是
MPI_CART_CREATE(COMM_OLD, NDIMS, DIMS, PERIODS, REORDER, COMM_CART, IERROR)
INTEGER COMM_OLD, NDIMS, DIMS(*), COMM_CART, IERROR
LOGICAL PERIODS(*), REORDER
问题中的代码使用
MPI_CART_CREATE(COMM_OLD, NDIMS, DIMS, PERIODS, REORDER, COMM_CART, IERROR)
INTEGER COMM_OLD, NDIMS, DIMS, COMM_CART, REORDER, IERROR
LOGICAL PERIODS
所以:
reorder
有一个错误的类型;ndims
和periods
是标量,而不是数组。
另一答案
看起来你没有在这里传递正确的参数。你可以找到这个功能的man page。我建议你去寻找一个很好的MPI拓扑教程,因为这是一个很大的答案。一个快速的谷歌搜索显示了不少,但这一个接近顶部和Fortran:http://scv.bu.edu/~kadin/Tutorials/Alliance/MPI/virtual_topology/cart_example2.html。
以上是关于没有针对MPI_CART_CREATE的特定子例程的主要内容,如果未能解决你的问题,请参考以下文章