I am currently studying to become a computer engineer and I need to work with OpenMP. After some research, I'm still having trouble installing it (#include <omp.h>
is still not recognized). I tried libomp and llvm (with Homebrew), but I must have made a mistake along the way. Has anyone been able to use OpenMP on mac M1?
On macOS 13.2.1 and up-to-date Xcode command line toolset, on M2 chip I'm able to use OpenMP based on libomp from Homebrew (brew install libomp) BUT with the Apple provided clang, by running:
clang -Xclang -fopenmp -L/opt/homebrew/opt/libomp/lib -I/opt/homebrew/opt/libomp/include -lomp omptest.c -o omptest
Where omptest.c is given as:
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
// Beginning of parallel region
#pragma omp parallel
{
printf("Hello World... from thread = %d\n",
omp_get_thread_num());
}
// Ending of parallel region
}
Summing up, if you don't like, you don't need to install full LLVM or GCC from Homebrew. Only libomp is needed and you should be good to go!
PS. The output of running omptest on my machine (M2 Max) is:
./omptest
Hello World... from thread = 0
Hello World... from thread = 8
Hello World... from thread = 4
Hello World... from thread = 2
Hello World... from thread = 3
Hello World... from thread = 11
Hello World... from thread = 1
Hello World... from thread = 10
Hello World... from thread = 7
Hello World... from thread = 9
Hello World... from thread = 6
Hello World... from thread = 5
I know this is an older thread, but this is what worked for me on an M2 MacBook Pro using C++, and g++-12:
Install Brew: https://brew.sh/
Once Brew is installed, install GCC with the following Terminal command:
brew install gcc
Once GCC is installed, use the following command make your system aware of the GCC stuff, keeping in mind the
12.2.0
folder may change as time goes on:PATH=/opt/homebrew/Cellar/gcc/12.2.0/bin:$PATH
I found I had to append the actual GCC file path for it to work. For some reason, it didn't add any aliases/symlinks to /usr/local/bin
like it did on my older Intel MacBook Pro.
And that should be all you need! For compiling C++ code with OpenMP:
g++-12 -fopenmp progName.cpp -o prog
Note that the g++ part of the command will change with time. So check what version of g++ is installed with Brew. if the version changes from 12, then change the part of the Terminal command (e.g. g++-13
, or something like that).
Hope this helps someone out!
A simple approach is to use brew https://brew.sh/ to install GCC or LLVM (clang), and then use that compiler. You need to tread carefully, though, since the MacOS environment includes X86 emulation which can be confusing.
https://cpufun.substack.com/p/setting-up-the-apple-m1-for-native might help, though it's now nearly a year old...
% which clang
. If it's not the brew installed one, then fix your PATH
so that it is and try again. –
Sivas M1 chip seems doesn't install llvm in the proper location.
brew install llvm
cd /opt/homebrew/opt/libomp/lib
if libomp.dylib is in the folder /opt/homebrew/opt/libomp/lib:
cd /usr/local/lib
sudo ln -s /opt/homebrew/opt/libomp/lib/libomp.dylib libomp.dylib
'/usr/local/lib/libomp.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
. Just linking the file does not seem to fix it. –
Vertebral © 2022 - 2024 — McMap. All rights reserved.