在Mac OS X 10.11上安装OpenMP
如何让OpenMP在Mac OSX 10.11上运行,以便我可以通过终端执行脚本?
我已经安装了OpenMP: brew install clang-omp
。
当我运行时,例如: gcc -fopenmp -o Parallel.b Parallel.c
以下表达式返回: fatal error: 'omp.h' file not found
我也尝试过: brew install gcc --without-multilib
但不幸的是,这最终返回了以下内容(在首次安装一些依赖项之后):
The requested URL returned error: 404 Not Found Error: Failed to download resource "mpfr--patch"
任何推荐的工作?
在mac上,命令gcc是Clang的符号链接。 因此,通过调用gcc -fopenmp -o your_program your_program.c
您实际上正在使用Clang,它到目前为止还没有内置的OpenMP支持。
根据这篇文章,较新版本的Clang确实支持OpenMP(您还可以在其中找到有关如何设置它的说明)。
另一方面,如果您仍想使用gcc,我可以指导您完成适合我的步骤。
-
用brew安装gcc。 你使用的命令应该工作:
brew install gcc --without-multilib
或者,如果brew说你已经安装了gcc,你可以尝试
brew reinstall gcc --without-multilib
您可能已经注意到,如果您未指定
--without-multilib
brew警告您OpenMP可能无法正常工作。 -
找到新安装的gcc的位置。 Brew将版本号附加到gcc,以便它不与命令行工具安装的版本号冲突。 您将在
usr/local/bin
找到符号链接。 在我的情况下,它是usr/local/bin/gcc-5
。 如果右键单击并选择“显示原始”,则应在/usr/local/Cellar/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是我安装的版本,你的可能会有所不同。
-
安装clang-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);
-
只需从文件中删除__和KAI之间存在的一个空格即可
-
现在使用命令
clang-omp -fopenmp helloopenmp.c
并运行以下代码
#include
#include int main() { #pragma omp parallel printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads()); } -
您应该获得与此类似的输出
Hello from thread 3, nthreads 4 Hello from thread 2, nthreads 4 Hello from thread 0, nthreads 4 Hello from thread 1, nthreads 4
-
使用OS X 10.11.3并于2016年2月18日进行brew更新
-
使用brew安装gcc。
brew install gcc
-
检查gcc是否已安装。
$which g++-7 /usr/local/bin/g++-7
-
更改cmake cxx编译器。
cmake -DCMAKE_CXX_COMPILER=g++-7 make
也许这会对你有所帮助。
安装gcc后:
brew install gcc --without-multilib
和出口路径:
export PATH=/usr/local/bin:$PATH
您可能需要导出CC,这对我有用:
export CC=/usr/local/bin/gcc
这可能是gcc-7,或者其他什么。
brew install cmake brew install gcc --without-multilib cmake -DCMAKE_CXX_COMPILER=g++-6 .. make -j
macOS High Sierra版本10.13.6(17G65)
1.安装gcc
brew reinstall gcc --without-multilib
2.编译
gcc-8 -Wall -fopenmp your-parallel-program.c
请注意gcc-8手表的版本 brew安装,你的可能是gcc-7或gcc-9
==> Pouring gcc-8.2.0.high_sierra.bottle.1.tar.gz 🍺 /usr/local/Cellar/gcc/8.2.0: 1,495 files, 344.8MB
而已!