openMP 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
openMP 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 Apache-2.0
开发语言 C/C++
操作系统 跨平台
软件类型 开源软件
开发厂商
地区 不详
提 交 者 不详
适用人群 未知
收录时间 2008-11-17

软件简介

OpenMP是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多线程程序设计的一套编译指令 (Compiler Directive)。OpenMP支持的编程语言包括C语言、C++和Fortran;而支持OpenMP的编译器包括Sun Compiler,GNU Compiler和Intel Compiler等。OpenMP提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。当选择忽略这些pragma,或者编译器不支持OpenMP 时,程序又可退化为通常的程序(一般为串行),代码仍然可以正常运作,只是不能利用多线程来加速程序执行。

OpenMP提供的这种对于并行描述的高层抽象降低了并行编程的难度和复杂度,这样程序员可以把更多的精力投入到并行算法本 身,而非其具体实现细节。对基于数据分集的多线程程序设计,OpenMP是一个很好的选择。同时,使用OpenMP也提供了更强的灵活性,可以较容易的适 应不同的并行系统配置。线程粒度和负载平衡等是传统多线程程序设计中的难题,但在OpenMP中,OpenMP库从程序员手中接管了部分这两方面的工作。

但是,作为高层抽象,OpenMP并不适合需要复杂的线程间同步和互斥的场合。

OpenMP的另一个缺点是不能在非共享内存系统(如计算机集群)上使用。在这样的系统上,MPI使用较多。

展开阅读全文

评论 (1)

加载中
mpi #openMP#
2015/04/23 18:56
回复
举报
更多评论
发表了资讯
2016/03/27 00:00

OpenMP 4.5 发布,多核编程框架

OpenMP 4.5 发布了,OpenMP是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多线程程序设计的一套编译指令 (Compiler Directive)。OpenMP支持的编程语言包括C语言、C++和Fortran;而支持OpenMP的编译器包括Sun Compiler,GNU Compiler和Intel Compiler等。OpenMP提供了对并行...

7
28
发表了资讯
2015/05/12 00:00

clang/llvm 已经完全实现 OpenMP 3.1 支持

OpenMP 3.1 在 clang/llvm 编译器上的功能完全实现!OpenMP 3.1标准于2011年获得批准,它支持几乎所有的跨核和多处理器系统,并且有良好的性能与可移植性。 OpenMP 是由 OpenMP Architecture Review Board 牵头提出的,并已被广泛接受的,用于共享内存并行系统的多线程程序设计的一套编译指令 (Compiler Directive)。Ope...

18
14
发表了资讯
2013/07/25 00:00

多核编程框架 OpenMP 4.0 规范发布

OpenMP 4.0 规范发布了,这是 OpenMP 标准语言规范的一次主要的升级,除了很多主要增强外,该版本还提供了全新的机制用来描述数据和计算在不同计算机之间移动的代码。此外该版本新增对加速器、SIMD 编程以及使用线程亲和度实现更好优化。 OpenMP是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于...

3
27
发表了资讯
2009/04/06 00:00

Open MP 模板库20090405发布

OpenMP是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多线程程序设计的一套指导性注释(Compiler Directive)。OpenMP支持的编程语言包括C语言、C++和Fortran;OpenMP提供的这种对于并行描述的高层抽象降低了并行编程的难度和复杂度,这样程序员可以把更多的精力投入到并行算...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2018/06/15 18:18

OpenMP初探

OpenMP支持c、cpp、fortran,本文对比使用openmp和未使用openmp的效率差距和外在表现,然后讲解基础知识。 一、举例 1、使用OpenMP与未使用OpenMP的比较。 OpenMP是使用多线程的接口。 以c语言程序举例,即ba.c文件如下: #include <omp.h> #include <stdio.h> #include <stdlib.h> #include <windows.h> void Test...

0
0
发表了博客
2019/06/01 18:37

OpenMP用法大全

OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Fortran。OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计。编译器根据程序中添加的pragma指令,自动将程序并行处理,使用OpenMP降低了并行编程的难度和复杂度。当编译器不支持OpenMP时...

0
0
发表了博客
2013/03/19 07:59

OpenMP基础东西

经历了一段时间的对OpenMP的研究之后,总结了OpenMP的一些基本语,和大家共享一下,相互学习 parallel for也是用在一个循环之前表示for循环的代码将被多个线程并行执行 sections 用在可能会被并行执行的代码段之前 parallel sections critical 用在一段代码临界区之前 single用在一段只被单个线程执行的代码之前,表示后...

0
4
发表了博客
2019/10/13 13:14

OpenMP fortran 学习

参考自TAMU的PPThttps://people.math.umass.edu/~johnston/PHI_WG_2014/OpenMPSlides_tamu_sc.pdf 什么是OpenMP 在C、C++和FORTRAN中用于编写共享内存并行程序的事实上的标准API OpenMP API 由以下组成: 编译器指令Compiler Directives 运行时 子程序/函数 Runtime subroutines/functions 环境变量 Environment variab...

0
0
发表了博客
2019/03/19 15:35

openmp入门总结

Ref: https://wdxtub.com/2016/03/20/openmp-guide/ 简介 这门课作为 ECE 中少有的跟计算机科学相关的课,自然是必上不可。不过无论是 OpenMP 还是 CUDA,对于平时极少接触并行编程的我来说,都是十分吃力的,第一次作业的 OpenMP 编程已经让意识到了个中的差别,当然,在单个核心的计算速度基本达到极致的现在,掌握并行...

0
0
发表了博客
2019/12/03 12:26

openMP---第一篇

openMP 处理for循环 ////////////////////////////////////////////////////////////////////////////////////////////// template <typename PointInT, typename PointOutT> void pcl::MovingLeastSquares<PointInT, PointOutT>::performProcessing (PointCloudOut &output) { // Compute the number of coeffici...

0
0
发表了博客
2019/11/07 16:44

Openmp多线程编程练习

环境配置 一般使用Visual Studio2019来作为openmp的编程环境 调试-->属性-->C/C++-->所有选项-->Openmp支持改为 是(可以使用下拉菜单) 严重性 代码 说明 项目 文件 行 禁止显示状态 禁止显示状态 错误 C2338 C++/CLI、C++/CX 或 OpenMP 不支持两阶段名称查找;请使用 /Zc:twoPhase- 多线程 C:\Users\tonyson_in_the_rain...

0
0
发表了博客
2019/11/07 16:45

Openmp多线程编程练习

环境配置 一般使用Visual Studio2019来作为openmp的编程环境 调试-->属性-->C/C++-->所有选项-->Openmp支持改为 是(可以使用下拉菜单) 严重性 代码 说明 项目 文件 行 禁止显示状态 禁止显示状态 错误 C2338 C++/CLI、C++/CX 或 OpenMP 不支持两阶段名称查找;请使用 /Zc:twoPhase- 多线程 C:\Users\tonyson_in_the_rain...

0
0
发表了博客
2018/02/20 14:27

OpenMP 简单的规约

▶ 简单的计算和规约 ● 第一种方法,将全局和的指针传入工作函数中进行加和,使用 critical 来控制临界区的访问 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <omp.h> 4 5 const int thread = 8; 6 7 void work(int* globalSum) 8 { 9 #pragma omp critical // 使用...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2015/02/05 21:33

跪求热心人帮忙编译C++源码

事情是这样的,我本身是一名java+伪前端,由于项目需要用到一个c++编写的工具,但是github上只有源码,木有exe。 我尝试了一下,发现完全不知道怎么编译。。。我甚至安装了vs 2010 也不知道怎么玩。。。 就30kb的小工具,真是愁死人呀! 以下是源码说明: word2vec ======== Word2Vec in C++ 11 See main.cc for buildin...

9
1
发表了问答
2013/12/06 12:27

咨询一下openMP性能问题

对于服务端,基于任务请求的 1:线程池处理 2:单线程+openMp 3:线程池+openMp 上面那个效率比较高? 同时问一下,openMp能对vertor指针进行并发吗?这个循环里会有删除出现

2
0
发表了问答
2012/08/06 14:17

ARM支持openMP吗?

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
1 评论
78 收藏
分享
返回顶部
顶部