如何使用xcode 4编译openmpi程序?

如何使用xcode 4编译openmpi程序?,xcode,macos,osx-lion,parallel-processing,openmpi,Xcode,Macos,Osx Lion,Parallel Processing,Openmpi,我使用的是lion和xcode 4.2。我使用macports安装了openmpi。它全部安装成功 但是,我找不到指南来告诉我如何/包括哪些库来编译示例(见下文) #包括 #包括 int main(int argc,char*argv[]) { 国际货币基金组织; int-myid; MPI_状态统计; /*所有MPI程序都以MPI_Init开始*/ MPI_Init(&argc,&argv); /*Comm_size告诉我们有多少个进程*/ MPI通信大小(MPI通信世界和numprocs);

我使用的是lion和xcode 4.2。我使用macports安装了openmpi。它全部安装成功

但是,我找不到指南来告诉我如何/包括哪些库来编译示例(见下文)

#包括
#包括
int main(int argc,char*argv[])
{
国际货币基金组织;
int-myid;
MPI_状态统计;
/*所有MPI程序都以MPI_Init开始*/
MPI_Init(&argc,&argv);
/*Comm_size告诉我们有多少个进程*/
MPI通信大小(MPI通信世界和numprocs);
/*Comm_rank查找进程的级别*/
MPI通信等级(MPI通信世界和myid);
/*打印一条消息*/
printf(“Hello world,来自进程%d,共%d\n”,myid,numprocs);
/*MPI程序以MPI Finalize结束;这是一个弱同步点*/
MPI_Finalize();
返回0;
} 

Xcode报告缺少mpi.h

Open mpi有一个演练来完成这项工作

除了Dhaivat的链接,还有一些开放式MPI教程和。

您需要做两件事:

1) 抓住

libmpi.1.dylib

libmpi_cxx.1.dylib

并将它们复制到应用程序的项目文件夹中

2) 将mph.h文件(可能是/usr/local/include)的位置添加到标题搜索路径中

还要检查$PATH是否具有安装OpenMPI的路径;否则将导致编译时出错


祝你好运

这真的很容易。您可以按照OpenMPI网站中的说明操作,也可以执行以下操作(这将帮助您将任何程序链接到任何其他库)

在导航器(左面板)中选择项目。在“生成设置”中,搜索库搜索路径并放置MPI库所在的路径(/usr/local/lib)

然后查找用户头搜索路径,并将路径放在MPI头所在的位置(/usr/local/include)

最后,在构建阶段,查找带有库的链接二进制文件,单击加号(+),单击添加其他,按Cmd+Shift+G并将路径放在库
libmpi.1.dylib
libmpi\u cxx.1.dylib
是(/usr/local/lib)的位置,添加它们,构建并运行,它应该像一个符咒一样工作


有点晚了,但这可能对其他人有所帮助。

谢谢,这很有帮助。这是一个很好的教程。我不得不使用(假设只是一个更高版本)
libmpi.12.dylib
而不是
libmpi.1.dylib
。此外,我必须使用
#include“mpi.h”
而不是使用
#include
来包含它。希望这会继续有帮助!此外,我还必须首先使用
[sudo]brew install openmpi安装它,因为目录
/Library/Application Support/Apple/Developer Tools
已不存在,它似乎不再工作
#include <mpi.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    int numprocs;
    int myid;
    MPI_Status stat; 

    /* all MPI programs start with MPI_Init */
    MPI_Init(&argc,&argv);     

    /* Comm_size tells us how many processes there are  */
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs); 

    /* Comm_rank finds the rank of the process */
    MPI_Comm_rank(MPI_COMM_WORLD,&myid); 

    /* Print out a message */
    printf("Hello world, from process %d of %d\n", myid, numprocs);  

    /* MPI Programs end with MPI Finalize; this is a weak synchronization point */
    MPI_Finalize(); 

    return 0; 
}