标题:请教下C和Fortran混编时的MPI并行编程问题!
只看楼主
timwan
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-9-16
结帖率:0
 问题点数:0 回复次数:10 
请教下C和Fortran混编时的MPI并行编程问题!
现在要用fortran调用C程序,两者里面均要用到MPI并行程序的语句,但是MPI针对这2种语言的格式是不一样的,怎样让2者都识别同一个MPI程序呢?谢谢!
搜索更多相关主题的帖子: MPI Fortran 混编 
2008-09-16 10:09
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
请把问题描述清楚
从你现有的描述中看一切正常,没啥毛病
2008-09-16 14:17
timwan
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-9-16
得分:0 
问题是这样的:我在fortran程序开始处进行MPI初始化的,在fortran程序段MPI收发语句都正常执行,但是一进到C语言程序段,MPI语句就不能执行了。我发现C语言程序段不能识别从fortran传过来的MPI参数(例如:进程号等),都当成普通变量了,所以没办法进行MPI的收发。
2008-09-16 20:16
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
还是不具体
不过常规情况下fortran和C的混合第一需要考虑的问题是
fortran调用函数和例程的时候往往是传址的,而C是传值的
-->在C那边用指针接收参数试试

常规第二问题是fortran数组是按列存放的,而C是按行存放
所以如果是方阵,传过去后是转置过的,不方的数组是乱套的

这两个问题最常见,但是不一定就是你的问题,我猜
2008-09-16 22:17
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
哦,想起来还有fortran里面的字符串没有结束符
2008-09-16 22:24
timwan
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-9-16
得分:0 
谢谢您!
传值和传址两种方式我都试了,都能把变量的值在FORTRAN和C之间正确地传递。
关键是在MPI部分,MPI的参数已经不是普通的变量了,不知道怎样从fortran传到C中。
2008-09-17 10:55
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
您就整天叨咕“疼”,连头疼还是胃疼都不能说清楚,我想没有医生能有效治疗了
2008-09-17 18:55
timwan
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-9-16
得分:0 
已经说得很清楚了啊。就是MPI参数不能从fortran带入C啊,因为它不象普通参数那样写个接口就能传递了啊。问题可能主要还是出在并行这块。
2008-09-17 21:01
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
哦,原来您已经找到问题所在了,那是俺瞎操心了
2008-09-17 22:18
timwan
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-9-16
得分:0 
找到了问题所在并不代表解决了问题,所以如果您能够提供帮助,那么谢谢了
2008-09-18 08:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-233365-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.226011 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved