OpenMP学习笔记

OpenMP学习笔记

OpenMP是目前常见的C++多线程并行库,本笔记主要记录对于OpenMP的一些学习经验,平台为ubuntu

1. OpenMP编译

本节以test.C为例,说明如何编译使用OpenMP的c++代码

  1. g++编译选项
1
g++ -fopenmp test.C -o testDemo
  1. CMake编译
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cmake_minimum_required(VERSION 3.5)
project(testDemo)

set(CMAKE_CXX_STANDARD 14)
# set(CMAKE_VERBOSE_MAKEFILE ON)
# set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_BUILD_TYPE "Release")

# set(CMAKE_CXX_FLAGS "-O3 -Wall -DOPENMP")

# openMP settings
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}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif ()

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")

add_executable(${PROJECT_NAME} ./test.C)

需要注意的是:CMake也可以直接通过设置CMAKE_CXX_FLAGS,添加-fopenmp实现编译OpenMP的c++代码,但推荐使用如上的FIND_PACKAGE方法

2. OpenMP常用方法

待补充

3. OpenMP高级方法

待补充


OpenMP学习笔记
https://izhuhaoran.github.io/2023/01/24/CPP_Note/OpenMP学习笔记/
作者
zhuhr
发布于
2023年1月24日
许可协议