如何在Mac OS X 10.5和Ubuntu 10.4上使用OpenMP?

时间:2010-09-04 19:04:15

标签: c openmp ubuntu-10.04 osx-leopard

我正在寻找一个开源库(DDS,一个双虚拟桥解算器),它在最新版本(2.1.1)中添加了一些非常有用的多任务功能,需要一个Windows系统 OpenMP(事实上,如果没有完整的OpenMP支持,最新版本甚至根本不会在非Windows系统上编译! - )。 Ubuntu 10.4有一个可用于旧版本(1.1.9)的软件包,其中包括库的Python接口(pydds)。我很久以前就为上游做出了贡献,但我真的很想使用(并提供一个Python接口;-)新功能...但是,为此,我需要一个C编译器和支持库,它将为我提供OpenMP功能...!

另外,我需要在Ubuntu 10.4 上使用它们仍然运行Mac OS X 10.5的旧版Intel Mac(以避免失去与我的旧版 PowerPC Macs的兼容性 - 但我并没有想要在这些PowerPC Mac上获得OpenMP支持的方式,当然我只是喜欢......基于Intel的产品就足够了! - 。)。

我完全计划根据需要进行黑客攻击(当我让它们正常工作时,当然会向上游提供补丁,因为我已经对我已经攻击的所有开源代码做了很长时间,包括过去的DDS本身; - )关于DDS本身,pydds以及它们的任何辅助功能,但是 ......正因为如此,我只是想避免为了获得OpenMP而做更多的“初步”黑客攻击在我需要的平台上首先支持(对于C)! - )。

那么,是否(理想情况下! - )任何我只能apt-get install用于Ubuntu 10.4,以及磁盘映像或Darwinport或任何Mac OS X 10.5,至少在英特尔处理器上,我可以用来获取开始吧...?我当然准备根据需要从源代码,补丁源等构建,但我宁愿不拥有,如果我可以避免它...... ;-)

2 个答案:

答案 0 :(得分:5)

在Mac OSX 10.5上,看起来 -fopenmp 不是有效选项(gcc版本4.0.1)。

$ gcc -fopenmp foo.c 
cc1plus: error: unrecognized command line option "-fopenmp"

但是,我能够在10.6(gcc版本4.2.1)上编译和运行。所以,看起来你唯一的选择是1)升级到10.6,或2)自定义编译gcc版本。

(附注:10.5上的gcc手册页没有提到 -fopenmp ,其中10.6就是这样。)

答案 1 :(得分:3)

根据Garrett Hyde的建议,Mac OS 10.5附带的gcc版本太旧,无法支持OpenMP。但没问题。

安装MacPorts(http://trac.macports.org/wiki/InstallingMacPorts) - 您需要安装Xcode,然后安装X11,如果您仍然可以从Apple网站获取这两个Xcode还没有安装媒体。然后一旦设置了macports,“sudo port install gcc45”(或至少44)并等待一段时间,以便构建gcc及其所有依赖项。任何gcc 4.4.x或更高版本都将拥有非常可靠的OpenMP 3.0支持。然后你应该好好去。

正如评论中指出的那样,Ubuntu 10.4附带的股票gcc也可以开箱即用。