欢迎来到天天文库
浏览记录
ID:42014797
大小:463.01 KB
页数:21页
时间:2019-09-06
《并行化程序设计方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2章并行化程序设计方法并发:并发是指一个进程中的多个线程交替执行。并发线程在单个处理器上运行。多线程应用程序中的并发性Thread1Thread2Thread2Thread1Thread1Thread1Thread2Thread2Thread2Thread1引言并行:并行是指多个线程同时执行。并行线程能在多个处理器上执行。多线程应用程序中的并行性Thread1Thread1Thread1Thread2Thread2Thread2引言1.并行化程序开发流程第一部分第二部分第三部分2.并行化程序设计2.并行化程序设计问题的可并行性是否可以将问题划分为不同的功能模块分别完成针
2、对需要处理的数据是否可以划分为若干数据块同时操作是否可以将一个复杂的过程划分为若干个子操作流水执行2.并行化程序设计相关性分析确定必要的通信和同步机制;分析这些并行化可能会带来的额外的开销开销是否是必要的?是否是有价值的?是否是可以承受的?额外的开销可能包括程序本身的开销,也可能是经济,资源,人力等方面开销。2.并行化程序设计问题1:数据竞争解决方法:临界区、互斥、同步。临界区互斥同步问题2:死锁解决方法:先来先服务举例说明。2.并行化程序设计问题分解最常用的分解模式有任务分解,数据分解和数据流分解。任务分解是将问题划分为多个功能模块分别由不同的线程去执行;举例。数据分解
3、是将待处理数据分成若干不同的数据块交由不同的线程去执行;举例。数据流分解是将一个复杂的操作划分成若干个简单的子操作,数据在子操作间按照一定的顺序依次计算。举例。2.并行化程序设计数据的求和累加;下列程序如何并行:for(inti=0;i<20;i++){for(inti=0;i<40;i++){doSomething();}}2.并行化程序设计算法设计结构任务分解采用各任务并行,分而治之的设计结构数据分解依据对数据的处理过程采用几何分解,递归分解等设计结构数据流分解采用流水线等设计结构。3.并行编程模型选择显式模型Win32APIPOSIX线程库Pthreads隐式模型O
4、penMPTBB可选其它编程模型:MPI,PVM通过例子比较显示模型和隐式模型的区别。3.并行编程模型选择Win32API线程的创建:createThread()线程的终止:ExitThread()线程的挂起与恢复:SuspendThread(),ResumeThread()线程的等待:WaitForSingleObject()WaitForMultipleObjects()OpenMP无需开发人员显式处理复杂的线程创建、同步、负载平衡、销毁等技术细节。4.性能调优性能指标加速比效率粒度负载平衡调优工具IntelVTuneIntelThreadCheckerIntelTh
5、readProfiler加速比Speedup=SerialTime/ParallelTimeAmdahl’s定律Speedup=1/[S+(1-S)/n+H(n)](强调并行比例)4.性能调优Paintingapicketfencerequires:30minutesofpreparation(serial).Oneminutetopaintasinglepicket(300picket).30minutestocleanup(serial).1、2、10、100paintersExample:PaintingaPicketFence4.性能调优NumberofPaint
6、ersTimeSpeedup130+300+30=3601.0X230+150+30=2101.7X1030+30+30=904.0X10030+3+30=635.7XInfinite30+0+30=606.0XConsiderhowspeedupiscomputedfordifferentnumbersofpainters:4.性能调优效率:(Speedup/NumberofThreads)*100%.Considerhowefficiencyiscomputedwithdifferentnumbersofpainters:NumberofPaintersTimeSpe
7、edupEfficiency13601.0X100%230+150+30=2101.7X85%1030+30+30=904.0X40%10030+3+30=635.7X5.7%Infinite30+0+30=606.0Xverylow4.性能调优粒度粒度表示程序处理数据的规模两种类型粒度粗粒度细粒度Example:FieldandFarmers4.性能调优负载平衡让每个处理核尽可能处于相同的繁忙程度有效的任务划分方式线程完成相同的工作量线程同时完成工作Example:CleaningBanquetTables4.性能调优本章小
此文档下载收益归作者所有