并行计算 Clion配置OpenMP

        这篇文章主要是利用Clion来配置OpenMP的运行环境,当然其他编译器也是可以的,但是对比其他编译器,小编觉得还是Clion的配置过程更加简单。

下面就是配置OpenMP的大致过程:

目录

下载

配置CMakeList.txt文件

编写一个测试程序

在运行踩的坑


下载

MinGW64

CLion

配置CMakeList.txt文件

# openMP 配置
FIND_PACKAGE(OpenMP REQUIRED)
if (OPENMP_FOUND)
    message("OPENMP FOUND")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif ()

在CMakeList.txt文件中加入上述代码,重新加载一下cmake文件就可以运行了。

编写一个测试程序

#include 
#include "omp.h"
using namespace std;
int main(int argc, char **argv) {
    //设置线程数,一般设置的线程数不超过CPU核心数,这里开4个线程执行并行代码段
    omp_set_num_threads(4);
#pragma omp parallel
    {
        cout << "Hello" << ", I am Thread " << omp_get_thread_num() << endl;
    }
}

 运行结果:

并行计算 Clion配置OpenMP_第1张图片

在运行踩的坑

我在刚开始运行的时候,本以为配置完成后,可以开开心心的运行测试程序,可没想到上来就给我报错, error: expected declaration before '}' token },我一直以为是我的程序写的有问题,一遍一遍的进行测试,可没想到是一个 "{" 搞的鬼。

#pragma omp parallel {
        cout << "Hello" << ", I am Thread " << omp_get_thread_num() << endl;
    }

这个语句是错的,谨记,谨记,谨记(重要的事情说三遍)。#pragma后 “{” 一定要换行。

#pragma omp parallel 
    {
        cout << "Hello" << ", I am Thread " << omp_get_thread_num() << endl;
    }

改成这样就可以正常运行了。

你可能感兴趣的:(并行计算设计与导论,并行计算,openmp,c++,visual,studio)