在OS X上使用OpenMP和MPI

自从Xcode的编译器从GCC变成clang之后,在OS X上使用OpenMP和MPI就变得很麻烦了。之前查了一下,貌似有clang-omp这个项目,但是配置起来似乎很麻烦。所以干脆直接在电脑上装了GCC跟OpenMPI。

首先你需要确保已经安装了Homebrew。在终端输入 brew -v 查看Homebrew的version。如果提示未安装,输入

来安装Homebrew(更多信息请访问http://brew.sh/)。

在使用Homebrew安装之前,请运行 brew doctor 来确保你的配置没有问题,如果有问题,请按照提示一项一项修改。

接下来输入

进行GCC的安装。其中 --without-multilib 是必须要有的,因为multilib在OS X上跟OpenMP冲突,可能导致OpenMP无法使用。GCC的安装过程比较缓慢,因为需要从零开始编译安装。一般编译过程在1~2小时左右,视机器情况而定。

Homebrew安装的GCC存放在 /usr/local/bin/gcc-5 中(GCC5.2.0版)。此时,系统中依然有 /usr/bin/gcc ,然而这个GCC是clang的链接。所以在编译时,需要使用类似 gcc-5 xxx.c -o xxx -fopenmp 进行编译,而不是使用默认的gcc。

接下来要安装OpenMPI,同样使用Homebrew

在使用mpicc编译时,需要注意,如果不做任何操作,mpicc会使用默认的gcc,也就是clang的链接来编译,使得编译出错。所以在编译之前需要设置环境变量

这样,mpicc就会使用gcc-5来编译了。

UPDATE

如果你需要编译C++文件,请使用 MPICXX 进行编译,并且指定环境变量为

UPDATE2 使用mpi4py

首先,安装python3。因为学校的Spartan集群只有python3环境有mpi4py。

使用homebrew安装的python3自带pypi。接下来就可以安装mpi4py了。

首先要确保你已经安装了openmpi (见上)。然后运行

就能安装mpi4py了。

测试:

如果import mpi4py之后没有报错的话,就说明装完了。

另外注意:

你要使用python3运行你的程序,请使用:

记住是python3不是python! 记住是python3不是python! 记住是python3不是python!

2 Comments

  • Zijian Liu

    2016 年 05 月 17 日 at 12:49 回复

    Thank you sooo much! This issue has bothered me for days and your blog is so helpful!

  • Benze

    2017 年 05 月 10 日 at 14:54 回复

    how to delete it if I got some issues.

Post a Comment