并行程序设计_第1页
并行程序设计_第2页
并行程序设计_第3页
并行程序设计_第4页
并行程序设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、并行程序设计Parallel Programming什么是并行计算?通过计算机硬件和软件协作,同时执行多个数据运算的一种计算模式提高计算效率,包括提高计算速度、以及降低数据处理的成本四种不同粒度/层次的并行计算微指令级(SSE: streaming SIMD extensions):向量处理指令指令级(ILP: instruction-level parallelism): 一颗core微处理器,有3个ALU、2个FPU、3个SSE超标量技术:依靠微处理器体系结构技术,动态调整指令流的顺序,一次发射多条指令,主流处理器几乎都采用的技术超长指令字技术:编译时将多条普通指令组装成“超级指令”,比如

2、IA微处理器线程级(TLP: thread-level parallelism):由程序将计算任务划分成可以同时执行的操作序列,每个操作序列分别由不同的处理器执行内核来处理进程级:由程序将计算任务划分成可以独立分配计算资源的子任务,每个子任务分别由不同的计算机系统来处理并行程序与并行计算机串行程序: 将计算任务分解成标量操作的序列的程序。串行程序是可以并行执行的被编译器编译成面向SIMD的指令被编译器编译成面向VLIW 指令由支持superscalar技术的处理器执行并行程序: 显式表达计算任务中各数据运算无关性的程序并行计算机: 能够同时执行并行程序中无关数据运算的计算机采用向量处理器一条指

3、令完成多个数据单元的处理提供多个互相独立的处理执行核:每个执行核分别执行自己的指令流多处理器系统: Multi-core/SMP/CPU + Coprocessor多计算机系统: MPP/Cluster/Grid/Cloud并行程序的开发与并行计算串行程序程序员串行编译串行程序串行处理器串行执行超标量处理器并行执行 并行编译SIMD并行程序SIMD处理器并行执行VLIW并行程序VLIW处理器并行执行线程并行程序多处理器系统并行执行进程并行程序多计算机系统并行执行线程并行程序进程并行程序编译编译我们一直在不自觉的使用并行计算技术来提升计算效能当前几乎所有的计算机都是并行计算机:多核/微处理器内多

4、个执行单元/SIMD指令几乎每个程序运行时都在执行并行计算:专家们(体系结构/编译/操作系统)一直在替我们做并行技术的开发和运用指令级并行: 提高同时执行的指令数缩短指令流的执行时间程序执行效率的提升指令的基本执行过程: instruction fetch decode execute memory access write back每个过程分别是由不同的部件执行通过流水, 使得多条指令同时执行, 每条指令分别处于不同的执行阶段: 依靠pre-fetch/re-order等技术提供多个执行单元,支持多条指令流水同时执行数据级并行(data-level parallelism)和任务级并行(ta

5、sk-level parallelism) : 提高同时执行的线程数用户工作效率的提升(同时做多件事情, 互不耽搁)基本技术支撑: interrupt/lock/hyper-threading/Cache/virtual memory/disk file: 执行一个线程,总会发生数据访问失效为什么要程序员编写并行程序?并行计算机: 提升计算系统计算潜力的必然趋势Frequency wall: 物理上限指令流的执行时间下限Memory wall: CPU与Memory的速度鸿沟指令级并行的流水深度限制Power wall: P = C (电容/晶体管的数量) V2 (电压) F (频率)单个芯片

6、的计算潜力上限Multi-core: 提升单个芯片计算潜力的必然选择, 保持Moores law: 增加执行核(用于数据运算的晶体管的数量),降低主频提高用于数据运算的晶体管的比率: 降低指令级并行的流水深度提高晶体管的利用率: 执行核之间按需共享cache/FBI挖掘处理器的计算潜力: 提高芯片内用于数据处理的晶体管的比率微指令级并行(SIMD): 提高计算机的字长一次解码, 处理更多的数据例如core微处理器的SSE指令采用128bit寄存器, 一个指令周期可处理4个float数数据级并行(data-level parallelism)和任务级并行(task-level paralleli

7、sm) : multi-core, 支持多个指令流同时处于数据运算阶段如何提高数据处理的效率: 利用多个执行核分摊数据处理任务指令级并行/提高主频: 缩短指令流的执行时间并行程序:缩短指令流的长度数据级并行/任务级并行: 同时执行多个短的指令流向量计算: 提高单条指令的数据处理量处理器的主导技术已由提高处理器主频转向多核技术多核技术指令流的执行时间延长了同时执行的指令流数量增加了专用协处理器技术(X86指令集包括近300条指令, 科学计算只需要其中的约80条指令)提高用于数据处理的晶体管的比率提高晶体管的利用率可重构计算技术(FPGA): 由应用程序动态将芯片定制成专用协处理器单个数据处理部件

8、的运算速度有上限: frequency wall多核时代, 计算平台的关键特征: 不是单个执行核的性能提升了, 而是可利用的执行核的数量提升了如何处理更大规模的问题, 即: 如何在可接受的时间里完成更大规模数据的处理? 例如电信计费网络搜索视频点播地震现象反演: 有限元法, 地震区域的10m10m10m作为一个粒子, 模拟这些粒子在地震前后的运动轨迹一台计算机的服务能力有上限:处理器: 计算能力(处理器的数量、处理器内执行核的数量)内存: 容量/访问速度和带宽磁盘及IO:容量/访问速度和带宽数据级并行(data-level parallelism)和任务级并行(task-level paral

9、lelism) 多台计算机协作面向领域/应用的并行计算机/协处理器(如GPU)/可重构计算(FPGA)编译技术/微处理器体系结构技术不足以开发并行计算机的计算能力VLIW/superscalar:适合开发微处理器内部各个执行单元的并行能力编译技术:发现串行程序中无关的数据运算串行程序:隐藏了计算任务的数据运算无关性分析问题的数学/物理模型设计串行算法用串行语言编码算法例如:寻找N以内的素数, 该如何并行?prime0=2; prime1=3; p=2;for(i=5;iN;i=i+2) for(j=1; jp; j+) if ( i%primej=0 ) break;if ( jp ) bre

10、ak;primep = i;p+;并行程序设计以问题分解为基础, 开发面向并行计算机的程序: 通过多颗处理器协作、以及挖掘处理器的计算潜力, 达到加速数据处理的效率和提高问题求解的规模的目标手段挖掘每个处理器的计算潜力提供更多的并行线程,避免由于内存壁垒等因素导致执行单元处于空等待状态微指令级并行(向量计算), 提高单条指令的数据处理量多个处理器协作, 分摊计算任务: 缩短每个指令流的长度多计算机间数据划分: 增加存储容量目标加速数据处理的效率提高问题求解的规模并行程序设计(本门课程)关注: 发现计算任务中无关的数据运算,并利用数据运算的无关性开发并行计算机的计算能力向量处理器/阵列处理器系统

11、多处理器系统多计算机系统多核时代:当多核处理器给用户相应提高的性能体验时,才真正到了多核时代计算平台可为程序的运行提供多个执行核多核时代不等于多核处理器时代如何获得多个执行核?多核处理器SMP/CPU + Coprocessor(专用协处理器/FPGA)Cluster/MPPGrid/Cloud大多数人并没有多个执行核协同计算(并行计算)的体会计算机专业的整个本科教学,都是基于Von Neumann, 仅在操作系统、体系结构里提到一点并行和并发的概念使用的应用软件也基本是基于串行技术: 对计算性能的体验并未改进, 甚至有所下降串行程序+降低了主频和指令流水深度的多核处理器更复杂的操作系统: 多

12、线程支持/早先的超线程技术操作系统程序与用户程序同时运行: Cache、FBI的瓶颈效应可以在一台机器上同时运行几个程序: 多核处理器之前已经如此操作系统的多进程/多线程/超线程支持技术用于超级计算机(Cluster/MPP)的HTC (high-throughput computing)多核时代的特点已经具备的特点: 并行计算机不再与“昂贵”、“高性能”有必然联系,从体系结构上看,我们所使用的都是并行计算机支持SSE的多核CPU+GPU(每个GPU是一个微处理器阵列)CPU的微处理器内核包括多个执行单元,采用了superscalar/VLIW技术尚不具备的特点: 体验并行计算机对计算性能的提

13、升效果数据处理的速度更快可处理的数据规模更大挑战性问题: 并行程序的可移植性(衡量程序算法/代码与目标平台体系结构的紧密程度), 来自并行计算平台的异构性Intel/AMD处理器:CPU + CPUIBM CELL处理器: CPU + Coprocessor多处理器系统: SMP / (CPU + Coprocessor) / (CPU + FGPA) 多计算机系统: Cluster/MPP/Grid/Cloud编程人员:“傻瓜”还是“精英”“傻瓜”:知道语法就够了,其他事情交给编译、运行支持去做吧“精英”:我能,但只有我能;我能,但我只会这一点尽管都是面向流媒体计算CPU中的SSE:SIMD

14、,向量指令GPU:阵列处理器,线程并行编程(CUDA)新软件危机硬件上多核、软件上串行大量的晶体管闲置、使用效率不高主频的降低,导致性能体验的下降性能,再次成为编程技术的焦点:线程级并行对开发多核处理器的计算能力至关重要性能,依赖“精英”们实现体系结构的特征数学/物理模型中的计算并行性特征并行算法编写程序:既要做“经理”,又要做“业务员”“业务员”:完成数据处理“经理”:“业务员”的分工、协调(在单核处理器时代,可以由编译技术/微处理器体系结构技术自动解决)能以来自动机理论(运行时支持) 、形式化理论(编译技术)代替“精英”吗?能:当这个问题很简单时不能:并行算法设计是“艺术性”、而非“技术性

15、”的工作。请将一个求素数的串行程序并行化吧。并行程序设计:少数人的专利、编程人员的基本要求?内容提要课程基本信息对并行计算的认识并行计算的概念并行计算平台并行计算技术的使用问题是什么?课程目标与定位教学安排课程相关信息成绩评定:平时成绩(50%)+ max兴趣研究报告,期末笔试平时练习、编程实验: 50分兴趣研究报告:50分。1-3人一组,自选题目,题目来源:所在研究组面临的计算性能需求,结合课程学习,提出解决方案所在课题组正在解决的计算性能/计算效能方面的技术问题,结合课程学习,提出并行处理技术对该问题的促进高性能/高效能/云计算领域中感兴趣的前沿研究方向,结合课程学习,开展调研,给出该方向

16、的研究进展、趋势和评价期末考试:50分课程网页课程历史与内容沿革1999-2002年,李晓明MPI、HPF、OpenMP、并行编译集群、MPP、SMP2003年开始,余华山2005年MPI、OpenMP、并行算法设计与应用实例、基于网络的并行处理集群、MPP、SMP、网格2007年:教育部-Intel精品课程建设项目MPI、pthread与Intel多核技术、并行算法设计与应用实例、 OpenMP、基于网络的并行处理多核、 SMP、集群、MPP、网格2008年:教育部-IBM精品课程建设项目pthread与Intel多核技术、CELL BE技术、 MPI、并行算法设计与应用实例、基于网络的并行

17、处理(网格)多核、 SMP、集群、MPP、网格2011年:北京大学研究生课程建设以出版为目标的讲义完成一章,在课程网站发布一章并行程序设计的基本概念“并行程序”:支持多个操作、或者任务同时执行的一种规划做事情,总要规划动作的顺序:确定房子的地址、设计结构图、作预算、选择施工者、规划施工进度、买建筑材料和施工。规划的关键是分析问题各个部分之间的内在联系,任何规划都不能破坏这个联系总有一些部分之间是没有内在联系的,可以同时执行:房屋建筑的第一阶段施工、购买第二阶段建筑材料什么是并行程序设计:以任务分解为基础, 开发面向并行计算机的应用程序, 以提高数据处理的效率、或者提高可解问题的规模.计算平台:

18、支持同时执行多个数据处理运算(提供多个执行核/向量处理器)操作系统:支持多指令流调度(多核处理器计算平台)、或者多数据流访问(向量处理器平台)编程语言(以及编译运行系统):支持计算并行性的表达并行计算有什么用途并非所有问题都需要使用并行计算技术写WORD文档、写C/C+程序代码一个字符、一个字符地从键盘输入即使用最低端的机器,没有人感觉到不能及时得到响应(你同时打开了很多文档、再边听MP3除外)使用Google、Baidu搜索网页时刻都有成千上万的用户在搜索有兴趣吗?对比一下从Google、Baidu得到的响应速度、在一台高端服务器上模拟100个用户搜索1,000,000条记录的响应速度汶川地

19、震研究:反演地震过程,整个中国几乎都有震感震区离散化,每10个立方米作为一个粒子使用当今运算速度最快的处理器,对这个三维数组做一次最简单的运算,比如对每个元素做一次加法,需要多久?并行程序的时代已经到了?并行计算:在计算平台上同时执行多个数据运算提高计算的效能提高处理器的计算潜力提高处理器的利用率提高数据处理的速度提高可解问题的规模并行计算平台随处可见多核处理器:PC机、笔记本SMP:服务器Cluster:大型计算中心服务器网络计算环境:CN Grid、China Grid、TeraGrid、Google?并行程序的需求来自各个领域我们的生活已经离不开网络:成千上万的并发用户访问搜索引擎、新闻

20、网站、通信聊天网站、娱乐视频网站、多人网络游戏、公共服务网站(图书馆、电子文献数据库)、电子银行、电子政务工程、科研、生活服务越来越依赖于大规模数据的高效计算:飞机设计、汽车碰撞模拟、武器设计、油气勘探、神州飞船跟踪、基因数据分析、地震运动过程模拟、太阳风磁场重联模拟、三峡大坝选址、气象预报、并行计算的现状CPU执行程序时,使用了superscalar/VLIWCPU早就提供了SIMD支持,从MMX到现在的SSE4。一些商业软件使用了SIMD一些函数包使用了SIMD一些编译器在对循环优化时使用了SIMD程序员使用了吗?谁在用桌面机的多核处理器计算能力?桌面机上的应用以串行程序为主自己会写并行程

21、序的人不多一边写程序、一边听MP3时,可以用上,但影响编程、不用多核处理器时计算能力也够了SMP (Symmetric Multi Processing )服务器商业软件:开发了并行能力自己开发的软件:以串行程序为主主要是依靠操作系统支持多个进程/线程的同时执行能同时使用成百上千颗处理器的应用有多少?集群上的并行计算情况:以CCSE128节点使用情况为例(2006年3月)3309个计算任务平均使用1.85个计算节点节点资源利用率94.7%IBM RoadRunner哪个应用能同时使用12960颗CELLCELL处理器执行标量计算程序将非常慢(6912颗AMD Opteron似乎只是为了让每个节

22、点也能够正常执行原来的标量计算进程)天河计算机:主要计算能力来自GPU2048颗飞腾FT-1000八核心处理器 14336颗Intel Xeon X5670 2.93GHz六核心处理器 7168块NVIDIA Tesla M2050高性能计算卡(GPU)如何看待我国的天河一号A?这是一个了不起的成就:2万多颗处理器放在一起,并让它们一起协作,采用LU分解的方法求解一个密集矩阵的方程通信问题稳定性问题:一个部件的出错/故障率是百万分之一,这么多通信、存储、计算、及其他辅助部件放在一起,怎么能够稳定运行?功耗和散热问题这台机器本身也许并不是一个特别值得炫耀的成就有多少支持GPU的软件?支持GPU的

23、软件能够在哪些领域使用?GPU的基本数据类型是float,这样一个精度下如何进行迭代模拟类计算、高精度场计算?有多少应用能够有效开发1024颗处理器执行核的计算能力?比如速度能够提高600倍有多少人在开发面向这个机器的软件?软件的开发周期5-10年。谁依靠网络环境进行并行计算?TeraGrid:主要用户是SSH没有网格对这类用户没有影响其实就是使用超级计算机EGEE:主要工作是提供一个统一的用户接口支持并发用户,避免相互恶性竞争:把计算任务动态绑定到具体的超级计算机上没有支持一个问题同时使用多台超级计算机CN Grid、ChinaGrid上是否有跨超级计算机求解问题的应用?Google sea

24、rch engine:依靠网络计算环境支持大规模并发用户云计算的概念以数据为中心,根据数据需求选择计算资源并行技术的应用为何不如人意?并行计算平台有其适用范围并行处理技术的使用离不开人的参与并行求解算法的设计不是简单的串行算法并行化:按照体系结构设计算法向量处理器:标量数据要向量化多颗标量处理器:设计多个指令流你的笔记本、桌面机需要提高性能吗?需要性能提高的理由系统启动慢启动一个应用程序慢:打开一个PDF、WORD、VC编程环境、DVD视频文件、打开很多个应用程序时,系统响应很慢打开一个大的PDF文件、WORD文件,翻页浏览时响应慢如何提高性能:CPU的计算能力按照moore定律成长,你体验的

25、性能成长多少了?微软的应用程序都很大,载入系统慢同时运行的应用越多,系统切换需要的存储交换越大如果你觉得翻页浏览时响应慢,请你看看被打开的PDF文件、WORD文件有多大你使用的CPU性能早就远超过你的需求:软件的质量、存储的速度?把VISTA还原成XP,把XP替换成WIN98,速度的体验会如何?把CPU从INTEL CORE i5换成Pentium IV 1.8/3.2,速度的体验会如何?多核处理器: CELLDMA (Direct Memory Access )数据存取:编程人员需要知道一切细节,内存的大小、被访问数据的大小、计算和数据的划分方法、 标量计算速度慢:没有数据预取、乱序执行等。

26、我猜想这是在RoadRunner中需要AMD处理器的根本原因:支持已有的MPI并行程序如何编程N-body问题?(IBM开发的方法:按照空间对粒子排序,一个空间的交给一个处理器,不考虑空间之间的互相作用。如此一来,粒子排序成为性能瓶颈)除了MPEG这类计算,CELL还能在哪地方用?GPGPU能走多远? 现在急需回答这个问题IBM已经放弃CELL,GPU会面临同样的困境吗? 多核处理器: Intel Core 2CACHE数据存取:完全屏蔽数据访问细节,CACHE的命中率成为关键运行两个无关的进程涉及的数据都小:互相没有影响两个进程分别对一棵大的树进行搜索,串行执行两个进程与并发执行两个进程:哪

27、个更快?要协商对cache与系统内存之间系统总线的占用已经遇到一个应用:对一个大的数组进行变换确定数组A的元素值AI,J:产生两个随机数X,Y,将BX,Y赋值给AI,J使用串行程序要比并行程序更快执行核cache系统内存SMP存储一致性问题我在本课程的实验中,对N-body问题测试计算任务直接更新全局空间的数据,并行程序更慢:同步开销更适合计算松耦合问题。耦合:进程/线程运行过程中,互相交换数据、同步的频率(通信)求素数问题:判断I是否为素数,需要用到I之前的素数(同步)a=f(i)求和:任何时刻,只能有一个进程/线程在阅读、修改变量a程序员要设法避免频繁的同步cluster适合计算松耦合问题

28、、问题要有一定的复杂度程序员划分计算任务、数据确定数据的交换和同步当前最主要的超级计算机结构,其成功与MPI (message passing interface)这一并行编程模式分不开能够占用一台超级计算机全部CPU的应用很少网络计算环境(Grid/Cloud)访问网络中的某台超级计算机:当前主要的模式EGEE希望帮助用户选择需要访问的超级计算机不适合计算松耦合问题:计算无耦合问题不错,我们做了这方面的工作网格刚兴起的时候,很多人尝试在网络环境运行MPI程序,效果很不理想计算的问题要足够复杂:通信-计算比并行技术的使用离不开人的参与需要人根据问题特征发现并行性、选择计算平台需要人根据计算平台

29、划分计算任务、优化数据存取效率在基于Cache的多核处理器上,计算任务的粒度要考虑Cache的命中率在网络计算环境上,计算任务的粒度要到批作业级才合适看几个问题求素数问题:如何并行N-body问题:如何减少同步、维护数据一致性物体间的万有引力定律,促使粒子的运动规则的大数组计算:C语言中以行优先访问、Fortran语言中以列优先访问可以提高数据的存取效率,在基于Cache的多核处理器平台上,这个将更重要并行算法的设计问题从串行算法出发,寻找能够并行的循环串型程序自动并行化的思路,实践表明不理想串行算法本身常常没有体现问题的并行性、或者隐藏了数学/物理模型中的并行性求素数问题并行算法的设计实现要

30、考虑计算平台:以我们做的大规模基因组可变剪接问题为例问题域中有几万个互相独立的批作业在SMP/(有NFS、PFS支持的)cluster环境上:每个批作业作为一个任务在网络计算环境上,要把几百个、甚至几千个批作业合并成一个子任务才会有效:这方面国际上已经有些类似的工作新的软件危机?软件危机:与软件消耗的计算能力相比,硬件提供的计算能力过剩20世纪60、70年代,计算机的能力已经比50年代有巨大进步计算机的应用领域已经不只是在核武器计算人们使用汇编语言编写程序:程序员少、生产效率低难题:如何开发更多的软件解决高级语言和编译技术,屏蔽计算任务到硬件设备的映射:Fortran、C操作系统技术,屏蔽硬件

31、的实现和操作细节:软件移植、应用软件分时共享系统资源编程方法(软件复用、可维护、可扩充):结构化、面向对象今天的情形计算能力过剩Intel、AMD、IBM都在力推多核处理器网络已经不只是交流信息,在P2P方面事实上已经成为计算平台应用程序主要是串行的编写并行程序是少数人的专利、效率低需求在扩展网络计算已经深入社会生活的方方面面:支持大量的并发用户科学工程领域更加依赖高性能计算技术研究工作的深度扩展:高精度、大规模研究工作的广度扩展:软件的协同、数据的综合汇编语言写串行程序C语言写CELL处理器程序CPU操作寄存器数据,编程人员负责寄存器与内存数据的交换SPU操作局部内存数据,编程人员负责局部内

32、存与全局内存的数据交换编程人员将计算任务分解到指令,规划指令的执行次序编程人员将计算任务分解到SPU的粒度(代码和数据的规模不超过256KB),规划子任务的并发关系以BYTE为数据存取的基本单位以128BTYE(SPU寄存器大小)为数据存取的基本单位在Intel和AMD的多核处理器上:如何开发多个执行核的并行计算能力使用C语言:只使用了一个处理器执行核的计算能力使用C+pthread:并行算法设计、cache的命中率分别执行不同的进程:进程之间的Cache竞争更进一步:如何开发SMP服务器、CLUSTER、网络计算环境的并行能力?多核的硬件时代已经到来采用的多核技术,CPU的运算速度继续按照M

33、oore定律增长18个月,运算速度增长一倍一块芯片上通用微处理器执行核的数量真的会很多(比如超过32)吗?制造工艺也许允许厂商这么做,但真能从软件方面发挥其计算性能吗?矛盾:最终用户体验到的性能改进极其有限多核的存储模型是什么?存储设备的性能早已成为性能的瓶颈,(我认为)也成为决定多核处理器时代存续的关键基于cache? (我认为)至少不能对程序员完全透明基于DMA? (我认为)至少不能完全将细节交给程序员一种全新的技术?我们拭目以待适合多核时代的软件技术是什么?操作系统的理论和技术需要创新编译理论和技术需要创新编程语言和模式需要创新网络计算的时代已经到来曾经,网络对我们而言快速、廉价的数据交

34、换:FTP有限的资源共享:TELNET/SSH快速、廉价的通信:EMAIL用低端设备实现高性能的计算:分布式计算、CLUSTER今天的网络是信息存储、交流、聚合的平台网页搜索、浏览BBS/微博电子商务电子政务但我们还希望网络是计算资源、软件资源、数据资源的聚集和共享平台:人们象使用今天的大型计算机一样使用网络环境、人人都可以随时访问网格计算技术、云计算技术、还是其他计算技术?网络计算环境与超级计算机今天人们对网络计算环境的需求,用现有的超级计算机都能够满足,但难度要大、成本要高Google搜索:把所有的服务器聚集在一起,做一个集群出口带宽要很高散热问题很大所有数据维护人员要集中在一起还未有一个

35、高性能应用,能够占用RoadRunner/天河一号A的全部处理器资源当北大CCSE的集群有大量用户排队的时候,科学院计算中心的超级计算机没有人使用北大CCSE集群和科学院计算中心的超级计算机都有大量用户排队,但都有一个处理器空闲,因为每个用户的计算都需要至少两颗处理器处于维护成本等方面因素的考虑,每个应用软件、数据库都只会安装在数量有限的几台机器上课程目标与定位并行计算环境的时代已经到来多核处理器、SMP、集群、网络计算环境程序开发的目的:提高处理器运算单元的利用率,达到计算性能提高的目的未来的程序开发,是并行程序的开发:我们假定多核是处理器发展的必然网络是社会生活、工程设计制造、科学研究的基

36、本工具通过这门课程的学习,你成为合格的程序员:开发程序,最大限度发挥计算平台中处理器运算单元的利用率并行计算的基本原理:程序运行过程中,除了执行数据处理语句外,还有哪些事情是必须做的并行程序开发的基本方法:计算并行性的挖掘、算法设计、实现优化并行计算机的体系结构:工作原理、数据存储与访问教什么?近10年并行处理技术研究、推广应用的体会和认识把其中积累的应用实例拿来讲,抛弃“教科书”上的示例请学生讲他科研工作中面临的问题,帮助他提出解决方案请同学们“照猫画虎”准备几只“猫”:求素数、N-Body、Laplace等准备几个“动作”:MPI、pthread、CELL上的实现观摩“猫”的表演:样例并行

37、程序请同学们体会“不要与虎谋皮”:没有并行技术是不行的,但任何技术都有其局限性油气勘探地震数据处理,一个三维数组的规模在15GB,虽然现在的处理器速度已经很快,在每个数组元素上加1,要多久?分子化学运动过程模拟,做一个大分子(几千个原子),一个时间步上,有多少次浮点计算、一个数据要被访问多少次?N颗共享存储的处理器,数据访问的平均排队时间是多长N颗分布存储的处理器,数据交换的规模是多少教学方法结合具体的并行计算平台CELL处理器、Intel Core 2处理器SMP服务器集群结合教员在大规模科学工程计算积累的实例生物信息计算、流体力学、地质运动过程模拟、油气勘探计算、天体物理、 教员讲授PPT

38、习题电子版参考资料自编讲义:完成一章,在网站发布一章同学们的兴趣研究科研工作中的问题感兴趣的高性能/高效能研究前沿如何教?以实例和实践为牵引Intel多核处理器/SMP服务器:pthread并行技术集群:MPI并行技术CELL处理器:数据存储和访问的原理、实现机制,向量并行计算N-body:加速比上限求素数:计算并行性的发现“不求甚解”:“艺术家”需要“天赋”并行计算涉及的计算机技术:操作系统、体系结构、编译技术、网络通信有大量的trade-off:负载均衡与同步通信、重复计算与同步通信等实际问题基本是“一事一议”:没有通用的并行算法和模式“知其然”,然后“知其所以然”从并行基础理论出发,认识并行技术、分析应用需求运用并行基础理论,解释并行计算的现象“经典”也要“与时俱进”基础理论:加速比上限、BSP/MPI、计算-通信比、SPMD/MPMD教研相长及时取舍:取新技术(多核技术/线程技术),舍未通过实践检验的技术(HPF/OpenMP技术)教学内容 并行计算的基本概念与基础理论并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论