原文地址: http://www.intel.com/cd/ids/developer/apac/zho/324362.htm
介绍
如果您有现成的代码,并希望使其实现线程化,以令其在多核系统上达到最佳运行效果。 开始使用前您需要了解哪些内容?

本文将说明如何开始使用 OpenMP 对代码进行线程化处理,帮助您确定从何处进行线程化,并显示如何衡量所产生的代码的性能。 还将举例比较该线程技术与典型的 Win32 线程处理。

现今,越来越多的多核处理器不断面市。 因此,开发人员需要在代码中添加线程来利用系统所提供的多个内核,并将对性能比较敏感的代码分隔在多个内核上。 但同时,必须确保代码具有良好的可伸缩性;无论在单核计算机、双核计算机、四核计算机及更高级别的计算机上,同样的代码都必须能够运行良好。 本文着重说明使用 OpenMP 线程处理库的某些常用线程处理技术以及性能衡量方法。 这将提供某些性能基准供您使用,帮助您理解如何实现代码线程化以及如何衡量其性能。

OpenMP 是用于编写直接线程化代码的线程处理库, 通常用于向现有的单线程代码中添加线程处理。 本文假定您熟悉线程概念,但可能尚未使用过 OpenMP 或很少对代码进行线程化处理来提高性能。

我们不妨看一些简单的代码,使用 OpenMP 添加线程,然后看看它在双核系统上的执行情况。 这样,您可以清楚地了解 OpenMP 是如何运行的,以及如何修改自己编写的代码并对其进行性能评定。 为便于比较,文中还给出了 Win32 线程处理。

所有代码均使用 C++ 编写,使用英特尔 C++ 编译器 9.0 编译。 性能评测平台为 Windows XP SP2。 有关测试硬件的详细信息,请参阅“配置”附录。

在此处显示的示例中,OpenMP 代码具有良好的可伸缩性,当强制其以单线程运行时,性能略有降低。 OpenMP 的消耗与 Win32 线程类似。 但无论是 OpenMP 还是 Win32 线程,循环启动的消耗都很高。 这表明,对于非常小的循环或对性能高度敏感的应用程序来说,不适合使用这些机制进行线程化。 在这些情况下,需要采用象线程池之类的机制实现线程化。

OpenMP 实验
英特尔全球合作伙伴关系部高级软件工程师 Paul Lindberg

为什么要注意这个代码示例?

本 示例代码显示了如何衡量 OpenMP 基本的线程处理性能。

摘要/概述
本代码选取了一段简单的串行代码,通过不同方式对它进行线程化。 然后使用一个测试工具进行性能衡量,从而帮助我们理解不同方法之间的差异。

目标读者
考虑使用(或已经使用)OpenMP 执行线程处理的 C++ 开发人员,他们希望了解代码如何执行

示例类别:完整项目

实现语言: C++

目标软硬件平台

硬件系统: 运行有英特尔多核处理器的系统

操作系统: Windows XP 及更高级别

编译器: Microsoft Visual Studio.NET 2003、英特尔 C++ 编译器 9.0

  • 下载代码示例

OpenMP 线程处理的基本消耗相关推荐

  1. OpenMP 线程化(Threading)基础(1)--并行计算简介

      或许你手头上有一些现成的代码,你想把它们线程化以便能都更好地运行在多核的系统(Multicore System)上.再开始动手操作之前你需要知道些什么呢?   这篇文章将会告诉你如何通过使用ope ...

  2. OpenMP 线程互斥锁

    OpenMP是跨平台的多核多线程编程的一套指导性的编译处理方案(Compiler Directive),指导编译器将代码编译为多线程程序. 多线程编程中肯定会涉及到线程之间的资源共享问题,就可以使用互 ...

  3. 哪个Java线程消耗了我的CPU?

    当您的Java应用程序占用100%的CPU时,您该怎么办? 事实证明,您可以使用内置的UNIX和JDK工具轻松找到有问题的线程. 不需要探查器或代理. 为了进行测试,我们将使用以下简单程序: publ ...

  4. java线程切换消耗时间_cpu性能消耗分析

    在Linux中,CPU主要用于中断.内核以及用户进程的任务处理,优先级为中断>内核>用户进程,在学习如何分析CPU消耗状况前.先要掌握三个重要的概念 1.上下文切换 每个CPU在同一时间只 ...

  5. OpenMP知识点汇总

    1. OpenMP(Open Multi-Processing)官网:http://openmp.org/wp/ 2. OpenMP最新版本4.0,2013年7月发布.Visual Studio 20 ...

  6. OpenMP: OpenMP编程指南

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

  7. Linux openmp教程,OpenMP中文教程

    1.摘要 OpenMP 是一个应用程序接口(API),由一组主要的计算机硬件和软件供应商联合定义.OpenMP 为共享内存并行应用程序的开发人员提供了一个可移植的.可伸缩的模型.该API在多种体系结构 ...

  8. OpenMP与MPI

    文章目录 一.OpenMP和MPI的对比 1.1 线程与进程 1.2 openMP和MPI的区别 二.openMP的简单使用 2.1 openMP的原理 2.1.1 基于线程的并行 2.1.2 明确的 ...

  9. [并行计算] 2. OpenMP简介

    OpenMP简介 (这篇翻译只涉及与C/C++相关的代码和示例,忽略了与Fortran相关的代码和示例,感兴趣的读者可以参考原文) 1 摘要 OpenMP是由一组计算机硬件和软件供应商联合定义的应用程 ...

最新文章

  1. Linux从程序到进程
  2. ACM练习 校赛83C:纸片儿(测试用例通过但WA/TLE)
  3. 分享一个VisualStudio2010插件——Productivity Power Tools
  4. linux字符驱动之自动创建设备节点
  5. mybatis # 和$ 获取接收参数值的区别
  6. load data infile 补充
  7. 20171001~08总结
  8. 微信小程序列表项的右侧带箭头(非常简单)
  9. 计算机程序考试试题及答案,计算机程序员考试试题及答案.doc
  10. URL在线编码/解码工具
  11. Iframe的allow属性生效时机
  12. python工资一般多少p-我会p图,月薪5000,兼职1.5w...
  13. 序号47指标横向展示.xlsx_杭州增加2万个小客车指标!想拥有“浙A”车牌,这个APP一定要收好~...
  14. linux定时压缩脚本,使用shell脚本对日志文件进行定时压缩
  15. bcdedit编辑启动项 禁用数字签名
  16. 一位Rust中年低颅压头疼患者的自救之路
  17. Android刘海屏、水滴屏全面屏适配详解,997页字节跳动Android面试真题解析火爆全网
  18. Categorical类型
  19. 移动应用崛起新契机:超级app+轻应用
  20. 复活谷歌翻译流程(亲测好用)

热门文章

  1. 华为应急通讯 迅驰C2 新版双网 原版GSMS软件六合一套装U盘版 ISO文件 百度网盘下载
  2. JAVA导出PDF并压缩成zip
  3. 手把手教你搭建私有云盘(发车啦)
  4. win 10 修改 windows 默认提示音
  5. 数组:左右两边数组的和相等
  6. Linux 线程间通信方式、进程通信方式
  7. timezoneinfo移植
  8. 今天看完“玉观音”了
  9. mysql双机部署_双机部署Mysql主从同步
  10. Project 2007 导出 Excel