首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上启用OpenMPI

在Linux上启用OpenMPI
EN

Stack Overflow用户
提问于 2013-11-26 01:09:29
回答 1查看 18.7K关注 0票数 1

我正在尝试使用OpenMPI在Ubuntu上启用CodeBlocks。我已经下载了:

sudo apt-获取安装-y autotools-dev g++ build-必要的openmpi1.6-bin openmpi1.6-doc libopenmpi1.6-dev

之后,我尝试运行以下代码:

代码语言:javascript
复制
#include <stdio.h>
#include <mpi.h>

int main(int argc, char **argv)
{
   int size, rank;
   MPI_Init(&argc, &argv);
   MPI_Comm_size(MPI_COMM_WORLD, &size);
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
   printf("SIZE = %d RANK = %d\n",size,rank);
   MPI_Finalize();   
   return(0);
}

但我发现了一个错误:

致命错误: mpi.h:没有这样的文件或目录

然后,我将c++编译器从g++更改为mpicxx,这是这里推荐的:常见问题:编译MPI

但是,当我现在试图运行我的代码时,我会得到以下几个错误:

代码语言:javascript
复制
openmpi.cpp|| undefined reference to `MPI_Init'|
openmpi.cpp|| undefined reference to `ompi_mpi_comm_world'|
openmpi.cpp|| undefined reference to `MPI_Comm_size'|
openmpi.cpp|| undefined reference to `ompi_mpi_comm_world'|
openmpi.cpp|| undefined reference to `MPI_Comm_rank'|
openmpi.cpp|| undefined reference to `MPI_Finalize'|
[...]

我想,我必须添加路径或链接库,但我不知道如何实现这一点。我也不知道在我的机器上安装了OpenMPI。

我已经从网站下载的文件夹,以及,如果这可以帮助。

更新

在将mpicxx作为附加标志添加到链接器和-pthread -L/opt/openmpi/lib -lmpi_cxx -lmpi -ldl -lm -Wl,--export-dynamic -lrt -lnsl -lutil -lm -ldl之后,我最终可以编译代码。

但现在我又犯了一个错误:

代码语言:javascript
复制
[[INVALID],INVALID] ORTE_ERROR_LOG: A system-required executable either could not be found or was not executable by this user in file ess_singleton_module_c at line 231
[...]
Soory! You were supposed to get help about:  
orte_init:startup:internal-failure  
But I couldn't open the file:  
/usr/share/openmpi/help-orte-runtime: No such file or directory.
EN

回答 1

Stack Overflow用户

发布于 2013-11-26 08:31:25

大多数MPI库都带有特殊的编译器包装器,例如:

  • C编译器的mpicc
  • mpic++/mpiCC/mpicxx用于C++编译器;
  • Fortran编译器的mpif77/mpif90/mpif95
  • 其他特定于发行版的包装器,例如英特尔C编译器的英特尔MPI库的mpiicc

这些包装器提供编译器需要的所有选项,以便找到包含的文件并链接适当的库。

因此,您必须更新项目设置,并将、编译器和链接器都更改为。

另一个选项是运行以下命令:

代码语言:javascript
复制
mpicxx -showme:link

它将为您提供一个选项列表,您应该将这些选项添加到项目设置中的链接器标志中,以便正确地将可执行文件与Open链接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20206718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档