前言

这学期选修了并行与分布式计算导论,需要编写一些简单的并行程序,并分析并行算法的优劣,由于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 compilerc++ compiler
1951513317.png
有关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

成功!

最后修改:2020 年 10 月 11 日
如果觉得我的文章对你有用,请随意赞赏