OpenMP简介

01 OpenMP简介

OpenMP(开放式多处理)是一种应用程序编程接口(API),支持C,C ++和Fortran中的多平台共享内存 多 处 理 ( C P U ) {\color{blue}多处理(CPU)} (CPU)编程,适用于大多数平台,指令集架构和操作系统,包括Solaris,AIX,HP-UX,Linux,macOS和Windows。它由一组编译器指令,库例程和影响运行时行为的环境变量。共享内存并行编程模式。
注意:官方声明中说的是对多cpu的支持,而不仅仅是多核。
参考维基百科: https://en.wikipedia.org/wiki/OpenMP

OpenMP官网:https://www.openmp.org/
2018年11月8日,OpenMP已经发布了5.0版本。
可以在这个页面下载官方详细的文档:https://www.openmp.org/specifications/
比如:https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5.0.pdf

微软关于OpenMP的在线文档:
中文:https://docs.microsoft.com/zh-cn/cpp/parallel/openmp/openmp-in-visual-cpp?view=vs-2019
英文:https://docs.microsoft.com/en-us/cpp/parallel/openmp/openmp-in-visual-cpp?view=vs-2019

微软的在线文档已OpenMP2.0为基础。
指令
示例

OpenMP函数包含在C / C ++中标记为omp.h的头文件中。
vs开发基于OpenMP的项目需要在:
项目的配置属性==>C/C++>语言>OpenMP支持中勾选"是(/openmp)"
gcc需要带参数"-fopenmp"

几个介绍稍微详细的blog:
OpenMP用法大全(个人整理版)
[并行计算] 2. OpenMP简介
[并行计算] 2. OpenMP简介
(转)OpenMP: OpenMP编程指南
(原)OpenMP: OpenMP编程指南
Augusdi的OpenMP介绍(详细)

02 Visual Studio 2019(16.1.5)为止,还不支持openmp3.0以后的特性

openmp3.0中的task(任务,可动态配置)在多线程中是很重要的。
openmp4.0中的
simd(向量化,单指令多数据),在密集性计算优化中很有用,比如挖矿类型的计算。
target(异构计算相关系列指令),可以直接在openmp中使用gpgpu并行。
openmp4.5和5.0加入了很多对simd及gpu支持的深化内容。

03 一些比较老的demo

《多核异构并行计算 OpenMP 4.5 C/C++篇》语法介绍比较详细,雷洪编著的。

学习和使用openmp,应该考虑使用gcc或者clang编译器,最好不要使用Visual Studio,因为目前只支持到OpenMP2.0版本。

https://github.com/5455945/cpp_demo/blob/master/OpenMP/src/OpenMP01.01.cpp

你可能感兴趣的:(杂项,MPI,c++)