并行程序设计学习笔记(一)

为了提高处理器的能力,芯片制造商开始转向多核集成电路,即在单块芯片上有多个传统处理器的集成电路。串行程序是面向单核处理器的,并行程序是利用多核处理器。

并行程序的编写可以分为任务并行和数据并行。任务并行和数据并行都指将待解决问题所需要完成的任务分配到各个核上完成,但任务并行每个核完成的任务不相似,而数据并行相似。举个例子:当前的任务是三名老师批改语文数学英语试卷各九十份,按照任务并行就是每个老师批改语文数学英语各三十份,数据并行就是每个老师对应一门科目来批改。

通信与负载平衡。一个核或多个核将自己的部分和结果发送给其他核称为通信,同时并行中应该给每个核分配大致相同数目的数据来计算也就是负载均衡。如果某个核的数据明显大于其他核,那么其他核一定比负载大的核早完成任务并空置等待所有核完成任务,他们的计算资源就会浪费。

共享内存系统与分布式内存系统。共享内存计算是指将一个程序的任务分割成多个较小的、可在一个节点内并行运行的工作单元,即线程。这些线程共享了对某一部分内存的访问,故称之为共享内存计算。与之相比,分布式内存计算 的并行过程是通过多个进程(执行多线程)来完成的;每个进程都拥有各自的内存空间,其他进程无法访问。

并发,并行,分布式。在并发计算中,一个程序的多个任务在同一时段内可以同时执行。在并行计算中,一个程序通过多个任务紧密协作来解决某个问题。在分布式计算中,一个程序需要与其他程序协作来解决某个问题。

 冯诺依曼结构 冯诺依曼结构包括主存中央处理器(cpu),以及主存和cpu之间的互联结构。互联结构通常是总线,是由导线组成的传输线束。主存用来存放指令和数据。cpu主要包括控制器运算器,控制器负责决定执行程序的哪些指令,运算器负责执行。cpu中的数据和程序执行时的状态信息储存在寄存器中,程序计数器是控制器的一个特殊寄存器,用来存放下一条指令的地址。

冯诺依曼瓶颈 当数据和指令从主存传入到cpu时我们称指令从内存钟去取出或者读出,相反为写入或存入。因为互联结构限定了指令和数据的访问速率所以我们将主存和cpu之间的分离称为冯诺依曼瓶颈。

 进程和线程 当用户运行一个程序时,操作系统会创建一个进程。进程运行时会被划分为多个独立的任务也就是线程,当某个任务阻塞时其他任务能正常进行。线程从进程开始时从中派生出来结束时合并到线程中。

为了改进冯诺依曼结构,我们采取了三种改进措施: 缓存,虚拟存储器,低层次并行。

缓存 (cache)也称为高速缓冲存储器,顾名思义访问该区域的的时间会比其他区域的时间短。我们的程序在运行完一个区域后往往会接着访问临近的区域这个原理就是局部性原理。我们运用局部性原理使程序一次访问一个整块区域,而不是单个的指令或者数据,这些块被称为高速缓存块/行。比如说一个高速缓存行能够存下八个整数并且我们目前需要求一个长度为16的一个整数类型数组z[16]的和,那么我们在一开始在缓存中没能找到z[0]那么就会将z[0]到z[7]这8个元素从主存读到缓存中那么后面的7次运算需要的数据就已经在缓存中存在了,在走到z[8]时又会执行类似的步骤。当我们在cache中查找数据时,若找到则为cache命中,未能找到则为cache缺失。

Cache映射 我们把高速缓存行存放在cache中的不同位置分为全相联:高速缓存行放在cache的随机位置。直接映射:高速缓存行放在cache的唯一位置。n路组相联:高速缓存行能够放在cache中n个不同位置中的随机一个。

指令集并行 流水线:将任务分阶段安排。多发射:将任务的多条指令同时执行。通过流水线和多发射来实现指令集并行。指令集并行在大多数情况是不适用的,因为在程序运行许多地方有依赖关系,比如说斐波那契额数列,因为当前数列的值是前两个数列值得和所以求斐波那契额数列时就不能使用指令集并行。

并行硬件 根据Flynn分类法将计算机结构分为SIMD,MIMD,MISD,MIMD。Single,Instruction,Multiple,Data。单指令多数据流(SIMD)将多组数据执行相同得操作所以一个SIMD拥有一个控制单元和多个逻辑单元,每个逻辑单元对数据进行相同得操作。多指令多数据流(MIMD)将多组数据在多个处理单元上运行,所以一个MIMD拥有多个控制单元和多个逻辑单元,处理器之间是相互独立没有联系的。MIMD主要包括两种类型:共享内存系统和分布式内存系统。

此外本书接下来还作出了一点基础知识理论如:虚拟存储器,线性加速比,阿姆达尔定律,可扩展性等我就不再叙述了。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值