所以,必须有人提出这样一个关于苹果硅的问题。长话短说,我需要编译并运行一个C++
代码,该代码在MBP M1 pro (使用基于arm的体系结构)上与和OpenMP混合运行。代码在典型的Intel x86体系结构上运行得非常好。而且,为了完成任务,Mac是蒙特利。此外,我不通过IDE (例如XCode)编译/运行,而是通过Makefile直接从终端编译/运行。
我还没有找到这样一个问题的明确答案。我试着自己设置一些东西,但这远远超出了我的舒适范围。此外,我相信回答这样一个问题将有助于将来使用这些Mac进行工作的开发人员:)
到目前为止,我知道Xcode附带的已安装的Clang编译器不支持OpenMP (-fopenmp
)或识别MPI (mpirun
)。因此,我安装了"brew“和"llvm
”版本,它应该通过OpenMP支持多线程指令。至于MPI库,我通过"libomp
“安装了"brew
”库。所有这些都应该在苹果的硅上运行。
但是,现在的环境到处都是,因为系统有两个Clang编译器:
通过brew预装Xcode (默认)
我不知道该怎么做。简单的解决方案可能是将编译器的路径更改为/opt/homebrew/
目录中的路径,但是我怀疑这可能会破坏系统中的许多东西。
如果你能帮忙,我(和其他许多人)会非常感激,以防有人以前有过类似的经验。
发布于 2022-09-03 10:37:57
要使用Homebrew的Clang,您需要设置路径和相应的编译器标志。
实际上,在安装llvm (或尝试brew info llvm
)之后,Homebrew已经给出了相应的建议和提示:
To use the bundled libc++ please add the following LDFLAGS:
LDFLAGS="-L/opt/homebrew/opt/llvm/lib -Wl,-rpath,/opt/homebrew/opt/llvm/lib"
llvm is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.
If you need to have llvm first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.zshrc
For compilers to find llvm you may need to set:
export LDFLAGS="-L/opt/homebrew/opt/llvm/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
您需要将这些标志转发到构建设置中,也就是说,如果您有来自CMake/ make /任何内容的构建文件,则需要确保使用或转发相应的标志。
https://stackoverflow.com/questions/71371314
复制相似问题