OpenMP - 维基百科,自由的百科全书

OpenMP - 维基百科,自由的百科全书

OpenMP

维基百科,自由的百科全书
跳转到: 导航、 搜索

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

目录

[隐藏]

  • 1 特色
  • 2 语法
    • 2.1 例子

      • 2.1.1 执行结果
  • 3 环境变量
    • 3.1 例子
  • 4 争议
  • 5 外部链接

[编辑] 特色

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

[编辑] 语法

#pragma omp <directive> [clause[[,] clause] ...]

[编辑] 例子

omp parallel 段内的程序代码由多线程来执行:

 int main(int argc, char* argv[]){#pragma omp parallel  printf("Hello, world.\n");return 1;}

[编辑] 执行结果

% gcc omp.c (由單線程來執行)
% ./a.out
Hello, world.% gcc -fopenmp omp.c (由多線程來執行)
% ./a.out
Hello, world.
Hello, world.
Hello, world.
Hello, world.

[编辑] 环境变量

OpenMP可以使用环境变量 OMP_NUM_THREADS以控制执行线程的数量。

[编辑] 例子

% gcc -fopenmp omp.c
% setenv OMP_NUM_THREADS 2(由2線程來執行)
% ./a.out
Hello, world.
Hello, world.

[编辑] 争议

作为高层抽象,OpenMP并不适合需要复杂的线程间同步和互斥的场合。 OpenMP的另一个缺点是不能在非共享内存系统(如计算机集群)上使用。在这样的系统上,MPI使用较多。

[编辑] 外部链接

posted on 2012-08-21 07:09 lexus 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/08/21/2648422.html

OpenMP - 维基百科,自由的百科全书相关推荐

  1. 维基百科,全世界的百科全书—Jimmy Wales

    1999年10月20日价值1250美元的32卷本<大英百科全书>全部上网,供人们免费查询与下载.这在当年是轰动一时的新闻.于是,Jimmy Wales(吉米?威尔士)诞生了建立一个真正&q ...

  2. 维基百科客户端android,维基百科 | F-Droid - Free and Open Source Android App Repository

    维基百科 自由在线百科全书的功能丰富的官方查看器 Android 版维基百科官方应用程序可用于查找,发现和浏览维基百科上的信息与知识.通过该应用,您可以快速搜索各种条目,阅读专题文章和图片,还有推荐和 ...

  3. android 印度语_为什么发展印度语维基百科至关重要

    android 印度语 1月15日,免费的在线百科全书Wikipedia庆祝成立15周年,用290多种语言撰写了3600万篇文章,达到了这个里程碑(仅英语Wikipedia便突破了500万篇文章标记 ...

  4. 【历史上的今天】10 月 24 日:1024 程序员节;中文维基百科上线;苹果发布 iPad mini

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 10 月 24 日,大概在 2014 - 2015 年间,中国互联网兴起了一个全新的概念:10 月 ...

  5. 维基百科怎么做创建词条?如何创建维基百科?海外营销_一秒推媒体平台

    做品牌出海推广的朋友都会知道维基百科,它在世界互联网领域的地位,就像百度百科在中国的 地位一样.因此,除了海外新闻稿.谷歌雅虎和其他SEO外,非常重要的网络推广是维基百科了. Wiki这个词来源于夏威 ...

  6. PyQt - 维基百科,自由的百科全书

    PyQt - 维基百科,自由的百科全书 PyQt 维基百科,自由的百科全书 跳转至: 导航. 搜索 PyQt 開發者 Riverbank Computing 穩定版本 4.9.5/ 2012年9月29 ...

  7. 向量空间模型 - 维基百科,自由的百科全书

    向量空间模型 - 维基百科,自由的百科全书 向量空间模型 - 维基百科,自由的百科全书 向量空间模型 维基百科,自由的百科全书 跳转到: 导航, 搜索 向量空间模型 (或者 词组向量模型) 作为向量的 ...

  8. typedef - 维基百科,自由的百科全书

    typedef - 维基百科,自由的百科全书 typedef - 维基百科,自由的百科全书 typedef 维基百科,自由的百科全书 跳转到: 导航, 搜索 在C和C++程式語言中,typedef是一 ...

  9. 探戈 - 维基百科,自由的百科全书

    探戈 - 维基百科,自由的百科全书 探戈 - 维基百科,自由的百科全书 探戈[编辑] 维基百科,自由的百科全书 跳转至: 导航. 搜索 探戈 1919年绘有探戈舞蹈姿势的明信片 探戈(Tango)西班 ...

最新文章

  1. WinCE内核裁减(中文字体)及字库和内核的分离(转)
  2. 进阶Frida--Android逆向之动态加载dex Hook(三)
  3. 直播中那几秒延时到底来自哪?
  4. 加载JavaScript文件时nginx报::ERR_CONTENT_LENGTH_MISMATCH错误解决
  5. linux系统下定时备份,在Linux系统中简单地实现定时备份的方法 -电脑资料
  6. JS实现弹性漂浮广告代码
  7. POJ2545-丑数
  8. 微信小程序官方开发文档——框架
  9. 输入年份和月份输出该月有多少天python_输入年份和月份,输出该月有多少天,判断这一天是该年的第几天...
  10. 医学病理图片(SVS格式)的格式转换与显示——python实现
  11. CSDN周赛第32期:赢图书《金融级IT架构:数字银行的云原生架构解密》 和定制周边
  12. [Power Query] 标题提升
  13. 【flask】Blueprint蓝图
  14. Far manager基本操作指南
  15. 联想服务器怎么做系统备份,Lenovo笔记本一键恢复8.0如何进行系统备份
  16. [小白系列]利用echarts或者pyecharts来实现高端大气上档次的可视化
  17. 【无标题】一款功能非常强大的免费串口示波器串口助手,支持绘图,logo保存数据保存,历史数据加载与对比。
  18. linux淘宝秒杀脚本,在天猫及京东上秒杀不到飞天茅台的原因是有人用抢茅台脚本...
  19. 朋友给我发了一张转账聊天记录,瞬间心都凉了,结果她竟说骗我的
  20. linux su密码重置,Linux重置root用户密码

热门文章

  1. uni-app 页面切换间的动画,页面跳转之中的动画
  2. 节日贺卡使用python编写
  3. JSP四大域属性空间(page、request、session、application)详解
  4. 小学文化学导数——斜率
  5. 写给所有程序员的心声~千里马常有,但伯乐不常有
  6. PHP.ini 中文注解
  7. 否打开人工智能的“黑箱”?
  8. soso地图低调推出!
  9. python循环里使用len()与计算出len()后速度有区别吗
  10. 你和真努力还差这几点