1并行计算与多核程序设计理论课0课程概述陈天洲,施青松,胡威{tzchen,zjsqs,ehu}@zju.edu.cn2009年11月25日,玉泉校区曹西101浙江大学软硬件协同设计实验室教师理论课老师:陈天洲、施青松、胡威{tzchen,zjsqs,ehu}@zju.edu.cn实验课助教:马建良博士majl@zju.edu.cn均为fatlab成员浙江大学软硬件协同设计实验室教材多核计算与程序设计,周伟明,华中科技大学出版社多核程序设计,陈天洲等,清华大学出版社,2007年8月多核程序设计技术-通过软件多线程提升性能,电子工业出版社,2007年3月浙江大学软硬件协同设计实验室课件、工具、录像、代码、答疑资源网站仅限校内随着课程更新=1423答疑时间:周五上午地点:曹西404浙江大学软硬件协同设计实验室理论内容细节学时多核技术导论并行体系与多核体系结构的起源和特点;典型多核芯片Cell、Intel、AMD双核芯片体系分析;多核系统软件对并行编程的支持。2并行计算基础并行计算机体系结构;并行计算模型;并行环境、编程语言与并行编译器;几种常用并行算法与算法评估方法。2线程的基本概念进程、线程的概念;用户级线程、内核级线程和多线程的映射模型;多线程的互斥、同步的基本概念。2Windows多线程编程及调优Windows平台下的线程库,包括Win32线程库、MFC线程库以及.NetFramework线程库;重点介绍如何使用Win32API来创建线程、管理线程;如何实现线程间同步,包括MFC和.NetFramework进行多线程同步的方法;使用调试工具对多线程程序进行调试。4Linux多线程编程POSIX线程操作的一系列的相关的函数,包括基本线程创建、撤销、退出函数;线程之间的互斥和同步的操作;使用GDB调试多线程程序。2多线程性能研讨对比Linux、windows平台,对比各种线程库,对比各种同步机制,与学生探讨多线程程序的性能分析与调优方法结合具体实例,剖析线程工具的使用方法2浙江大学软硬件协同设计实验室编程优化OpenMP简介;OpenMP多线程编程方法;性能分析。4OpenMP研讨对比OMP与多线程,研究多线程适应于哪些应用环境,OMP适应于哪些环境,OMP的各种编程方法适应于哪些场合结合高性能计算实例,剖析OMP对核的利用率2MPI编程及性能优化MPI简介;MPI程序特点和多核MPI软件包安装配置;MPI程序框架与标准的点对点通信、群集通信和排错;性能分析优化。2MPI研讨分析MPP上与CMP上MPI的差异性对比MPI与多线程、OMP的编程思想的差异性以曙光5000A为例,分析现有超级计算机上的软件设计方法以及CPU利用率2多核软件工具硬件性能评测工具;多线程程序的性能评测方法;评测优化工具使用,包括C++编译器、VTune性能分析器、MKL数学核心函数库、ThreadChecker线程检查器和ThreadProfiler线程档案器。Parallelstudio工具。4性能调优研讨对比SMT(SUN)、CMP(intel&AMD)、CELL(IBM)的性能调试谈论硬件级支持的性能监控手段、OS级性能检测方法分析现有工具的不足2综合创新实验及经验交流学生设计与实现综合性的并行计算与多核程序设计实验。鼓励与科研项目想结合,学生将设计过程和结果做汇报2浙江大学软硬件协同设计实验室实验环境地点:曹西501时间:冬学期每周三晚上6:30-8:10硬件:英特尔双核酷睿2软件:Visualstudio2003/2005IntelC++compiler11.0.069Ctoolkit3.2.017IntelMathKernelLibraryMKL10.1.0.015ThreadProfiler3.1forWindowsIntegratedPerformancePrimitives(IPP)6.0.0.063;MathKernelLibraryMKL10.1.0.015;TBB2.1.009ThreadCheck3.1.009trace7.2.011vtune9.1ParallelStudio1.0(ParallelComposer,ParallelInspector,ParallelAmplifier,ParallelAdvisorLite),2009年5月26日推出浙江大学软硬件协同设计实验室学完本课程的结果学会如何编写多核计算机上的软件多个处理器运行你的程序学会如何评价一个多核软件在不同核上充分利用硬件资源学会如何多核优化对一个单核程序,能编出多核程序,能充分优化学会多核硬件的评价知道软件是怎么在多核硬件上跑扩大处理器视野了解各种处理器以及在这些硬件上编程的差异有2.5学分的成绩上机考试,以时间定成绩9并行计算与多核程序设计理论课1-2多核技术导论陈天洲,施青松,胡威{tzchen,zjsqs,ehu}@zju.edu.cn2009年11月25日,玉泉校区曹西101浙江大学软硬件协同设计实验室微处理器发展史1945年,世界上第一台全自动电子数字计算机ENIAC电子管微处理器:忽略处理器发展第一代(1971~1973):4位或8位微处理器。代表:8008第二代(1974~1977):集成度提高1-4倍,运算速度提高10-15倍。代表:Z80,8080第三代(1978~1984):16位。代表:8086。第四代(1985~1992):32位微处理器,代表80386第五代微处理器(1993—1995年),64位数据总线,32位地址总线,CPU内部采用超标量流水线设计,代表:奔腾,K5,powerpc第六代(1993~2002):350nm以下工艺微处理器,平行并发计算而设计(EPIC)架构,代表:安腾多核时代(2002~今):从2002年超线程技术开始的多核时代,代表:酷睿2浙江大学软硬件协同设计实验室微处理器1971年,第一款微处理器40041978年,英特尔公司80861979年,英特尔公司又开发出了80881981年,美国IBM公司将8088芯片用于其研制的PC机1982年,英特尔公司研制出了80286微处理器1985年10月17日,英特尔80386DX正式发布1989年,英特尔推出80486芯片1993年,新一代586CPU问世1996年底,多能奔腾PentiumMMX1998年,奔腾二代PentiumII、至强Xeon、赛扬Celeron1999年春,英特尔公司PentiumIII奔三2000年,英特尔公司Pentium4,奔四-------------以下为本课程关注的时代----------------------------2002年,英特尔超线程技术(HT,Hyper-Threading),预告多核时代2005年4月18日,英特尔全球同步首发奔腾D处理器(双芯片方案)2005年4月21日,AMD推出了双核速龙™64X2处理器(双核)2006年7月27日,英特尔推出酷睿2:英文Core2Duo2009年9月,至强六核2009年10月,酷睿i7浙江大学软硬件协同设计实验室汇编指令集变化提高电脑在多媒体、3D图形方面的应用能力MMX57条多媒体指令SSEStreamingSIMDExtensions3DNOW!3D加速指令集怎么利用这些指令用专业编译器2009年最新SSE4.24.1包括47条指令,4.2包括7条指令。4.2增加两类汇编:STTNI(STring&TextNewInstructions)和ATA(ApplicationTargetedAccelerators)加速XML文本的字符串操作、存储校验XML的解析速度最高是原来的3.8倍。这就是为什么office2007采用XML,运行在新处理器上速度快?浙江大学软硬件协同设计实验室多核概念单芯片多处理器(Chipmultiprocessors,简称CMP)CMP是由美国斯坦福大学提出的将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程CMPvsSMTSMT处理器结构的灵活性比较突出当半导体工艺进入0.18微米以后,线延时已经超过了门延迟,要求微处理器的设计通过划分许多规模更小、局部性更好的基本单元结构来进行由于CMP结构已经被划分成多个处理器核来设计,每个核都比较简单,有利于优化设计,因此更有发展前途浙江大学软硬件协同设计实验室多核技术是处理器发展的必然推动微处理器性能不断提高的因素半导体工艺技术的飞速进步体系结构的不断发展这两个因素相互影响,相互促进工艺和电路技术的发展使得处理器性能提高约20倍体系结构的发展使得处理器性能提高约4倍编译技术的发展使得处理器性能提高约1.4倍。如今,这个规律已经很难维持浙江大学软硬件协同设计实验室十亿晶体管时代即将到来通用微处理器的主频已经突破了4GHz数据宽度也达到64位。65nm工艺的微处理器已经批量生产大连45nm工艺以下的微处理器也已问世芯片上集成的晶体管数目已经超过10亿个如何有效地利用数目众多的晶体管?多核通过在一个芯片上集成多个简单的处理器核利用这些晶体管资源发挥其最大的能效浙江大学软硬件协同设计实验室门延迟逐渐缩短,全局连线延迟却不断加长晶体管特征尺寸不断缩小使得晶体管门延迟不断减少互连线延迟却不断变大芯片的制造工艺达到0.18微米甚至更小时线延迟已经超过门延迟成为限制电路性能提高的主要因素CMP(单芯片多处理器)的分布式结构全局信号较少,与集中式结构的超标量处理器结构相比,在克服线延迟影响方面更具优势浙江大学软硬件协同设计实验室符合Pollack规则Pollack规则处理器性能的提升与其复杂性的平方根成正比如一个处理器的硬件逻辑提高一倍,至多能提高性能40%采用两个简单处理器构成一个相同硬件规模的双核处理器可获得70%~80%的性能提升在面积上也同比缩小浙江大学软硬件协同设计实验室能耗不断增长芯片的发热现象日益突出工艺技术的发展和芯片复杂性的增加多核处理器单核速度较慢处理器消耗