版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ParallelAlgorithms
Chapter
2
Fundamental
TechniquesofParallelAlgorithms2023/7/6Y.XuCopyrightUSTC主要内容2.1平衡树方法2.2倍增技术
2.3分治策略
2.4划分原理
2.5流水线技术
2023/7/6Y.XuCopyrightUSTC2.1平衡树方法设计思想树叶结点为输入,中间结点为处理结点,由叶向根或由根向叶逐层并行处理。示例求最大值计算前缀和2023/7/6Y.XuCopyrightUSTC算法2.1SIMD-SM上求最大值算法Beginfork=m-1to0doforj=2k
to2k+1-1par-doA[j]=max{A[2j],A[2j+1]}endforendforend时间分析t(n)=m×O(1)=O(logn)p(n)=n/2c(n)=O(nlogn)非成本最优2.1平衡树方法2023/7/6Y.XuCopyrightUSTC前缀和问题定义n个元素{x1,x2,…,xn},前缀和是n个部分和:Si=x1*x2*…*xi,1≤i≤n
这里*可以是+或×串行算法:Si=Si-1*xi
计算时间为O(n)并行算法:p56算法2.2SIMD-SM上非递归算法(高层描述)
p58算法2.3SIMD-SM上非递归算法(底层描述)
令A[i]=xi,i=1~n,B[h,j]和C[h,j]为辅助数组(h=0~logn,j=1~n/2h)
数组B记录由叶到根正向遍历树中各结点的信息(求和)
数组C记录由根到叶反向遍历树中各结点的信息(播送前缀和)2.1
平衡树方法2023/7/6Y.XuCopyrightUSTCp56算法2.2SIMD-SM上非递归算法begin(1)forj=1tonpar-do//初始化B[0,j]=A[j]endif(2)forh=1tologndo//正向遍历forj=1ton/2hpar-doB[h,j]=B[h-1,2j-1]*B[h-1,2j]endforendfor
时间分析:
(1)O(1)(2)O(logn)(3)O(logn)===>t(n)=O(logn),p(n)=n,c(n)=O(nlogn)(3)forh=lognto0do//反向遍历
forj=1ton/2hpar-do(i)ifj=eventhen//该结点为其父结点的右儿子C[h,j]=C[h+1,j/2]endif(ii)ifj=1then//该结点为最左结点
C[h,1]=B[h,1]endif(iii)ifj=odd>1then//该结点为其父结点的左儿子
C[h,j]=C[h+1,(j-1)/2]*B[h,j]endifendforendforend2.1平衡树方法2023/7/6Y.XuCopyrightUSTC主要内容2.1BalancedTreesMethod2.2DoublingTechniques
2.3Divide-and-ConquerStrategy2.4PartitioningPrinciple2.5PipeliningTechniques2023/7/6Y.XuCopyrightUSTC主要内容2.1平衡树方法2.2倍增技术
2.3分治策略
2.4划分原理
2.5流水线技术
2023/7/6Y.XuCopyrightUSTC设计思想又称指针跳跃(pointerjumping)技术,特别适合于处理链表或有向树之类的数据结构;当递归调用时,所要处理数据之间的距离逐步加倍,经过k步后即可完成距离为2k的所有数据的计算。示例表序问题求森林的根2.2倍增技术2023/7/6Y.XuCopyrightUSTC表序问题:问题描述
n个元素的列表L,求出每个元素在L
中的次第号(秩或位序或rank(k)),rank(k)可视为元素k至表尾的距离;示例:n=7
(1)p[a]=b,p[b]=c,p[c]=d,p[d]=e,p[e]=f,p[f]=g,p[g]=g
r[a]=r[b]=r[c]=r[d]=r[e]=r[f]=1,r[g]=0
(2)p[a]=c,p[b]=d,p[c]=e,p[d]=f,p[e]=p[f]=p[g]=g
r[a]=r[b]=r[c]=r[d]=r[e]=2,r[f]=1,r[g]=0
(3)p[a]=e,p[b]=f,p[c]=p[d]=p[e]=p[f]=p[g]=g
r[a]=4,r[b]=4,r[c]=4,r[d]=3,r[e]=2,r[f]=1,r[g]=0注:递归计算位序r
(4)p[a]=p[b]=p[c]=p[d]=p[e]=p[f]=p[g]=g
r[a]=6,r[b]=5,r[c]=4,r[d]=3,r[e]=2,r[f]=1,r[g]=02.2倍增技术2023/7/6Y.XuCopyrightUSTC表序问题:算法:P60算法2.4
(1)并行做:初始化p[k]和distance[k]//O(1)(2)执行次//O(logn)
(2.1)对k并行地做//O(1)
如果k的后继不等于k的后继之后继,则
(i)distance[k]=distance[k]+distance[p[k]](ii)p[k]=p[p[k]](2.2)对k并行地做rank[k]=distance[k]//O(1)
运行时间:t(n)=O(logn)p(n)=n2.2倍增技术2023/7/6Y.XuCopyrightUSTC求森林的根问题描述一组有向树F中,如果<i,j>是F中的一条弧,则p[i]=j(即j是i的双亲);若i为根,则p[i]=i。求每个结点j(j=1~n)的树根s[j].示例初始时P[1]=p[2]=5p[3]=p[4]=p[5]=6P[6]=p[7]=8p[8]=8P[9]=10p[10]=11p[11]=12p[12]=13p[13]=13s[i]=p[i]
2.2倍增技术2023/7/6Y.XuCopyrightUSTC求森林的根示例第一次迭代后第二次迭代后算法:p61算法2.5运行时间:t(n)=O(logn)2.2倍增技术2023/7/6Y.XuCopyrightUSTC主要内容2.1BalancedTreesMethod2.2DoublingTechniques2.3Divide-and-ConquerStrategy
2.4PartitioningPrinciple2.5PipeliningTechniques2023/7/6Y.XuCopyrightUSTC主要内容2.1平衡树方法2.2倍增技术
2.3分治策略
2.4划分原理
2.5流水线技术
2023/7/6Y.XuCopyrightUSTC设计思想将原问题划分成若干个相同的子问题分而治之,若子问题仍然较大,则可以反复递归应用分治策略处理这些子问题,直至子问题易求解。求解步骤将输入划分成若干个规模相等的子问题;同时(并行地)递归求解这些子问题;并行地归并子问题的解成为原问题的解。示例SIMD-SM模型上的FFT递归算法2.3分治策略2023/7/6Y.XuCopyrightUSTCFFT递归算法DFT离散富里叶变换的定义给定向量,DFT将A变换为,即
写成矩阵形式为注:串行直接计算DFT需要O(n2)2.3分治策略2023/7/6Y.XuCopyrightUSTCFFT递归算法:将原问题的DFT划分为两个规模为n/2的子问题的DFTSIMD-SM模型上的算法:p64算法2.7
2.3分治策略2023/7/6Y.XuCopyrightUSTC主要内容2.1BalancedTreesMethod2.2DoublingTechniques2.3Divide-and-ConquerStrategy2.4PartitioningPrinciple
2.5PipeliningTechniques2023/7/6Y.XuCopyrightUSTC主要内容2.1平衡树方法2.2倍增技术
2.3分治策略
2.4划分原理
2.5流水线技术
2023/7/6Y.XuCopyrightUSTC划分原理:设计思想将原问题划分成p个独立的规模几乎相等的子问题;p台处理器并行地求解各子问题。Remark:划分重点在于:子问题易解,组合成原问题的解方便;常见划分方法均匀划分•
方根划分对数划分•
功能划分2.4划分原理2023/7/6Y.XuCopyrightUSTC均匀划分:方法:n个元素A[1..n]分成p组,每组A[(i-1)n/p+1..in/p],i=1~p示例:MIMD-SM模型上的PSRS排序
begin(1)均匀划分:将n个元素A[1..n]均匀划分成p段,每个pi处理A[(i-1)n/p+1..in/p](2)局部排序:pi调用串行排序算法对A[(i-1)n/p+1..in/p]排序(3)选取样本:pi从其有序子序列A[(i-1)n/p+1..in/p]中选取p个样本元素(4)样本排序:用一台处理器对p2个样本元素进行串行排序(5)选择主元:用一台处理器从排好序的样本序列中选取p-1个主元,并播送给其他pi(6)主元划分:pi按主元将有序段A[(i-1)n/p+1..in/p]划分成p段(7)全局交换:各处理器将其有序段按段号交换到对应的处理器中(8)归并排序:各处理器对接收到的元素进行归并排序end.2.4划分原理2023/7/6Y.XuCopyrightUSTC例PSRS排序过程。N=27,p=3,PSRS排序如下:2.4划分原理2023/7/6Y.XuCopyrightUSTC对数划分:方法:n个元素A[1..n]分成A[(i-1)logn+1..ilogn],i=1~n/logn,p=n/logn示例:PRAM-CREW上的对数划分并行归并排序
(1)归并过程:设有序组A[1..n]和B[1..m]
j[i]=rank(bilogm:A)为bilogm在A中的位序,即A中小于等于bilogm的元素个数
(2)例:A=(4,6,7,10,12,15,18,20),B=(3,9,16,21)n=8,m=4,p=2=>logm=log4=2=>j[1]=rank(blogm:A)=rank(b2:A)=rank(9:A)=3,j[2]=…=8B0:3,9B1:16,21
A0:4,6,7A1:10,12,15,18,20
A和B归并化为(A0,B0)和(A1,B1)的归并
2.4划分原理2023/7/6Y.XuCopyrightUSTC方根划分:方法:n个元素A[1..n]分成A[(i-1)n^(1/2)+1..in^(1/2)],i=1~n^(1/2),p=n^(1/2)示例:SIMD-CREW模型上的Valiant归并排序算法(1975年发表)
//有序组A[1..p]、B[1..q],(假设p<=q),处理器数k=(pq)^(1/2)
begin(1)方根划分:A,B分别按ip^(1/2)和iq^(1/2)分成若干段;(2)段间比较:A划分元与B划分元比较(共有p^(1/2)q^(1/2)对),确定A划分元应插入B中的区段;(3)段内比较:A划分元与B相应段内元素进行比较,并插入适当的位置;(4)递归归并:B按插入的A划分元重新分段,与A相应段(A除去原划分元)构成了成对的段组,对每对段组递归执行(1)~(3),直至A组为0时,递归结束end.
时间复杂度:若p=q=n,t(n)=O(loglogn)p(n)=n2.4划分原理2023/7/6Y.XuCopyrightUSTC功能划分:方法:n个元素A[1..n]分成等长的p组,每组满足某种特性。示例:(m,n)选择问题(求出n个元素中前m个最小者)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京市大兴区高米店街道社区卫生服务中心招聘临时辅助用工人员3人模拟试卷(含答案详解)
- 2026年襄阳枣阳市公开招聘事业单位工作人员96人(第二批)模拟试卷附答案详解【培优A卷】
- 2026福建厦门市杏南中学非在编(顶岗)教师招聘21人模拟试卷【夺冠系列】附答案详解
- 法律援助常识试题及答案
- 普阳电工考试题库及答案
- 第2课时 快速发展的经济
- 大模型认知计算专项攻关
- 蒙古语文教材单元测试题及答案
- 2026年福建南平邵武市公费师范生专项公开招聘35人参考题库(突破训练)附答案详解
- 《海-气相互作用》课件
- 曹海涛出的数学试卷
- UL489标准中文版-2019断路器UL标准中文版
- (高清版)JTG 3810-2017 公路工程建设项目造价文件管理导则
- 人教版四年级数学下册期末试卷-
- 《民宿文化与运营》课件-第四章 民宿建设
- JC-T 2536-2019水泥-水玻璃灌浆材料
- 矿井瓦斯灾害防治
- 2024届新疆第二师华山中学高二化学第二学期期末质量检测试题含解析
- 英语48个国际音标课件(单词带声、附有声国际音标图)
- 北京中医药大学《701中药综合1》(含中药学、分析化学、中药化学)历年考研真题汇编
- 腹腔镜右半结肠切除术
评论
0/150
提交评论