在Mac OS X 10.11上安装OpenMP

如何让OpenMP在Mac OSX 10.11上运行,以便我可以通过终端执行脚本?

我已经安装了OpenMP: brew install clang-omp

当我运行时,例如: gcc -fopenmp -o Parallel.b Parallel.c以下表达式返回: fatal error: 'omp.h' file not found

我也尝试过: brew install gcc --without-multilib但不幸的是,这最终返回了以下内容(在首次安装一些依赖项之后):

 The requested URL returned error: 404 Not Found Error: Failed to download resource "mpfr--patch" 

任何推荐的工作?

在mac上,命令gcc是Clang的符号链接。 因此,通过调用gcc -fopenmp -o your_program your_program.c您实际上正在使用Clang,它到目前为止还没有内置的OpenMP支持。

根据这篇文章,较新版本的Clang确实支持OpenMP(您还可以在其中找到有关如何设置它的说明)。

另一方面,如果您仍想使用gcc,我可以指导您完成适合我的步骤。

  1. 用brew安装gcc。 你使用的命令应该工作: brew install gcc --without-multilib

    或者,如果brew说你已经安装了gcc,你可以尝试brew reinstall gcc --without-multilib

    您可能已经注意到,如果您未指定--without-multilib brew警告您OpenMP可能无法正常工作。

  2. 找到新安装的gcc的位置。 Brew将版本号附加到gcc,以便它不与命令行工具安装的版本号冲突。 您将在usr/local/bin找到符号链接。 在我的情况下,它是usr/local/bin/gcc-5 。 如果右键单击并选择“显示原始”,则应在/usr/local/Cellar/gcc/5.3.0/bin/gcc-5显示gcc-5可执行文件(版本号可能不同)。

  3. 现在您需要告诉您的系统。 调用编译器时,bash默认情况下会查看/usr/bin ,而不是/usr/local/bin 。 您需要将此目录添加到$ PATH 。 使用以下命令可以轻松完成此操作:

    PATH=/usr/local/bin:$PATH

  4. 现在,您应该能够使用以下命令启用OpenMP进行编译:

    gcc-5 -fopenmp -o your_program your_program.c

    备注:gcc-5是我安装的版本,你的可能会有所不同。

  • 安装clang-omp

     brew install clang-omp 
  • 确保你使用xcode命令行工具

     xcode-select --install 
  • 我在运行示例openmp代码时遇到了一个错误

     /usr/local/opt/libiomp/include/libiomp/omp.h:139:21: error: expected ';' after top level declarator extern void __ KAI_KMPC_CONVENTION kmp_set_stacksize_s (size_t); 
  • 只需从文件中删除__和KAI之间存在的一个空格即可

  • 现在使用命令

     clang-omp -fopenmp helloopenmp.c 

    并运行以下代码

     #include  #include  int main() { #pragma omp parallel printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads()); } 
  • 您应该获得与此类似的输出

     Hello from thread 3, nthreads 4 Hello from thread 2, nthreads 4 Hello from thread 0, nthreads 4 Hello from thread 1, nthreads 4 
  • 使用OS X 10.11.3并于2016年2月18日进行brew更新

  1. 使用brew安装gcc。

     brew install gcc 
  2. 检查gcc是否已安装。

     $which g++-7 /usr/local/bin/g++-7 
  3. 更改cmake cxx编译器。

     cmake -DCMAKE_CXX_COMPILER=g++-7 make 

也许这会对你有所帮助。

安装gcc后:

 brew install gcc --without-multilib 

和出口路径:

 export PATH=/usr/local/bin:$PATH 

您可能需要导出CC,这对我有用:

 export CC=/usr/local/bin/gcc 

这可能是gcc-7,或者其他什么。

 brew install cmake brew install gcc --without-multilib cmake -DCMAKE_CXX_COMPILER=g++-6 .. make -j 

macOS High Sierra版本10.13.6(17G65)

1.安装gcc

brew reinstall gcc --without-multilib

2.编译

gcc-8 -Wall -fopenmp your-parallel-program.c

请注意gcc-8手表的版本 brew安装,你的可能是gcc-7gcc-9

==> Pouring gcc-8.2.0.high_sierra.bottle.1.tar.gz 🍺 /usr/local/Cellar/gcc/8.2.0: 1,495 files, 344.8MB

而已!