OpenMP 线程处理的基本消耗
本文将说明如何开始使用 OpenMP 对代码进行线程化处理,帮助您确定从何处进行线程化,并显示如何衡量所产生的代码的性能。 还将举例比较该线程技术与典型的 Win32 线程处理。
现今,越来越多的多核处理器不断面市。 因此,开发人员需要在代码中添加线程来利用系统所提供的多个内核,并将对性能比较敏感的代码分隔在多个内核上。 但同时,必须确保代码具有良好的可伸缩性;无论在单核计算机、双核计算机、四核计算机及更高级别的计算机上,同样的代码都必须能够运行良好。 本文着重说明使用 OpenMP 线程处理库的某些常用线程处理技术以及性能衡量方法。 这将提供某些性能基准供您使用,帮助您理解如何实现代码线程化以及如何衡量其性能。
OpenMP 是用于编写直接线程化代码的线程处理库, 通常用于向现有的单线程代码中添加线程处理。 本文假定您熟悉线程概念,但可能尚未使用过 OpenMP 或很少对代码进行线程化处理来提高性能。
我们不妨看一些简单的代码,使用 OpenMP 添加线程,然后看看它在双核系统上的执行情况。 这样,您可以清楚地了解 OpenMP 是如何运行的,以及如何修改自己编写的代码并对其进行性能评定。 为便于比较,文中还给出了 Win32 线程处理。
所有代码均使用 C++ 编写,使用英特尔 C++ 编译器 9.0 编译。 性能评测平台为 Windows XP SP2。 有关测试硬件的详细信息,请参阅“配置”附录。
在此处显示的示例中,OpenMP 代码具有良好的可伸缩性,当强制其以单线程运行时,性能略有降低。 OpenMP 的消耗与 Win32 线程类似。 但无论是 OpenMP 还是 Win32 线程,循环启动的消耗都很高。 这表明,对于非常小的循环或对性能高度敏感的应用程序来说,不适合使用这些机制进行线程化。 在这些情况下,需要采用象线程池之类的机制实现线程化。
为什么要注意这个代码示例?
本 示例代码显示了如何衡量 OpenMP 基本的线程处理性能。
摘要/概述
本代码选取了一段简单的串行代码,通过不同方式对它进行线程化。 然后使用一个测试工具进行性能衡量,从而帮助我们理解不同方法之间的差异。
目标读者
考虑使用(或已经使用)OpenMP 执行线程处理的 C++ 开发人员,他们希望了解代码如何执行
示例类别:完整项目
实现语言: C++
目标软硬件平台
硬件系统: 运行有英特尔多核处理器的系统
操作系统: Windows XP 及更高级别
编译器: Microsoft Visual Studio.NET 2003、英特尔 C++ 编译器 9.0
- 下载代码示例
OpenMP 线程处理的基本消耗相关推荐
- OpenMP 线程化(Threading)基础(1)--并行计算简介
或许你手头上有一些现成的代码,你想把它们线程化以便能都更好地运行在多核的系统(Multicore System)上.再开始动手操作之前你需要知道些什么呢? 这篇文章将会告诉你如何通过使用ope ...
- OpenMP 线程互斥锁
OpenMP是跨平台的多核多线程编程的一套指导性的编译处理方案(Compiler Directive),指导编译器将代码编译为多线程程序. 多线程编程中肯定会涉及到线程之间的资源共享问题,就可以使用互 ...
- 哪个Java线程消耗了我的CPU?
当您的Java应用程序占用100%的CPU时,您该怎么办? 事实证明,您可以使用内置的UNIX和JDK工具轻松找到有问题的线程. 不需要探查器或代理. 为了进行测试,我们将使用以下简单程序: publ ...
- java线程切换消耗时间_cpu性能消耗分析
在Linux中,CPU主要用于中断.内核以及用户进程的任务处理,优先级为中断>内核>用户进程,在学习如何分析CPU消耗状况前.先要掌握三个重要的概念 1.上下文切换 每个CPU在同一时间只 ...
- OpenMP知识点汇总
1. OpenMP(Open Multi-Processing)官网:http://openmp.org/wp/ 2. OpenMP最新版本4.0,2013年7月发布.Visual Studio 20 ...
- OpenMP: OpenMP编程指南
from: OpenMP: OpenMP编程指南 进入多核时代后,必须使用多线程编写程序才能让各个CPU核得到利用.在单核时代,通常使用操作系统提供的API来创建线程,然而,在多核系统中,情况发生了很 ...
- Linux openmp教程,OpenMP中文教程
1.摘要 OpenMP 是一个应用程序接口(API),由一组主要的计算机硬件和软件供应商联合定义.OpenMP 为共享内存并行应用程序的开发人员提供了一个可移植的.可伸缩的模型.该API在多种体系结构 ...
- OpenMP与MPI
文章目录 一.OpenMP和MPI的对比 1.1 线程与进程 1.2 openMP和MPI的区别 二.openMP的简单使用 2.1 openMP的原理 2.1.1 基于线程的并行 2.1.2 明确的 ...
- [并行计算] 2. OpenMP简介
OpenMP简介 (这篇翻译只涉及与C/C++相关的代码和示例,忽略了与Fortran相关的代码和示例,感兴趣的读者可以参考原文) 1 摘要 OpenMP是由一组计算机硬件和软件供应商联合定义的应用程 ...
最新文章
- Linux从程序到进程
- ACM练习 校赛83C:纸片儿(测试用例通过但WA/TLE)
- 分享一个VisualStudio2010插件——Productivity Power Tools
- linux字符驱动之自动创建设备节点
- mybatis # 和$ 获取接收参数值的区别
- load data infile 补充
- 20171001~08总结
- 微信小程序列表项的右侧带箭头(非常简单)
- 计算机程序考试试题及答案,计算机程序员考试试题及答案.doc
- URL在线编码/解码工具
- Iframe的allow属性生效时机
- python工资一般多少p-我会p图,月薪5000,兼职1.5w...
- 序号47指标横向展示.xlsx_杭州增加2万个小客车指标!想拥有“浙A”车牌,这个APP一定要收好~...
- linux定时压缩脚本,使用shell脚本对日志文件进行定时压缩
- bcdedit编辑启动项 禁用数字签名
- 一位Rust中年低颅压头疼患者的自救之路
- Android刘海屏、水滴屏全面屏适配详解,997页字节跳动Android面试真题解析火爆全网
- Categorical类型
- 移动应用崛起新契机:超级app+轻应用
- 复活谷歌翻译流程(亲测好用)