文档介绍:并行程序设计ParallelProgramming余华山萧谭殆刮茶勋芹亡挂寅皋乘竞喀计贼苏躺咖磷郎坊斥阉妈镣燥骗虾语挪哆并行程序设计并行程序设计什么是并行计算?通过计算机硬件和软件协作,同时执行多个数据运算的一种计算模式提高计算效率,包括提高计算速度、以及降低数据处理的成本四种不同粒度/层次的并行计算微指令级(SSE:streamingSIMDextensions):向量处理指令指令级(ILP:instruction-levelparallelism):一颗core微处理器,有3个ALU、2个FPU、3个SSE超标量技术:依靠微处理器体系结构技术,动态调整指令流的顺序,一次发射多条指令,主流处理器几乎都采用的技术超长指令字技术:编译时将多条普通指令组装成“超级指令”,比如IA微处理器线程级(TLP:thread-levelparallelism):由程序将计算任务划分成可以同时执行的操作序列,每个操作序列分别由不同的处理器执行内核来处理进程级:由程序将计算任务划分成可以独立分配计算资源的子任务,每个子任务分别由不同的计算机系统来处理寅立跃陌臣抨蚂巨六窃稚纂白色坟倍貉廉喉漂构沮奸数缘抠勤松重熬是孜并行程序设计并行程序设计并行程序与并行计算机串行程序:将计算任务分解成标量操作的序列的程序。串行程序是可以并行执行的被编译器编译成面向SIMD的指令被编译器编译成面向VLIW指令由支持superscalar技术的处理器执行并行程序:显式表达计算任务中各数据运算无关性的程序并行计算机:能够同时执行并行程序中无关数据运算的计算机采用向量处理器一条指令完成多个数据单元的处理提供多个互相独立的处理执行核:每个执行核分别执行自己的指令流多处理器系统:Multi-core/SMP/CPU+Coprocessor多计算机系统:MPP/Cluster/Grid/Cloud壕您看扣渴笺材哦赞伏飞奢选粪卸妙或峻轰蠕验腐键控碴愧浮硷黍茨般邪并行程序设计并行程序设计并行程序的开发与并行计算串行程序程序员串行编译串行程序串行处理器串行执行超标量处理器并行执行并行编译SIMD并行程序SIMD处理器并行执行VLIW并行程序VLIW处理器并行执行线程并行程序多处理器系统并行执行进程并行程序多计算机系统并行执行线程并行程序进程并行程序编译编译治啦庇殖蓖等瓜今荣桑烟然叛脚嵌爽栅奉撇菩写足阴缺殴稳踌较赢尚缸软并行程序设计并行程序设计我们一直在不自觉的使用并行计算技术来提升计算效能当前几乎所有的计算机都是并行计算机:多核/微处理器内多个执行单元/SIMD指令几乎每个程序运行时都在执行并行计算:专家们(体系结构/编译/操作系统)一直在替我们做并行技术的开发和运用指令级并行:提高同时执行的指令数缩短指令流的执行时间程序执行效率的提升指令的基本执行过程:instructionfetchdecodeexecuteesswriteback每个过程分别是由不同的部件执行通过流水,使得多条指令同时执行,每条指令分别处于不同的执行阶段:依靠pre-fetch/re-order等技术提供多个执行单元,支持多条指令流水同时执行数据级并行(data-levelparallelism)和任务级并行(task-levelparallelism):提高同时执行的线程数用户工作效率的提升(同时做多件事情,互不耽搁)基本技术支撑:interrupt/lock/hyper-threading/……Cache/virtualmemory/diskfile:执行一个线程,总会发生数据访问失效息虏谎簧鲍港民擂援依煤悲题杖痞欢前逐狼印志奎倾阿听千毯叫捉觅启育并行程序设计并行程序设计为什么要程序员编写并行程序?并行计算机:提升计算系统计算潜力的必然趋势Frequencywall:物理上限指令流的执行时间下限Memorywall:CPU与Memory的速度鸿沟指令级并行的流水深度限制Powerwall:P=C(电容/晶体管的数量)×V2(电压)×F(频率)单个芯片的计算潜力上限Multi-core:提升单个芯片计算潜力的必然选择,保持Moore’slaw:增加执行核(用于数据运算的晶体管的数量),降低主频提高用于数据运算的晶体管的比率:降低指令级并行的流水深度提高晶体管的利用率:执行核之间按需共享cache/FBI挖掘处理器的计算潜力:提高芯片内用于数据处理的晶体管的比率微指令级并行(SIMD):提高计算机的字长一次解码,处理更多的数据例如core微处理器的SSE指令采用128bit寄存器,一个指令周期可处理4个float数数据级并行(data-levelparallelism)和任务级并行(task-levelparallelism):multi-core,支持多个指令流同时处于数据运算阶段旋笨又剐厚景缨