参考:http://blog.csdn.net/hevc_cjl/article/details/8301822

OpenMp是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多线程程序设计的一套指导性注释(Compiler Directive)。OpenMP支持的编程语言包括C语言、C++和Fortran;而支持OpenMp的编译器包括Sun Compiler,GNU Compiler和Intel Compiler等。OpenMp提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。

下面先看一段不使用OpenMP的程序:

[cpp] view plain copy
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. void test(int n)
  5. {
  6. for (int i = 0; i< 10000; i++)
  7. {
  8. }
  9. }
  10. int main()
  11. {
  12. double dResult;
  13. long lBefore = clock();
  14. for (int i = 0; i < 10000; i++)
  15. test(i);
  16. dResult = (double)(clock() - lBefore);
  17. printf("\nTotal Time: %f ms.\n", dResult);
  18. system("pause");
  19. return 0;
  20. }
  21. <span style="font-size:18px;"></span>

程序运行结果如下所示:

再看相同的程序但使用OpenMP的例子:

[cpp] view plain copy
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. #include <omp.h>
  5. void test(int n)
  6. {
  7. for (int i = 0; i< 10000; i++)
  8. {
  9. }
  10. }
  11. int main()
  12. {
  13. double dResult;
  14. long lBefore = clock();
  15. #pragma omp parallel for
  16. for (int i = 0; i < 10000; i++)
  17. test(i);
  18. dResult = (double)(clock() - lBefore);
  19. printf("\nTotal Time: %f ms.\n", dResult);
  20. system("pause");
  21. return 0;
  22. }

程序运行结果如下所示:

对比使用OpenMP前后运行结果,同样的一段程序,运行时间几乎减少了一半(接近40%)。

OpenMp使用例子相关推荐

  1. OpenMP 学习(二)

    一.OpenMP的并行定义 一个并行区域 是一段代码,被所有的线程同时执行. master线程的线程ID总是0 对线程的设置要在进入并行区域之前 IF 语句可以被使用来确保并行区域.当条件语句的值是& ...

  2. eclipse openmp mpi并行编程例子

    openmp 首先,下载这个版本的Eclipse:http://www.eclipse.org/downloads/packages/eclipse-parallel-application-deve ...

  3. vs2013 openmp例子

    OpenMP是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程语言. 我的开发环境是Windows.VS2013.双核处理器. 2. 创建一个名为OpenMP的空控制台工程(即没有VS200 ...

  4. (原創) 如何在VC8使用OpenMP? (C/C++) (VC++) (OpenMP)

    Abstract 隨著多核心CPU普及,但時脈卻越來越低,若程式還是用單核心的方式去寫,不僅壓榨不出多核心的效能,執行速度還可能越來越低,所以使用平行處理(Parallel Programming)也 ...

  5. 用openMP进行并行加速

    用openMP进行并行加速 参考:http://blog.csdn.net/lanbing510/article/details/17108451 最近在看多核编程.简单来说,由于现在电脑CPU一般都 ...

  6. openMP的一点使用经验 四

    openMP的一点使用经验 四 http://www.cnblogs.com/yangyangcv/archive/2012/03/23/2413335.html 有了以上基本知识,对我来说做很多事情 ...

  7. OpenMP的一点使用经验

    参考:http://blog.sina.com.cn/s/blog_7462bf390101d8sd.html 最近在看多核编程.简单来说,由于现在电脑CPU一般都有两个核,4核与8核的CPU也逐渐走 ...

  8. OpenMP在ARM-Linux以及NDK中的编译和使用

    OpenMP在ARM-Linux以及NDK中的编译和使用 参考:http://blog.sina.com.cn/s/blog_602f87700102w1ki.html 以前对OpenCV在ARM-L ...

  9. OpenMP: OpenMP编程指南

    from: OpenMP: OpenMP编程指南 进入多核时代后,必须使用多线程编写程序才能让各个CPU核得到利用.在单核时代,通常使用操作系统提供的API来创建线程,然而,在多核系统中,情况发生了很 ...

最新文章

  1. 浅谈敏捷开发及Scrum工具leangoo(三)
  2. python【力扣LeetCode算法题库】225-用队列实现栈
  3. matlab gui七种参数传递方式和范围
  4. VC.NET 字节对齐设置
  5. 1.9 使用PuTTY远程连接Linux 1.10 使用xshell连接Linux 1.11 PuTTY密钥认证 1.12 xshell密钥认证...
  6. 沈抚示范区·“华为云杯”2021全国AI大赛圆满落幕
  7. 基于fitter库判断已知数据服从分布——python
  8. MYSQL8.0 排序查询报错 this is incompatible with sql_mode=only_full_group_by
  9. Reverse Interger
  10. 计算机网路之面试常考
  11. 50万VPN登录凭证遭泄露,中国占11.89%
  12. debug和汇编编译器masm对指令不同的处理
  13. emui和鸿蒙哪个好,今天升级了鸿蒙系统,使用起来还真是传说中的顺滑,比之前的Emui好用。...
  14. 哈工大 计算机系统大作业 程序人生-Hello’s P2P From Program to Process
  15. 计算机那些事——图形图像渲染原理
  16. selenium 教程
  17. Windowsnbsp;Servernbsp;2003nbsp;SP2企…
  18. 长难句——考研英语刘晓燕#3
  19. 【语音识别】基于结合mfcc和lpc特征、SVM支持向量机实现中英语种识别matlab源码
  20. 末日觉醒服务器端文件,CryoFall末日觉醒服务器创建攻略 怎么创建服务器[多图]...

热门文章

  1. MaximumGap的思想
  2. apex图表使用饼图居中_ppt图表技巧:如何制作美观简洁的百分比饼图
  3. java tcp端口复用_windows server tcp端口重用问题
  4. mqtt协议视频教程_MQTT协议教程
  5. ajax请求的五个步骤_监控整个页面,非AJAX,需要通知
  6. idea配置jfinal_intellij idea安装与配置(Java开发配置篇)
  7. 这款IDEA插件,可以让你用中文编码哟
  8. 过去一个月发生了什么,C++再次真香了吗?
  9. 开发文件上传功能稍不注意就会引发安全漏洞
  10. Docker 命令自动补全必须有