Installing OpenMP on Mac OS X 10.11

前端 未结 6 1841
悲&欢浪女
悲&欢浪女 2020-11-30 03:35

How can I get OpenMP to run on Mac OSX 10.11, so that I can execute scripts via terminal?

I have installed OpenMP: brew install clang-omp

相关标签:
6条回答
  • 2020-11-30 03:47
    brew install cmake
    brew install gcc --without-multilib
    cmake -DCMAKE_CXX_COMPILER=g++-6 .. 
    make -j 
    
    0 讨论(0)
  • 2020-11-30 03:48

    macOS High Sierra Version 10.13.6 (17G65)

    1. Install gcc

    brew reinstall gcc --without-multilib

    2. Compile

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

    Notice the gcc-8 watch the version brew installs, yours may be gcc-7 or gcc-9

    ==> Pouring gcc-8.2.0.high_sierra.bottle.1.tar.gz

    0 讨论(0)
  • 2020-11-30 03:49

    After install gcc:

    brew install gcc --without-multilib
    

    and export PATH:

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

    You may need to export CC, which works for me:

    export CC=/usr/local/bin/gcc
    

    This maybe gcc-7, or whatever.

    0 讨论(0)
  • 2020-11-30 03:58
    1. Install gcc using brew.

      brew install gcc
      
    2. Check gcc is installed.

      $which g++-7
      /usr/local/bin/g++-7
      
    3. Change cmake cxx compiler.

      cmake -DCMAKE_CXX_COMPILER=g++-7
      make
      

    Maybe this will help you.

    0 讨论(0)
  • 2020-11-30 04:01
    • install clang-omp

      brew install clang-omp
      
    • make sure you xcode command line tool

      xcode-select --install
      
    • I actually had one error while running a sample openmp code

      /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);
      
    • Just remove one space that is present between __ and KAI from the file

    • Now use the command

      clang-omp -fopenmp helloopenmp.c
      

      and run the following code

      #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());
      }
      
    • You should get output similar to this

      Hello from thread 3, nthreads 4
      Hello from thread 2, nthreads 4
      Hello from thread 0, nthreads 4
      Hello from thread 1, nthreads 4
      
    • Worked on OS X 10.11.3 and with brew update dated 18th Feb 2016

    0 讨论(0)
  • 2020-11-30 04:04

    On a mac, the command gcc is a symlink to Clang. So by calling gcc -fopenmp -o your_program your_program.c you are in fact using Clang, which until now has not had built-in support for OpenMP.

    The newer versions of Clang do have support for OpenMP according to this post (where you can also find instructions on how to set it up).

    On the other hand, if you still want to use gcc I can guide you through the steps that worked for me.

    1. Install gcc with brew. The command you used should work: brew install gcc --without-multilib

      Alternatively, if brew says that you already have gcc installed you can try brew reinstall gcc --without-multilib

      As you may have noted, if you don't specify --without-multilib brew warns you that OpenMP may not work.

    2. Find the location of the newly installed gcc. Brew appends the version number to gcc so that it does not conflict with the one installed by Command Line Tools. You will find the symlink in usr/local/bin. In my case it's usr/local/bin/gcc-5. If you right-click and chose "Show original" it should show the gcc-5 executable in /usr/local/Cellar/gcc/5.3.0/bin/gcc-5 (version numbers may differ).

    3. Now you need to tell your system about it. When calling a compiler your bash will look into /usr/bin by default and not in /usr/local/bin. You need to add this directory to your $PATH. This can be easily done with the command:

      PATH=/usr/local/bin:$PATH

    4. Now you should be able to compile with OpenMP enabled using:

      gcc-5 -fopenmp -o your_program your_program.c

      Remark: gcc-5 is the version I have installed, yours might differ.

    0 讨论(0)
提交回复
热议问题