前言
这学期选修了并行与分布式计算导论,需要编写一些简单的并行程序,并分析并行算法的优劣,由于Mac
上默认的clang
不支持OpenMP
,便谷歌了一下怎么配置。
在搜索的过程中,我发现许多教程都很老旧,例如很多教程里推荐使用下面这条命令
brew install gcc --without-multilib
来安装gcc6
,但在实践过程中我发现,这条命令现在已经不可行了。并且现在但最新版本是gcc8
,我猜想可能使用下面这条命令有可能成功
brew install gcc@6 --without-multilib
但我并没有尝试。大家有兴趣可以试一下。
解决方案
安装gcc
上面说到那条命令在如今已经不可行,但是,去掉最后的附加项肯定还是可以运行的,于是
brew update
brew install gcc
就安装好了最新的gcc-8
有关brew
的安装和替换源加速,参见
设置Clion
编译器为自己下载的gcc
打开CLion
软件,同时按下command
和,
键,调出软件偏好设置,在构建,执行,部署
目录下的工具链
中更改默认的c compiler
和c++ compiler
有关CLion
的汉化,参见
编辑项目的CMakeLists.txt
在其中加入
FIND_PACKAGE(OpenMP REQUIRED)
if(OPENMP_FOUND)
set(CMAKE_C_FLAGS "${OpenMP_C_FLAGS}")
endif()
测试运行并行程序
#include <omp.h>
#include <stdio.h>
int main(){
#pragma omp parallel for
for (int i = 0; i < 10; ++i){
printf("%d\n", i);
}
printf("\n");
return 0;
}
输出
1
3
2
5
4
7
9
0
6
8
成功!