fortran - 使用 mpi subrouine 更改变量的值
问题描述
我有 mpi + fortran 的问题。即,我的程序中的一个变量在使用 mpi 子例程 MPI_RECV 后发生了更改,尽管该变量不应更改。这是我的代码片段,问题出在:
IF ( RANK .EQ. 1 ) THEN
CALL MPI_SEND ( &
YDOT ( 1 ), &
1, &
MPI_DP_VEC, &
0, &
1, &
MPI_COMM_WORLD, &
IERROR &
)
END IF
IF ( RANK .EQ. 0 ) THEN
PRINT *, rho, 'aaa1'
CALL MPI_RECV ( &
YDOT ( 1 ), &
1, &
MPI_DP_VEC, &
1, &
1, &
MPI_COMM_WORLD, &
STATUS, &
IERROR &
)
PRINT *, rho, 'aaa2'
END IF
这产生
35368.254799414455 aaa1
2.1219957914593380E-314 aaa2
如果重要,我使用派生数据类型 MPI_DP_VEC。所以,我的问题,为什么会这样?为什么使用子程序 MPI_RECV 会导致变量“rho”发生变化?
预先感谢您的任何帮助!
解决方案
推荐阅读
- sql - 获取查询 Bigquery 的直方图
- vega-lite - 对相同的 y 值标记点沿所有值使用多项选择
- abcpdf - 使用 AbcPdf 10 设置 pdf 字段值会创建具有错误值的占位符
- r - R中长数据集中每个ID组的最后一行子集
- javascript - Chrome 扩展:在 URL 字符串匹配时取消隐藏弹出文本
- algorithm - 需要安排事件的顺序
- javascript - SAP Cloud SDK JavaScript:具有位置 ID 的 onPremise 目的地没有 CSRF 令牌
- r - 光栅中的反应式表达
- angular - 如何在 NativeScript 中对表单进行单元测试?
- laravel - 如何在循环中包含连接数据