| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 329 人关注过本帖
标题:请教下C和Fortran混编时的MPI并行编程问题!
收藏  订阅  推荐  打印 
timwan
Rank: 1
等级:新手上路
帖子:7
积分:182
注册:2008-9-16
请教下C和Fortran混编时的MPI并行编程问题!

现在要用fortran调用C程序,两者里面均要用到MPI并行程序的语句,但是MPI针对这2种语言的格式是不一样的,怎样让2者都识别同一个MPI程序呢?谢谢!
搜索更多相关主题的帖子: MPI  Fortran  混编  
2008-9-16 10:09
forever74
Rank: 4
等级:高级会员
威望:3
帖子:515
积分:5984
注册:2007-12-27

请把问题描述清楚
从你现有的描述中看一切正常,没啥毛病
2008-9-16 14:17
timwan
Rank: 1
等级:新手上路
帖子:7
积分:182
注册:2008-9-16

问题是这样的:我在fortran程序开始处进行MPI初始化的,在fortran程序段MPI收发语句都正常执行,但是一进到C语言程序段,MPI语句就不能执行了。我发现C语言程序段不能识别从fortran传过来的MPI参数(例如:进程号等),都当成普通变量了,所以没办法进行MPI的收发。
2008-9-16 20:16
forever74
Rank: 4
等级:高级会员
威望:3
帖子:515
积分:5984
注册:2007-12-27

还是不具体
不过常规情况下fortran和C的混合第一需要考虑的问题是
fortran调用函数和例程的时候往往是传址的,而C是传值的
-->在C那边用指针接收参数试试

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

这两个问题最常见,但是不一定就是你的问题,我猜
2008-9-16 22:17
forever74
Rank: 4
等级:高级会员
威望:3
帖子:515
积分:5984
注册:2007-12-27

哦,想起来还有fortran里面的字符串没有结束符
2008-9-16 22:24
timwan
Rank: 1
等级:新手上路
帖子:7
积分:182
注册:2008-9-16

谢谢您!
传值和传址两种方式我都试了,都能把变量的值在FORTRAN和C之间正确地传递。
关键是在MPI部分,MPI的参数已经不是普通的变量了,不知道怎样从fortran传到C中。
2008-9-17 10:55
forever74
Rank: 4
等级:高级会员
威望:3
帖子:515
积分:5984
注册:2007-12-27

您就整天叨咕“疼”,连头疼还是胃疼都不能说清楚,我想没有医生能有效治疗了
2008-9-17 18:55
timwan
Rank: 1
等级:新手上路
帖子:7
积分:182
注册:2008-9-16

已经说得很清楚了啊。就是MPI参数不能从fortran带入C啊,因为它不象普通参数那样写个接口就能传递了啊。问题可能主要还是出在并行这块。
2008-9-17 21:01
forever74
Rank: 4
等级:高级会员
威望:3
帖子:515
积分:5984
注册:2007-12-27

哦,原来您已经找到问题所在了,那是俺瞎操心了
2008-9-17 22:18
timwan
Rank: 1
等级:新手上路
帖子:7
积分:182
注册:2008-9-16

找到了问题所在并不代表解决了问题,所以如果您能够提供帮助,那么谢谢了
2008-9-18 08:50
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.055858 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved