吉林大学多核程序设计第一章系统概述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程介绍多核程序设计吉林大学计算机科学与技术学院彭涛邮箱:tpeng@jlu.edu.cn课程介绍课程名称:多核程序设计英文名称:Multi-CoreProgramming开课学期:第6学期学时/学分:33/2课程类型:选修课开课专业:计算机科学与技术专业参考书:课程介绍课程介绍2008年参加Intel“多核技术课程”大学计划培训,清华大学,北京制定《多核程序设计》教学大纲2009年开始开设《多核程序设计》授课对象:计算机学院大三本科生人数每年400-500人左右课程内容多核技术概述•微处理器、集成电路及芯片发展•片上多核处理器架构•多核的认识•多核程序设计开发工作由“先进”到“常规普及”•操作系统对多核的支持•单核、多核以及多处理器(多CPU)•多核技术是处理器发展的必然趋势•多核对不同领域软件开发的影响课程内容并行计算基础•并行计算概念•并行计算的应用•并行计算主要的基本类型•并行程序的开发策略•并行程序设计模式的基本思路•并行程序设计模式•多级存储体系结构•访存模型•并行计算模型•并行编程环境•并行计算性能评测•程序性能优化课程内容多线程基础•进程、线程技术概要•多线程程序设计•多线程带来的问题•线程的同步机制线程创建线程管理同步——全局变量事件机制临界区互斥量信号量课程内容Windows多线程编程及调优•线程库介绍•Win32线程API使用•线程执行•多线程调试与优化•示例程序课程内容Linux多线程编程•POSIX线程库介绍•POSIXPthreads库基本线程操作•线程互斥和同步•示例程序OpenMP多编程编程及性能优化•OpenMP编程介绍•编程技术•性能分析•示例程序课程内容MPI编程及性能优化•MPI介绍•安装配置•编程基础•性能分析与优化•示例程序多核软件工具介绍及使用•C++编译器•VTune性能分析器•ThreadChecker线程检查器•ThreadProfiler线程档案器课程开发教材内容完善课程实验第一章多核概述使用多核了吗?摩尔定律——芯片的晶体管数量每一年半左右增长一倍。处理器性能不断提高主要基于两个原因:•半导体工艺的逐渐进步;•处理器体系结构的不断发展。处理器性能提高的途径:•工艺和电路技术的发展使得处理器性能提高;•体系结构的发展使得处理器性能提高;•编译技术的发展使得处理器性能提高。第一章多核概述多核的认识•多核即在一个单芯片上面集成两个甚至更多个处理器内核,其中每个内核都有自己的逻辑单元、控制单元、中断控制器、运算单元,一级cache、二级cache共享或独有,其部件的完整性和单核处理器内核相比完全一致。•双核”的概念最早是由IBM、HP、Sun等支持RISC架构的高端服务器厂商提出的,主要运用于服务器上。多核程序设计开发工作由“先进”到“常规普及”•目前市场上的服务器、工作站、PC台式机、笔记本中的CPU都是多核(双、四),intel实验室80核;•CPU主频很难提高,主要通过多核来提高计算机性能,如果我们不能很好的利用多核,那么就很难提高我们程序的性能;•为什么不能提高主频:CPU的功耗增加;节能绿色环保的理念。第一章多核概述80核处理器:•2007-02-11•核心面积275平方毫米•主频3.16GHz•电压0.95V•数据带宽1.62Tb/s•浮点运算能力1.01TFlops•相当于1万颗10年前的PentiumPro•功耗不过62W•比core2duo还低•是四核心XeonX53552.66GHz的大约一半17第一章多核概述本课程主要讲解:•多核体系结构的基础知识;•并行程序基本概念以及调试和优化技术;•多线程程序设计基础知识;•多线程编程及调试;•OpenMP多线程编程以及性能优化;•一些常见的并行程序设计问题的解决;•MPI编程及性能优化;•Intel多核软件工具的介绍。第一章多核概述单核与多核?•多核不是计算机速度更快了,而是它更能干了;•单核内的多线程技术是串行的,即并发的,多个线程交替执行,在同一时刻只能有一个线程执行;多核内的多线程是并行的,即并行性,多个线程同时执行,同一时刻可以有多个线程执行;•并行(parallel):活动线程在不同的硬件资源或者处理单元上同时执行,多个线程在任何时间点都同时执行;•并发(concurrent):线程在同一个硬件资源上交替执行的过程,所有活动线程在某段时间内同时执行的状态,但是在某个给定的时刻都只有一个线程在执行。第一章多核概述单核平台的多线程和多核平台的多线程有什么不同?•单核平台上的多线程为了竞争CPU资源需要挂起,多核平台就不需要这样了,多核提供了一种优化应用程序的渠道,那就是通过仔细分配加载到各线程上的工作负载就能够得到性能上的提升。并且还可以对应用程序代码加以优化,使其能够更加充分的使用多个处理器资源,进而达到提升应用程序性能的目的;•单核与多核采用相同的线程优先级会导致不同的程序行为.多核与多处理器(多CPU)的区别:•多核是指一个处理器芯片有多个处理器核心,他们之间通过CPU内部总线进行通讯;•多处理器是指简单的多个处理器芯片工作在同一个系统上,多个处理器之间的通讯是通过主板上的总线进行的。第一章多核概述多核技术是处理器发展的必然趋势:•半导体工艺技术的飞速进步•Pollack规则•能耗•设计成本第一章多核概述半导体工艺技术的飞速进步•通用微处理器的主频已经突破了3GHz•数据宽度也达到64位•45nm工艺的微处理器已经批量生产•32nm工艺以下的微处理器也已问世•芯片上集成的晶体管数目已经超过10亿个第一章多核概述Pollack规则:•英特尔微处理器实验室主任FredPollack:从386起,英特尔每一新架构需要两到三倍的晶片面积,而性能只提升1.4到1.7倍。•简言之,性能的提升与复杂性的平方根成比例。•两代处理器,性能每提升一倍,复杂性便增加4倍。•如一个处理器的硬件逻辑提高一倍,至多能提高性能40%。采用两个简单处理器构成一个相同硬件规模的双核处理器,可获得70%~80%的性能提升。第一章多核概述能耗:•工艺技术的发展和芯片复杂性的增加,芯片的发热现象日益突出。•单核高频率的处理器功耗太大,发热量太大•多核可以提高性能,且能较好解决功耗问题•多核处理器可以采用降低功耗的技术:如可以关闭一些处理器第一章多核概述第一章多核概述设计成本:•处理器结构复杂性的不断提高,人力成本的不断攀升,设计成本随时间呈线性甚至超线性的增长•研发高频率处理器的成本越来越高•Intel发布3.8GHz的产品,宣布停止4GHz的产品计划。AMD频率超过2GHz以后无法大幅度提升第一章多核概述多核对不同领域软件开发的影响:•传统的科学计算:原有软件大都是并行的多核提供了更高性能的执行平台需要做的是针对多核进行优化,多核应用不存在困难•服务器软件:业务特征是并发的,应用具有天然的并发性多核提供了一个高性能计算平台,面临挑战不大•桌面软件:原有大部分程序是串行的需要很好的并行编程模型和开发环境,挑战很大第一章多核概述超线程技术(Hyper-Threading,HT)•Intel公司所实现的同时多线程技术,同时多线程技术(SimultaneousMulti-Threading,SMT)是通过复制处理器体系结构状态信息来创建逻辑处理器或者称为线程;•只有一个实际的物理处理器,但是从软件的角度来看,存在多个逻辑处理器。超线程技术是通过延迟隐藏的方法提高了处理器的性能,从本质上讲,就是多个线程共享一个执行核,因此,超线程技术中的线程执行并不是真正意义上的并行;•采用超线程技术所获得的性能提升将会随着应用程序以及硬件平台的不同而参差不齐,超线程技术评为失败的技术。1.1微处理器发展史1945年,世界上第一台全自动电子数字计算机ENIAC•采用电子管,作为基本原件,每秒可进行5000次加减乘除占地172平米,重30吨,耗电150千瓦计算机的发展按照硬件工艺可以分为:•第一代(1946~1958):电子管数字计算机;•第二代(1958~1964):晶体管数字计算机;•第三代(1964~1971):集成电路数字计算机;•第四代(1971年以后):大规模集成电路数字计算机计算机发展方向巨型机微型机银河系列、曙光系列PC机核心:微处理器(体积小、重量轻、功耗低、功能强、可靠性高、结构灵活)1.1微处理器发展史微处理器发展大体经历以下几个过程:•第一代微处理器(4位):英特尔4004,8008•第二代微处理器(8位):采用NMOS工艺,采用汇编语言、BASIC、Fortran编程,使用单用户操作系统。如英特尔8080,8085•第三代微处理器(16位):以1978年英特尔的8086出现为起点•第四代微处理器(32位):运算模式包括实模式、保护模式和“虚拟86”。英特尔80386DX,80486,Pentium4…•2005年,Intel首发基于双核技术的IntelPentiumD处理器,正式揭开x86处理器多核时代。x86处理器多核技术的发展,人们也在进行并行化的探索,又出现了并行计算机体系结构处理器发展史中的一些重要技术高速缓存(Cache)技术:•CPU速度快,Mem速度较慢,Cache技术可解决该矛盾。•Cache是位于CPU与Mem之间的临时存储器,它的容量比Mem小但交换速度快。在Cache中的数据是Mem中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开Mem直接从Cache中调用,从而加快读取速度流水线技术:•流水线技术是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术。程序中的指令仍是一条条顺序执行,但可以预先取若干条指令,并在当前指令尚未执行完时,提前启动后续指令的另一些操作步骤。这样可以加快程序的运行。处理器发展史中的一些重要技术超线程(Hyper-Threading,HT)技术:•超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高CPU的运行效率。•采用超线程技术能同时执行两个线程,是因为他们使用了芯片的不同部分,他们并不能象两个真正的CPU那样,每各CPU都具有独立的资源。•当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。处理器发展史中的一些重要技术新指令集:提高在多媒体和3D图形方面的处理能力•MMX(MultiMediaExtensions),多媒体扩展指令集.•SSE(StreamingSIMDExtensions),第二套多媒体专用指令集,加速CPU的3D运算能力。•3DNow:3D加速指令集,加速CPU的浮点运算。并行计算机由一组处理单元组成,这组处理单元通过相互之间的通信与协作,以更快的速度共同完成一项大规模的计算任务。•60年代初期,晶体管以及磁芯存储器的出现,处理单元变得越来越小,存储器也更加小巧和廉价。出现规模不大的共享存储多处理器系统,即大型主机(Mainframe);•60年代末期,同一个处理器开始设置多个功能相同的功能单元,流水线技术也出现了,在处理器内部的应用大大提高了并行计算机系统的性能。两个最主要的组成部分•计算节点•节点间的通信与协作机制并行计算机Flynn分类法:Flynn根据指令流和数据流的不同组织方式,把计算机系统的结构分为以下四类:•单指令流单数据流(SingleInstructionstreamSingleDatastream,SISD)•单指令流多数据流(SingleInstructionstreamMultipleDatastream,SIMD)•多指令流单数据流(MultipleInstructionstreamSingleDatastream,MISD

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功