首页 > 其他分享 >并行计算之绪论01

并行计算之绪论01

时间:2023-06-18 12:55:45浏览次数:60  
标签:01 frac 1.2 绪论 beta 并行计算 内存 PE alpha

一、绪论

1.1 基本概念

  1. 加速比:表示加速效果。单个处理器运行花费时间 / P个处理器运行花费时间;\(S=\frac{T(1)}{T(p)}\)
  2. 效率:\(E = \frac{S}{p} = \frac{T(1)}{T(p)\times p}\)
  3. 开销:\(C=T(p)\times p\)
  4. 可扩展性:处理器数目增多时并行程序的行为;
  5. 计算通信比:计算花费时间 / 处理器消息通信花费时间;
  6. 计算:在1个时间单位内,每个PE(处理单元)能完成2个数相加,并在本地内存保存计算结果;
  7. 通信:在3个单位时间内,一个PE能够把数据从自己的本地内存发送到另一个PE的本地内存;
  8. 输入和输出:程序开始时,整个输入数组A保存在0号处理单元PE0,程序结束时,计算结果应汇聚到PE0;
  9. 同步:所有PE同时进行计算、通信,或处于闲置状态;

1.2 求和案例

1.2.1 分配流程

PE = 1:即为串行。

PE = 2:PE#0分1半任务给PE#1,分别计算,PE#1将求和后数据汇聚到PE#0。

image-20230617004458512

PE = 4:

image-20230617004714400

1.2.2 分发时间计算

以PE = 2为例

  1. 最初PE#0存储全部数据;
  2. PE#0发送一般数据给PE#1,花费3个单位时间;(自己规定的,见1.2.4)
  3. 每个处理单元将数据相加,花费511个单元时间;(因为每个处理器分别有511个数据)
  4. PE#1求和后数据返回给PE#1,花费3个单元时间;
  5. PE#0把2部分数据相加,花费1个时间单元;

共计 3 + 511 + 3 + 1 个时间单元

通用表达式

使用\(p=2^{q}\)个处理单元,以及\(n=2^{k}\)个输入整数

  • 数据分发次数:\(3 \times q\)
  • 本地求和:\(\frac{n}{p} -1 = 2^{k-q}-1\)
  • 收集中间数据:\(3 \times q\)
  • 中间结果求和::\(q\)

则共 \(T(p,n)=T(2^{q},2^{k})=3q+2^{k-q}-1+3q+q=2^{k-q}-1+7q\)

1.2.3 扩展性分析

强扩展性分析:改变处理器的数量,并行计算时间、加速比、开销和效率变化规律;

弱扩展性分析:改变处理器的数量,同时改变数据量,并行计算时间、加速比、开销和效率变化规律;

上述算法不是强扩展性,是弱扩展性。

1.2.4 一般情形计算

$\alpha $:执行一次单独的假发操作需要的时长

$\beta $:传输一批整数需要的时长;

运行时间:\(T_{\alpha,\beta }(p,n)=T(2^{q},2^{k})=\beta q+\alpha(2^{k-q}-1)+\beta q+\alpha q=2\beta q +\alpha (2^{k-q}-1 + q)\)

加速比:$S_{\alpha ,\beta } (2^{q}, 2^{k})=\frac{T_{\alpha ,\beta }(2^{0}, 2^{k})}{T_{\alpha ,\beta }(2^{q}, 2^{k}) }=\frac{\alpha(2^{k}-1)}{2\beta q + \alpha(2^{k-q}-1+q)} $

通信比:\(\gamma=\frac{\alpha}{\beta}\)

求解最优单元:\(2^{q}={\frac{\gamma\ln2}{2+\gamma}}2^{k}\)

比如,对于\(\gamma=\frac{1}{3},n=1024\),加速比最大可求\(p=1000\)

当处理数据规模固定,并行效率和加速比依赖于计算单元个数和计算通信比;

1.3 并行计算基础

1.3.1 分布式内存

特点:每个PE只能访问自己的本地内存,如果跨PE访问,需要一个显式的通信步骤。

数据划分是分布式内存系统编程的关键。

image-20230618123227022

1.3.2 共享内存系统

通过一个共享总线或者纵横交换机,所有的CPU都能访问同一块公共内存空间。

  • 除了共享主存外,每个核心包含一块更小的本地内存;
  • 缓存一致性,存储在本地缓存中的值和存储在共享内存中的值保持一致;

image-20230618123237716

1.4 并行程序设计考虑因素

  1. 划分:给定的问题划分为子问题;
  2. 通信:选定划分方案决定了进程或县城之间需要的通信量和通信类型;
  3. 同步:为了以正确的方式共同运行,线程或进程之间可能需要同步操作;
  4. 负载平衡:多个县城或多个进程之间的工作量需要平均分配,以平衡他们各自的负载,并最小化空闲时间;

求和案例

image-20230618123941539

1.5 不同层次的并行

  1. 节点级并行化:需要针对分布式内存机器的模型实现算法,例如MPI(在第9章深入学习)或者UPC++(在第10章深人学习)等。
  2. 节点内的并行化:通常基于针对共享内存系统(多核CPU)的语言,比如C++多线程(在第4章深人学习),或者OpenMP(在第6章深人学习)。
  3. 加速卡级的并行化:把一部分计算任务分配给加速卡承担,比如大规模并行GPU等,借助包括CVDA在内的特定语言(将在第7章深入学习)。

image-20230618124555139
参考:《并行程序设计》

标签:01,frac,1.2,绪论,beta,并行计算,内存,PE,alpha
From: https://www.cnblogs.com/dbai/p/17488988.html

相关文章

  • 【雕爷学编程】Arduino动手做(114)---US-015高分辨超声波模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是......
  • ORA-00600 [13013],[5001]
    故障现象:Dumpcontinuedfromfile:/u01/app/oracle/diag/rdbms/test/test1/trace/test1_ora_50647.trcORA-00600:internalerrorcode,arguments:[13013],[5001],[455035],[67227408],[31],[67227408],[17],[],[],[],[],[]报错SQL:-updateTESTa-set(a.A,......
  • 算法与数据结构Day01
    希尔排序的实现#include<stdio.h>#include<stdlib.h>typedefintKeyType;typedefstruct{KeyType*elem;/*elem[0]一般作哨兵或缓冲区*/intLength;}SqList;voidCreatSqList(SqList*L);/*待排序列建立,......
  • 【题解】[NOIP2017 提高组] 逛公园
    题目描述:策策同学特别喜欢逛公园。公园可以看成一张\(N\)个点\(M\)条边构成的有向图,且没有自环和重边。其中\(1\)号点是公园的入口,\(N\)号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。策策每天都会去逛公园,他总是从\(1\)号点进去,从\(N\)号......
  • 单调栈复习01_230617
    主要关注栈内元素放置的是什么栈头-栈尾递增还是递减,寻找右侧最大元素,则栈内元素递增;例如Leetcode的每日温度,实则寻找右侧首个大于自身的元素位置,则栈内元素为下标、栈内元素逐渐增大,如果遍历到的元素小于栈顶元素则入栈,否则出栈主要逻辑如下:vector<int>dailyTemperatur......
  • 路径之谜(DFS)-2016年蓝桥杯国赛
    路径之谜-2016年国赛1、题目描述2、解题思路3、代码实现1、题目描述  小明冒充X星球的骑士,进入了一个奇怪的城堡。  城堡里边什么都没有,只有方形石头铺成的地面。  假设城堡地面是n×n*个方格。如下图所示。  按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但......
  • react经典面试题解析--持续更新--day01
    一、类组件和函数组件的区别(面试常考)简单理解(所有同学都要掌握)1、类组件有生命周期,函数组件没有2、类组件需要继承Class,函数组件不需要3、类组件可以获取实例化的this,并且基于this做各种操作,函数组件不行4、类组件内部可以定义并维护state,函数组件都称为无状态了,那肯定......
  • P4305 [JLOI2011] 不重复数字
    思路:新建一个数组或者哈希表,检查新输入的元素是否在里面,如果在就pass,如果不在就作为新元素存进去,最后输出即可数组实现:60分#include<bits/stdc++.h>usingnamespacestd;intmain(){intnum;cin>>num;for(num;num>=1;num--){intn,x;cin>>n;......
  • 服务器内存跑满是什么原因造成的 43.248.101.x
    相信大家在使用服务器的时候会有出现内存使用率比较高的情况,那接下来小编跟大家说下到底是哪些原因导致内存不足:一、应用程序池应用程序池有一个默认回收的时间,到了这个时间就会自动释放内存,这个时间一般是1740分钟,而这种程度的时间可能会导致应用程序池无法及时释放内存,从而出现内......
  • [GXYCTF2019]Ping Ping Ping 1
    先尝试输入ip=127.0.0.1发现啥也没有再次在后面输入ls查看文件发现有两个文件Cat一下发现有空格过滤进行空格绕过$(IFS)(?ip=127.0.0.1;cat$IFS$1flag.php)发现符合也进行了过滤尝试进行拼接flag?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php发现flag......