最近,用python做C++编写的openMPI动态库接口,运行python脚本,报错如下:

[pk:32466] mca_base_component_repository_open: unable to open mca_patcher_overwrite: /usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_patcher_overwrite.so: undefined symbol: mca_patcher_base_patch_t_class (ignored)
[pk:32466] mca_base_component_repository_open: unable to open mca_shmem_mmap: /usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_shmem_mmap.so: undefined symbol: opal_show_help (ignored)
[pk:32466] mca_base_component_repository_open: unable to open mca_shmem_sysv: /usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_shmem_sysv.so: undefined symbol: opal_show_help (ignored)
[pk:32466] mca_base_component_repository_open: unable to open mca_shmem_posix: /usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_shmem_posix.so: undefined symbol: opal_shmem_base_framework (ignored)
--------------------------------------------------------------------------
It looks like opal_init failed for some reason; your parallel process is
likely to abort.  There are many reasons that a parallel process can
fail during opal_init; some of which are due to configuration or
environment problems.  This failure appears to be an internal failure;
here's some additional information (which may only be relevant to an
Open MPI developer):opal_shmem_base_select failed--> Returned value -1 instead of OPAL_SUCCESS
--------------------------------------------------------------------------
--------------------------------------------------------------------------
It looks like orte_init failed for some reason; your parallel process is
likely to abort.  There are many reasons that a parallel process can
fail during orte_init; some of which are due to configuration or
environment problems.  This failure appears to be an internal failure;
here's some additional information (which may only be relevant to an
Open MPI developer):opal_init failed--> Returned value Error (-1) instead of ORTE_SUCCESS
--------------------------------------------------------------------------
--------------------------------------------------------------------------
It looks like MPI_INIT failed for some reason; your parallel process is
likely to abort.  There are many reasons that a parallel process can
fail during MPI_INIT; some of which are due to configuration or environment
problems.  This failure appears to be an internal failure; here's some
additional information (which may only be relevant to an Open MPI
developer):ompi_mpi_init: ompi_rte_init failed--> Returned "Error" (-1) instead of "Success" (0)
--------------------------------------------------------------------------
*** An error occurred in MPI_Init
*** on a NULL communicator
*** MPI_ERRORS_ARE_FATAL (processes in this communicator will now abort,
***    and potentially your MPI job)

查找了一圈,折磨了我一两天,试了各种方法。最后在openmpi的github网上上找到了相关的问题,这个问题是openmpi自身的bug,主要是对openmpi的动态库做其它接口的时候,发生的mpi初始化失败,相关讨论链接在这里:https://github.com/open-mpi/ompi/issues/3705

简单的处理办法就是用人为的给openmpi库加上相关的runtime路径:

#!/bin/sh
prefix="path_to_your_openmpi"  # such as /usr/lib/x86_64-linux-gnu/openmpi
for filename in $(ls $prefix/lib/openmpi/*.so); dopatchelf --add-needed libmpi.so.20 $filenamepatchelf --set-rpath "\$ORIGIN/.." $filename
done

当然,其实官网早就已经修复了这个bug。Ubuntu 18默认安装的openMPI版本是2017年发布的,从官网上下载最新的openMPI库进行安装,就没问题。

突然发现好久没有写博客了,简单记录一下,希望对大家有帮助!

使用python调用openmpi编译的MPI 动态库报错:mca_base_component_repository_open: unable to open mca_patcher_overwri相关推荐

  1. 调用opensmile编译的DLL动态库API进行声音特征提取

    目录 一.opensmlie : 二.SMILEapi调用方式. 1.创建实例 2.初始化. 3.设置回调 4.写音频数据. 5.配置文件改动 三.详细代码: 最近尝试使用opensmile进行声音特 ...

  2. 【错误记录】NDK 动态库报错 ( dlopen failed: file offset for the library /lib/arm64/libwebp.so“ >= file size:0)

    文章目录 一.报错信息 二.解决方案 一.报错信息 运行 NDK 时 , 删除了引用的动态库 , 然后 " Ctrl + Z " 恢复 , 运行就报如下错误 ; 2021-04-2 ...

  3. 【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )

    文章目录 一.报错信息 二.解决方案 ( 指定 APK 打包动态库的 CPU 架构 ) 一.报错信息 外部引用 so 动态库 , 如果只有一个 armeabi-v7a 的动态库 , 那么如果在 arm ...

  4. 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )

    文章目录 一.报错信息 二.解决方案 ( Android Studio 配置外部 so 动态库两种方法 ) 1.jniLibs 目录存放 2.libs 目录存放 一.报错信息 外部引用 so 动态库 ...

  5. Cygwin编译自己定义OpenCV库报错:opencv_contrib: LOCAL_SRC_FILES points to a missing file

    今天受命帮师弟调个OpenCV4Android 识别银行卡的程序,版本号为OpenCV4Android2.4.9,使用方式为前文介绍的第一种方式,即通过jni调用opencv.如杂家前文所述,配套的N ...

  6. FFmpeg编译成Android动态库

    项目需要,网上也有现成的FFmpeg Android动态库,但是本着亲力亲为的宗旨,做了不断地尝试,最终也是成功了,在此做一个笔记,以备日后查阅. 附上给我帮助的资料链接: 王英豪大神的博客 雷霄骅大 ...

  7. ViSP安装之Windows系统基于VS2019编译器编译获得VISP动态库

    Windows系统基于VS2019编译器编译获得VISP动态库 官网地址: Installation from source for Windows with Visual C++ 2019 (vc1 ...

  8. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

    文章目录 一.Android 系统中调试器进程内存流程 二.编译内存调试动态库以及调试程序 三.博客资源 一.Android 系统中调试器进程内存流程 修改游戏运行中的内存 , 游戏运行之后 , 游戏 ...

  9. MATLAB算法(函数)编译为C++动态库遇到的问题

    MATLAB算法(函数)编译为C++动态库遇到的问题 今天在编译MATLAB函数为C++的动态链接库时遇到了几个问题,在网上搜索了很多资料都没有解决我遇到的问题,特此分享出来供大家参考. 环境: Wi ...

  10. c语言怎么调用sdl库函数,Go调用SDL2的C语言动态库

    # Go调用SDL2的C语言动态库 在网上找到go的GUI项目基本都需要安装额外软件库,尝试了一下使用go调用dll库的,有所收获,抛砖引玉,留个记录怕以后忘了. ## 1.目录结构 ``` └─li ...

最新文章

  1. python – 处理psycopg2中的错误 psycopg2.errors.InFailedSqlTransaction: current transaction is aborted, comm
  2. 2021年下信息系统项目管理师报考和考试时间
  3. mysql中的count函数和sum函数如果条件不符合返回什么
  4. 你闺女都能看懂的 Kubernetes 插画指南!
  5. 基于Docker搭建Redis集群(主从集群)
  6. POI读取Excel内容格式化
  7. 奇怪的电梯(信息学奥赛一本通-T1360)
  8. horizon服务主要模块_Openstack入门篇(十四)之horizon服务的部署与测试
  9. windows下安装php5.5的redis扩展
  10. MySQL存数学符号,如何将数学符号保存到mysql或mssql数据库?
  11. Spire.pdf-使用学习记录
  12. 计算机专业网页设计周志,毕业设计周志范文100篇
  13. python爬取58同城二手房信息
  14. matlab插值函数 外插,Matlab数据插值-内插、外插
  15. 磁环介绍与应用(转)
  16. 什么是大数据系统架构
  17. java调用ip138实现ip地址查询
  18. freeswitch实战六(呼叫转移)
  19. 如何利用git将本地项目上传到码市、github等远程仓库
  20. 计算机维修行业中年,35岁改行的5个职业 中年转行也很轻松,你选对了吗

热门文章

  1. 搭建 Vue 开发环境
  2. office 2016 install(office2016组件自定义安装程序) v5.9.3中文绿色版
  3. Js传参中文乱码解决方法
  4. 【超全面】【持续更新中】Windows-美化指南
  5. 时序分析(3) -- 自回归模型(AR)
  6. 项目接力:售前、售中、售后
  7. json接口测试工具json-server
  8. 网狐棋牌游戏服务端架构设计原理
  9. Centos7 镜像资源下载
  10. Java设计模式实战 ~ 总目录