OpenMP support on OSX 10.11, gcc errors with “file

2019-02-20 07:32发布

问题:

I have been using gcc version 5.3.0. It says that it comes with openmp support. But every time when I compile a program using either gcc [by terminal] or via xCode 7, I get same error, "file omp.h not found". I have searched too much on this issue and tried almost everything I found.

  • First I tried to locate omp.h on my mac. I found some files; then in header file, I used that specific location of omp.h but no help [it gave me linker error].
  • I installed gcc version 6.0 (pre-release) but no help. I tried changing C_INCLUDE_PATH [which is now, and previously set to none] but that didn't helped me as well.
  • I reinstalled clang-omp but no help.
  • I am using llvm compiler version 7.0. Although i have installed clang-omp, there is no omp.h in my /usr/include/*

回答1:

I changed the compiler and now I am able to run it. [It was issue of clang, which I couldn't solve]. I am a student and Intel is giving Intel Parallel Studio 1 year licence for free to students. So I downloaded, and installed it. In xCode, under build settings, I set my compiler to 'Intel C/C++ compiler' and in parallalization, I turned it to 'yes'. That was it. Then it compiled successfully. But, note that you won't be using header file 'omp.h' anymore. By the way, I am still looking for answers, just to know what I was doing wrong.



回答2:

You can install 'clang-omp' or 'gcc' (corresponds to GCC 5.3 right now) packages via Homebrew, both of which support OpenMP.

The built in GCC is based upon GCC 4.2.1 abs uses LLVM back end via Dragonegg, which is why it doesn't support OpenMP.

As noted already, Intel compilers support OpenMP on Mac.

I don't use Xcode editor so I don't know how to use any of these from there, but all will work from terminal just as they do on Linux.



回答3:

the compiler on the mac is clang (based on llvm 3.5) which does not support openmp. you can try install llvm/clang/openmp from source or using prebuild binaries, but I must admit it does not work as advertised for me… edit unless you use the -fopenmp=libomp flag.