多处理器-CA


在这里插入图片描述

消息传递与共享存储

两种并行系统:消息传递与共享存储对比

在这里插入图片描述

(1)共享存储:
复杂度高,影响了可升缩性(几百或几十个:SMP服务器系统几个到几十个)
在这里插入图片描述

(2)消息传递:
目前常用的几万个处理器;

共享存储与消息传递的编程复杂度

(1)任务划分与数据划分:
• 共享存储编程只需划分任务
• 消息传递编程除了划分任务外,还需划分数据和考虑通信
• 共享存储:BBS与消息传递:Email

(2)传递复杂的数据结构较困难:
• 多个指针组成的结构
• struct {int pa; int pb; int *pc}

(3)动态通信:
• { for ( i,j ){ x=…; y=…; a [ i ] [ j ] = b [ x ] [ y ] ; } }
• 进程迁移及进程数目的变化

例子

(1)积分求π:
1)问题:
在这里插入图片描述
2)串行程序:
在这里插入图片描述

3)并行程序:
该并行程序都采用SPMD(single program multiple data)模式;
(每个进程虽然都运行同一个程序,但是处理不同的数据)
其中:

  • numprocs:参与运算的进程个数,所有参与运算的进程都有相同的numprocs值;

  • myid:参与运算的进程的编号,每个进程都有自己的编号(一般并行编程系统都会提供接口函数让进程知道自己的编号)

  • 共享存储程序:(JIAJIA虚拟共享存储系统)
    在这里插入图片描述

    • 由jie_alloc()分配空间的变量pi是所有参与运算的进程共享的,所有进程只有一份,其他变量都是每个进程局部的,每个进程都有一份;
    • 每个进程通过numprocs和myid号分别计算部分的圆周率值,最后通过一个临界区的机制吧所有进程的计算结果加到一起;
    • Jia_lock()和jia_unlock()是临界区的锁机制;
  • 消息传递程序:
    在这里插入图片描述

    • 由malloc()分配空间的变量每个进程都有独立的一份,互相看不见;
    • 每个进程算完部分结果后,通过规约操作reduce()把所有进程的mypi加到0号进程的pi中;

(2)矩阵乘法:
1)问题描述:
在这里插入图片描述

  • A x B = C的过程可分为四个独立的部分:Ai x B = Ci,i = 1, 2, 3, 4
  • 每部分包含的运算可由一台处理机单独完成
  • 矩阵较大时,需分开存放,即Ai,Bi,Ci放在结点i上
  • 每个结点的工作分为AiB1, AiB2, AiB3, AiB4四个部分

2)并行程序:

  • 共享存储:
    在这里插入图片描述

    • 先由0号进程对A、B、C三个矩阵进程初始化,而其他进程通过jia_barrier()语句等待;
    • barrier是并行程序常见的同步方式,它要求所有进程都到齐后在前进;
    • 然后每个进程分别完成部分运算,在通过jia_barrier()到齐后由进程0统一打印结果;
  • 消息传递:
    在这里插入图片描述
    - 需要通过显示的发送语句send和接受语句recv进程多个进程之间的通信;
    - 先由进程0进行初始化后发生给其他进程,每个进程分别算完后在发生给进程0进行打印;
    - 在该机制中,要详细列出每次发送的数据大小和起始地址等信息,0号进程接收的时候还要把从其他进程收到的数据拼接在一个矩阵中;

(3)图像纠正
1)问题描述:
把原始图像in通过多项式函数P()映射到目标图像
2)串行程序:
在这里插入图片描述
3)共享存储并行程序:
在这里插入图片描述

  • 通信行为是在程序运行过程中动态确定的,这些应用消息传递的方法写并行程序难度大;
  • 数组in和out分布在不同进程的内存上,在消息传递环境下进程并行化时,由于访问in的下标(x,y)是通过多项式P()动态算出来的,编写程序是不知道谁需要跟谁通信;
  • 在共享存储环境下由于不用考虑数据分布,只考虑任务分配,所以并行化比较简单;

常见的共享存储系统体系结构

(1)分类依据:
存储器的分布、一致性的维护、实现方式等

(2)依据存储器的分布:

  • 集中式:多处理器由总线或交叉开关等与共享存储器相连(访问延迟相同),当个数增加时,集中式的存储器成为瓶颈;
  • 分布式(DSM):每个结点包含共享存储器的一部分,结点间由伸缩性好的互联网(如:mesh)相连,这样增加了访存带宽,但导致不一致的访存结构NUMA;

(3)常见结构:
1)无CACHE结构:

  • 集中式共享存储;
  • 无cache,多个处理器通过交叉开关或多级互联网络等直接访问共享存储器;
  • 无CACHE一致性问题,可伸缩性受限于交叉开关或多级互联网络的带宽;
  • 如:CRAY-XMP,YMP-C90

2)SMP结构(共享总线结构)

  • 集中式共享存储;
  • 每个处理器都有cache,多个处理器通过总线与存储器相连;
  • 侦听总线或环等维护一致性,但由于总线是独占性资源,可伸缩性有限;
  • 如:DEC,SUN,SEQUENT,SGI等公司的SMP产品、目前流行的片内多核也多采用该结构;

3)CC-NUMA结构

  • cache一致的分布式共享存储;
  • 共享存储器分布于各结点之间,结点间通过可伸缩性好的互联网相连,每
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值