opencomm在c语言中的作用,使用OpenMPI从Fortran调用C语言

我有一个编译时问题,我已经减少到以下测试用例.我希望从fortran调用一个C例程,让C例程知道MPI.

请考虑以下示例代码,

Fortran主要:

! -- main.f90

program main

implicit none

external return_three

integer return_three

write(*,*) return_three()

end program main

C子程序:

// -- subs.cpp

#include

extern "C"

{

int return_three_();

}

int return_three_()

{

return 3;

}

请注意,为了重现问题,我只需要包含mpi.h.

使用GCC 5.3和OpenMPI 1.10.1进行编译(我也检查了GCC 4.8和PGI 15.10)在链接期间出现以下问题:

% mpic++ -c subs.cpp

% mpifort -c main.f90

% mpifort -o main subs.o main.o -lstdc++ -lgcc_s

subs.o: In function `MPI::Intracomm::Intracomm()':

subs.cpp:(.text._ZN3MPI9IntracommC2Ev[_ZN3MPI9IntracommC5Ev]+0x14): undefined reference to `MPI::Comm::Comm()'

subs.o: In function `MPI::Intracomm::Intracomm(ompi_communicator_t*)':

subs.cpp:(.text._ZN3MPI9IntracommC2EP19ompi_communicator_t[_ZN3MPI9IntracommC5EP19ompi_communicator_t]+0x19): undefined reference to `MPI::Comm::Comm()'

subs.o: In function `MPI::Op::Init(void (*)(void const*, void*, int, MPI::Datatype const&), bool)':

subs.cpp:(.text._ZN3MPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb[_ZN3MPI2Op4InitEPFvPKvPviRKNS_8DatatypeEEb]+0x24): undefined reference to `ompi_mpi_cxx_op_intercept'

subs.o:(.rodata._ZTVN3MPI3WinE[_ZTVN3MPI3WinE]+0x48): undefined reference to `MPI::Win::Free()'

subs.o:(.rodata._ZTVN3MPI8DatatypeE[_ZTVN3MPI8DatatypeE]+0x78): undefined reference to `MPI::Datatype::Free()'

collect2: error: ld returned 1 exit status

在我看来,像mpifort缺少一些C相关的库.据我所知,mpifort应该用于编译fortran主程序.针对OpenMPI 1.10.1编译的Intel 16.0不会出现此问题.

我的问题是:

>这里发生了什么?为什么英特尔能够处理这个示例代码而PGI / GCC不能处理?

>有没有一种可移植的方法在Fortran代码中包含带有MPI的C子程序?

>(如果可能)有一种简单的方法可以解决我目前的问题吗?我正在尝试在我的机器上编译一个包,所以如果我可以添加-lmagicfix或其他东西最好.

解决方法:

通过在最后一步添加-lmpi_cxx,我能够使用GCC 5.3.0和openMPI 1.10.2编译代码:

% mpic++ -c subs.cpp

% mpifort -c main.f90

% mpifort -o main main.o subs.o -lstdc++ -lmpi_cxx

原因是openMPI包装器编译器mpifort和mpic链接到不同的MPI库.您可以使用-showme:libs选项进行检查:

% mpifort -showme:libs

mpi_usempif08 mpi_usempi_ignore_tkr mpi_mpifh mpi

% mpic++ -showme:libs

mpi_cxx mpi

因此,为了使用C MPI库,您必须明确告诉mpifort链接到它.

标签:openmpi,c,gcc,fortran

来源: https://codeday.me/bug/20190824/1706239.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言打印空心矩形图案的程序,C语言之输出空心棱形图案

#include#includevoid main(){int n,j,i; /*i为行数,j为每行中的项数*/printf("输入图案上三角的高度n:");scanf("%d",&n);;i < n;i) /*打印上三角&#xff0c;(包括中间行)*/{;j < n - i;j){-i || j n - - i * i )printf(" *");el…

数据结构c语言版9 答案,2019考研数据结构C语言版详解答案:栈和队列(9)

《数据结构(C语言版)》考试内容两大类&#xff1a;概念&#xff0c;算法。自从计算机专业课统考以后&#xff0c;专业课考试题型分为2类&#xff0c;一类选择题&#xff0c;一类综合应用题。要想把数据结构这门专业课复习好&#xff0c;除了做练习题&#xff0c;还要掌握2019考…

中英翻译机c语言实验报告引言,课程设计--C语言关键字中英翻译机.doc

课程设计--C语言关键字中英翻译机.doc课 程 设 计 报 告学院、系 吉林大学珠海学院计算机科学与技术系专业名称 计算机科学与技术课程设计科目 C 语言程序课程设计所在班级 4 班学生学号 04110407学生姓名 曾伟雄指导教师 李昱完成时间 2012 年 3 月-5 月C 语言关键字中英翻译机…

两个序列的中位数c语言,小白在线求教 用归并排序实现查找两个有序序列的中位数...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼两个有序序列的中位数 (20分)已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N1)/2⌋个数(A0为第1个数)。输入格式:输入分三行。第一行给出序列的公共长…

c语言优化冒泡法,C语言:冒泡法排序一组数,如何优化?

#define _CRT_SECURE_NO_WARNINGS 1#include#includeint main(){int arr[] { 5, 6, 7, 8, 9 ,1, 2, 3, 4};int i 0;int j 0;int flag;int size sizeof(arr) / sizeof(arr[0]);for (i 0; i < size- 1 ; i){flag 1;//设置标志位&#xff0c;优化冒泡for (j 0; j < s…

android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解...

《Android实现获取短信验证码的功能以及自定义GUI短信验证详解》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《Android实现获取短信验证码的功能以及自定义GUI短信验证详解(8页珍藏版)》请在人人文库网上搜索。1、Android实现获取短信验证码的功能以 及自定义GUI短信…

android 分享到豆瓣,Android项目总结之社会化分享

随着现在社交网络的日益繁多&#xff0c;众多的社交客户端已占据了人们的大量时间&#xff0c;所以在我们的应用中具有一键分享的功能对提高我们产品的知名度有很大的帮助。新浪微博、腾讯微博、腾讯QQ、微信、QQ空间、豆瓣等众多知名社交站点&#xff0c;都是我们可以分享的去…

android实现自动横竖屏切换,android 中实现横竖屏切换【原创】

我们在使用android手机的时候&#xff0c;发现一些应用有横竖屏切换的功能&#xff0c;一般实现有以下几种方法&#xff1a;一、设置1.通过XML设置横竖屏切换在项目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性&#xff0c;它有以下几个…

超级管理器Android,超级文件管理器app

详情超级文件管理器app&#xff0c;一款帮助你管理手机内存的软件&#xff0c;还可以重命名&#xff0c;移动&#xff0c;删除文件&#xff0c;在Android平台上完美运行&#xff0c;并能够与其他OI系列软件结合使用! 能快速地查找到目标文件&#xff0c;十分方便用户管理自己手…

android miui ios,从iOS到Android——小米11及小米生态实际使用体验

从iOS到Android——小米11及小米生态实际使用体验2021-02-22 15:29:5693点赞155收藏131评论创作立场声明&#xff1a;文中的设备均为自购&#xff0c;无任何特定立场。2021年2月10日&#xff0c;我的iPhoneX手机突然黑屏&#xff0c;拿到Apple Store检测&#xff0c;经诊断是屏…

android amd cpu架构,AMD CPU 架构

同频率、同缓存容量的CPU才能比较出不同架构的优劣。目前Intel、AMD常见CPU架构性能从高到低&#xff1a;Intel Core i7 (Core i7/ Core i5)AMD K10.5 (PhenomII)Intel Core/Core2AMD K10 (Phenom)AMD K8AMD K7Intel P6 (PentiumM、Pentium3、Pentium2、PentiumPro)Intel NetBu…

p50会搭载鸿蒙吗,华为Mate40和华为P50也会搭载鸿蒙,华为Mate30跌至白菜价让路

原标题&#xff1a;华为Mate40和华为P50也会搭载鸿蒙&#xff0c;华为Mate30跌至白菜价让路华为Mate40和华为P50也会搭载鸿蒙&#xff0c;华为Mate30跌至白菜价让路&#xff01;华为P50Pro的机身部分后置摄像头模块的外观有发生了改变&#xff0c;可以看到华为P50Pro并没有将所…

android 天气接口简书,天气API接口说明

天气API接口稳定的确实没有&#xff0c;除非是天气官方提供的&#xff0c; 但是我观察了下&#xff0c;要是合作伙伴才有开放的可能。其他的&#xff0c;例如&#xff1a;百度 APIStore、一些同学在其他网站上抓包下来的接口&#xff0c;以及什么各种收费的 API&#xff0c;都没…

html中如何在标题中加样式,html title属性 样式

css 中title属性怎样设置文本样式&#xff1f;如加颜色、设置打开开发工具&#xff0c;新建一个HTML文件。使用font-family属性设置&#xff0c;字体代码&#xff1a;.demo1{font-family: "microsoft yahei";}。使用font-size属性设置字体的大小代码&#xff1a;.dem…

计算机科学计算第二版第四章,大连理工大学 计算机科学计算 第四章2.pdf

大连理工大学 计算机科学计算 第四章2第4章 插值与逼近4.2.4 Hermite插 值4.2.4 Hermite插值理论和应用中提出的某些插值问题&#xff0c;要求插值函数p (x)具有一定的光滑度&#xff0c;即在插值节点处满足一定的导数条件&#xff0c;这类插值问题称为Hermite插值问题。 Hermi…

html如何算小于0判断错误,如果长度小于0在javascript中提醒

如果当前长度为0个字符...我想提醒没有剩下的字符&#xff01;10$(document).ready(function(){//alert("test!!");var combined_text_length 0;var limit 10;$("input.text_question_1").live(keyup, function (e){current_length 0;$.each($("in…

图像识别利用计算机对图像进行,图像识别方法

图像识别&#xff0c;是指利用计算机对图像进行处理、分析和理解&#xff0c;以识别各种不同模式的目标和对像的技术。图像识别是人工智能的一个重要领域。主要的图像识别方法有基于神经网络的图像识别方法、基于小波矩的图像识别方法等。中文名图像识别方法外文名image recogn…

linux将db2账户添加到组_超实用的shell脚本--Linux安全加固设置,值得收藏

概述近几年来Internet变得更加不安全了。网络的通信量日益加大&#xff0c;越来越多的重要交易正在通过网络完成&#xff0c;与此同时数据被损坏、截取和修改的风险也在增加。 只要有值得偷窃的东西就会有想办法窃取它的人。Internet的今天比过去任何时候都更真实地体现出这一点…

微型计算机指令系统例题,微机原理复习题(指令系统)

微机原理复习题(指令系统)《微机原理》复习题二一、选择题1、假设外部设备的状态字已经读入AL寄存器,其中最低位为"0",表示外部设备"忙", 为了判断外部设备是否"忙"而又不破坏其它状态位,应选用下列( )组指令。A. RCR AL, 01H JZ Label B. CMP A…

迷你世界无人驾驶地铁火车_出口伊斯坦布尔地铁列车“云下线”

轨道世界 RailWorld开放&#xff5c;共享&#xff5c;价值导读 ID&#xff1a;RailWorld出口伊斯坦布尔地铁列车“云下线”全自动无人驾驶&#xff0c;全寿命远程跟踪、诊断和维护&#xff0c;全车内循环感应系统&#xff0c;极具土耳其风情的外观及内饰……7月14日&#xff0c…