我有一个专有的量子力学库(>150,000行)C++代码,依赖于OpenMP进行平行化。这段代码曾经在Xcode 4.6和它真正的GCC编译器中编译得很好,但是Xcode 5附带的LLVM编译器似乎不支持OpenMP。我的代码是在Mac上开发的,但需要移植到非Apple硬件,例如大规模并行的超级计算机,因此无法重写代码。有谁知道可以使用合适的编译器?非常感谢任何帮助。
当我测试 hpc.sourceforge.net 时,我从我的评论中回来,它对我来说就像一个魅力。
只需解压缩存档,如前所述:
sudo tar -xvf gcc-4.8-bin.tar -C /
如果需要,请更新您的 .profile 以默认使用 gcc 的 hpc 编译版本。
使用选项 -fopenmp 编译程序,然后将其与选项 -lgomp 链接。
"有谁知道可以使用合适的编译器?"
MacOS 上的英特尔编译器支持 OpenMP,就像在其他平台上一样。http://software.intel.com/en-us/intel-software-development-products-for-mac-os-x
当然,它们要花钱,但可能值得。
(完全披露:我在编译器使用的 OpenMP 运行时上为英特尔工作)
请参阅 Xcode 中的 Clang + OpenMP 设置。步骤基本上是:
- 安装自制软件。
- 使用
brew install llvm
安装 llvm 。
"构建设置",然后是"编辑器"»"添加构建设置" - »"添加用户定义的设置",键为
CC
,值为/usr/local/opt/llvm/bin/clang
。 - 搜索"启用模块"并将其关闭。
- 将
/usr/local/opt/llvm/lib
添加到"库搜索路径"。 - 将
/usr/local/opt/llvm/lib/clang/7.0.1/include
添加到"标题搜索路径"。(版本号可能因安装而异。 - 将
-fopenmp
编译标志添加到"其他 C 标志"。 - 关闭"在构建时启用索引功能"。
- 将
/usr/local/opt/llvm/lib/libiomp5.dylib
添加到"构建阶段"»"将二进制文件与库链接"。