????????这篇文章主要是利用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 <iostream>
#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;
}
}
?运行结果:
在运行踩的坑
我在刚开始运行的时候,本以为配置完成后,可以开开心心的运行测试程序,可没想到上来就给我报错,?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;
}
改成这样就可以正常运行了。
|