在Mac OS X 10.11上安装OpenMP

在Mac OS X 10.11上安装OpenMP,c,gcc,openmp,C,Gcc,Openmp,如何让OpenMP在Mac OSX 10.11上运行,以便通过终端执行脚本 我已安装OpenMP:brew安装clang omp 例如,当我运行时:gcc-fopenmp-o Parallel.b Parallel.c以下表达式返回:致命错误:“找不到omp.h”文件 我也尝试过:brew安装gcc——没有multilib,但不幸的是,这最终返回了以下结果(在首次安装一些依赖项之后): 有什么推荐的解决方法吗?在mac上,gcc命令是指向Clang的符号链接。因此,通过调用gcc-fopenmp

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

我已安装OpenMP:
brew安装clang omp

例如,当我运行时:
gcc-fopenmp-o Parallel.b Parallel.c
以下表达式返回:
致命错误:“找不到omp.h”文件

我也尝试过:
brew安装gcc——没有multilib
,但不幸的是,这最终返回了以下结果(在首次安装一些依赖项之后):


有什么推荐的解决方法吗?

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

根据post(您也可以在那里找到关于如何设置OpenMP的说明),较新版本的Clang确实支持OpenMP

另一方面,如果您仍然想使用gcc,我可以指导您完成对我有用的步骤

  • 使用brew安装gcc。您使用的命令应该可以工作:
    brew install gcc--without multilib

    或者,如果brew说您已经安装了gcc,您可以尝试
    brew重新安装gcc——而不使用multilib

    正如您可能已经注意到的,如果未指定
    ——而不指定multilib,brew将警告您OpenMP可能无法工作

  • 查找新安装的gcc的位置。Brew将版本号附加到gcc中,以便它不会与命令行工具安装的版本号冲突。您将在
    usr/local/bin
    中找到符号链接。在我的例子中,它是
    usr/local/bin/gcc-5
    。如果右键单击并选择“Show original”,则应在
    /usr/local/ceral/gcc/5.3.0/bin/gcc-5
    中显示gcc-5可执行文件(版本号可能不同)

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

    PATH=/usr/local/bin:$PATH

  • 现在,您应该能够使用以下方式在启用OpenMP的情况下进行编译:

    gcc-5-fopenmp-o your_program your_program.c

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

    • 安装叮当作响的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);
      
    • 只需从文件中删除_uu和KAI之间的一个空格

    • 现在使用命令

      clang-omp -fopenmp helloopenmp.c
      
      并运行以下代码

      #include <omp.h>
      #include <stdio.h>
      int main() {
          #pragma omp parallel
          printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
      }
      
    • 在OS X 10.11.3上工作,brew更新日期为2016年2月18日

    安装gcc后:

    brew install gcc --without-multilib
    
    和导出路径:

    export PATH=/usr/local/bin:$PATH
    
    您可能需要导出CC,它适用于我:

    export CC=/usr/local/bin/gcc
    
    这可能是gcc-7,或者别的什么

  • 使用brew安装gcc

    brew install gcc
    
  • 检查是否安装了gcc

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

    cmake -DCMAKE_CXX_COMPILER=g++-7
    make
    
  • 也许这会对您有所帮助。

    macOS High Sierra版本10.13.6(17G65) 1.安装gcc
    brew重新安装gcc——不带multilib

    2.编撰
    gcc-8-Wall-fopenmp您的并行程序.c

    请注意,gcc-8观看brew安装的版本,您的可能是gcc-7或gcc-9

    
    ==>浇注gcc-8.2.0.high_sierra.瓶子1.tar.gz
    
    默认情况下,GCC使用的是clangdistribution使用自制软件安装GCC。安装后,您可以编译代码,指定自制安装的GCC版本,并添加OpenMP标志。hello_world示例如下所示:

  • brew安装gcc

  • brew安装libomp

  • brew信息gcc

    gcc:稳定10.2.0(瓶装),头

    GNU编译器集合

  • 导出OMP_NUM_线程=8

  • 创建hello.c

  • #包括
    #包括
    内部主(空){
    #pragma-omp并行
    {
    printf(“你好,世界!\n”);
    }
    返回0;
    }
    
  • gcc-10-fopenmp你好,c-o你好
  • 执行:/你好
  • 你好,世界!
    你好,世界!
    你好,世界!
    你好,世界!
    你好,世界!
    你好,世界!
    你好,世界!
    你好,世界!
    
    我最近遇到了这个问题,并通过重新安装clang-omp修复了它。嗯,如果你想要clang-omp,你需要调用它,而不是GCCI。我现在正在尝试:下面是如何强制苹果的clang支持OpenMP:Works for me,当前版本是
    gcc-6
    。虽然如果您是第一次安装自制软件,那么$PATH修改是否应该写入您的.bashrc?文件在哪里?我收到一个错误,说没有输入文件。您指的是@sumneun哪些文件?如果您是指我给出的最后一行代码中的代码,那么第一个“Parallel”是输出可执行文件的名称,“Parallel.c”是要编译的源代码。您的终端必须与“Parallel.c”文件位于同一目录中,否则它就找不到了。@AlejandroDanielNoel我的问题是这些文件是从哪里来的,因为似乎没有安装gcc或LLVM只是尝试了这些步骤并收到了来自自制软件的以下通知:
    警告:gcc:此公式没有--without multilib选项,因此将被忽略clang omp已在commit c57e307中从homebrew/core中删除:clang omp:迁移到boneyard功能现在作为homebrew中LLVM的一部分提供。2019年不再需要添加<代码>--没有multilib
    。无效选项:---没有multilib此选项不会向现有答案和向上投票的答案添加任何值。答案已编辑
    brew install gcc
    
    $which g++-7
    /usr/local/bin/g++-7
    
    cmake -DCMAKE_CXX_COMPILER=g++-7
    make