- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
并行计算简介和多核CPU编程DemoHouSisong@GM? 2007.01.16tag:多线程,并行计算,OpenMP,多核编程,工作线程池(?2008.01.19 更新??鉴于读者反映代码阅读困难,重新改写了文章和实现,使文章更易读?)(?2007.09.04 更新 ?把用事件控制的线程启动更新为临界区的实现?)??? 2006年是双核的普及年,双核处理器出货量开始超过单核处理器出货量;2006年的11月份Intel开始供货4核;AMD今年也将发布4核,并计划今年下半年发布8核;???? 按照Intel一个文档所说:假定22纳米处理时帧上有一枚13毫米大小的处理器,其上有40亿个晶体管、48MB高速缓存,功耗为100W。利用如此数量的晶体管,我们可设计拥有12个较大内核、48个(多核)中型内核、或144个小型内核(许多个内核)的处理器。而且Intel已经开发完成了一款80核心处理器原型,速度达到每秒一万亿次浮点运算。????? 随着个人多核CPU的普及,充分利用多核CPU的性能优势摆在了众多开发人员的面前;以前的CPU升级,很多时候软件性能都能够自动地获得相应提升,而面对多核CPU,免费的午餐没有了,开发人员必须手工的完成软件的并行化,以从爆炸性增长的CPU性能中获益;(ps:我想,以后的CPU很可能会集成一些专门用途的核(很可能设计成比较通用的模式),比如GPU的核、图象处理的核、向量运算的核、加解密编解码的核、FFT计算的核、物理计算的核、神经网络计算的核等等:D? )先来看一下单个CPU上的并行计算:? 单CPU上常见的并行计算:多级流水线(提高CPU频率的利器)、超标量执行(多条流水线并同时发送多条指令)、乱序执行(指令重排)、单指令流多数据流SIMD、超长指令字处理器(依赖于编译器分析)等并行计算简介? 并行平台的通信模型: 共享数据(POSIX、windows线程、OpenMP)、消息交换(MPI、PVM)? 并行算法模型: 数据并行模型、任务依赖图模型、工作池模型、管理者-工作者模型、消费者模型? 对于并行计算一个任务可能涉及到的问题:任务分解、任务依赖关系、任务粒度分配、并发度、任务交互? 并行算法性能的常见度量值:? 并行开销、加速比、效率(加速比/CPU数)、成本(并行运行时间*CPU数)A:一个简单的计算Demo? 演示中主要完成的工作在Sum0函数(工作本身没有什么意义,主要是消耗一些时间来代表需要做的工作:),然后分别用OpenMP工具(vc和icc编译器支持)和一个自己手工写的线程工具来并行化该函数,来看看多核优化后的效果;我测试用的编译器是vc2005;CPU是双核的AMD64x2 4200+(2.37G);内存2G双通道DDR2 677MHz;原始代码如下:#include?stdio.h#include?stdlib.h#include?time.h#include?math.h//一个简单的耗时任务double?Sum0(double*?data,long?data_count);int?main(){????long?data_count=200000;????double*?data=new?double[data_count];????long?i;????//初始化测试数据?????for?(i=0;idata_count;++i)????????data[i]=(double)(rand()*(1.0/RAND_MAX));????const?long?test_count=200*2;//为了能够测量出代码执行的时间,让函数执行多次????double?sumresult=0;????double?runtime=(double)clock();????for(?i=0;?itest_count;?++i?)?????{????????sumresult+=Sum0(data,data_count);????}????runtime=((double)clock()-runtime)/CLOCKS_PER_SEC;????printf?(?Sum0???);????printf?(??最后结果?????=?%10.4f??,sumresult);????printf?(??执行时间(秒)?=?%f??,runtime);????delete?[]?data;????return?0;}double?Sum0(double*?data,long?data_count){????double?result=0;????for?(long?i=0;idata_count;++i)????{????????data[i]=(double)sin(cos(data[i]));????
您可能关注的文档
最近下载
- 基于SpringBoot的在线学习系统的设计与开发.doc
- 毕业设计(论文)-小型水稻联合收割机设计.doc
- 房地产 -22G101-1混凝土结构施工图平面整体表示方法制图规(现浇混凝土框架、剪力墙、梁、板).docx VIP
- 四方股份合作协议书(标准版).docx VIP
- ASME B16.9-2012_工厂制造的锻钢对焊管件(中文版).pdf
- 2025年汽车维修工技师(二级)职业技能鉴定考试题库资料(含答案).pdf
- 变压器油色谱、局放在线监测系统设计实施方案.docx VIP
- 饲料厂安全操作规程.pdf VIP
- 交通标识汇总(全).doc VIP
- 2025届湖北省建设投资集团有限公司校园招聘124人笔试参考题库附带答案详解.pdf
文档评论(0)