17.2.338. MPI_Status_f082f
MPI_Status_f082f, MPI_Status_c2f08 - 将Fortran 2008状态转换为Fortran INTEGER风格状态,或反之。
17.2.338.1. 语法
17.2.338.1.1. C语法
#include <mpi.h>
int MPI_Status_f082f(const MPI_F08_status *f08_status, MPI_Fint *f_status)
int MPI_Status_f2f08(const MPI_Fint *f_status, MPI_F08_status *f08_status)
17.2.338.1.2. Fortran mpi模块语法
USE MPI
MPI_STATUS_F082F(F08_STATUS, F_STATUS, IERROR)
TYPE(MPI_Status) :: F08_STATUS
INTEGER :: STATUS(MPI_STATUS_SIZE), IERROR
MPI_STATUS_F2F08(F_STATUS, F08_STATUS, IERROR)
INTEGER :: F_STATUS(MPI_STATUS_SIZE), IERROR
TYPE(MPI_Status) :: F08_STATUS
17.2.338.1.3. Fortran mpi_f08 模块语法
USE mpi_f08
MPI_Status_f082f(f08_status, f_status, ierror)
TYPE(MPI_Status), INTENT(IN) :: f08_status
INTEGER, INTENT(OUT) :: f_status(MPI_STATUS_SIZE)
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
MPI_Status_f2f08(f_status, f08_status, ierror)
INTEGER, INTENT(IN) :: f_status(MPI_STATUS_SIZE)
TYPE(MPI_Status), INTENT(OUT) :: f08_status
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
17.2.338.2. 参数
f08_status: mpi_f08风格的MPI状态对象f_status: mpi风格的INTEGER MPI状态对象
17.2.338.3. 描述
这两个过程用于在Fortran 2008状态(由整数组成的派生数据类型)与Fortran状态(整数数组)之间进行相互转换。转换会处理状态中的所有信息,包括隐藏部分。也就是说,在转换过程中不会丢失任何状态信息。
当使用MPI_Status_f082f时,如果f08_status是一个有效的Fortran状态,
但不是MPI_F08_STATUS_IGNORE(在C中)的Fortran值,
MPI_STATUS_IGNORE(在Fortran中)或MPI_F08_STATUSES_IGNORE(在C中)或
MPI_STATUSES_IGNORE(在Fortran中),那么MPI_Status_f082f会在
f_status中返回一个具有相同内容的有效数组。如果f08_status是
MPI_F08_STATUS_IGNORE或MPI_F08_STATUSES_IGNORE的C值,或是Fortran中的
MPI_STATUS_IGNORE或MPI_STATUSES_IGNORE值,或者如果f08_status
不是一个有效的Fortran状态,那么该调用是错误的。
当使用MPI_Status_f2f08时,会执行相反的转换。如果f_status是MPI_STATUS_IGNORE或MPI_STATUSES_IGNORE,或者如果f_status不是有效的Fortran状态,则该调用是错误的。
输入状态与输出状态具有相同的来源、标签和错误代码值,并且在查询计数、元素和取消时返回相同的答案。转换函数可能会被调用时传入一个错误字段未定义的输入状态参数,在这种情况下,输出状态参数中的错误字段值也将是未定义的。
17.2.338.4. 注意事项
这些MPI例程的Fortran子程序仅在mpi和mpi_f08模块中可用(包括TYPE(MPI_Status)的类型规范);它们(有意)不在mpif.h中提供。