1 / 68

并行计算

并行计算. 基本设计技术. 7.1 Partitioning Principle 7.2 Divide-and-Conquer Strategy 7.3 Balanced Trees Method 7.4 Doubling Techniques 7.5 Pipelining Techniques 7.6* Accelerated Cascading Strategy 7.7* Symmetry Breaking Techniques 7.8* Random Method. 7.1 划分设计技术. 设计思想

morton
Download Presentation

并行计算

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 并行计算

  2. 基本设计技术 • 7.1 Partitioning Principle • 7.2 Divide-and-Conquer Strategy • 7.3 Balanced Trees Method • 7.4 Doubling Techniques • 7.5 Pipelining Techniques • 7.6* Accelerated Cascading Strategy • 7.7* Symmetry Breaking Techniques • 7.8* Random Method

  3. 7.1 划分设计技术 • 设计思想 • 将原问题划分成若干个独立的几乎相等的子问题; • 多台处理器并行地求解各子问题。 Remark: • 划分重点在于:子问题易解,组合成原问题的解方便; • 有别于分治法 • 常见划分方法 • 均匀划分 •方根划分 • 对数划分 •功能划分

  4. 7.1.1 均匀划分 • 方法: 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.

  5. 7.1.1 均匀划分 • 例7.1 PSRS排序过程。N=27,p=3,PSRS排序如下:

  6. 7.1.2 对数划分 • 方法: n个元素A[1..n]分成A[(i-1)logn+1..ilogn],i=1~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 =>logm=log4=2 => j[1]=rank(blogm:A)=rank(b2:A)=rank(9:A)=3, j[2]=…=8 B0: 3, 9 B1: 16, 21 A0: 4, 6, 7 A1: 10, 12, 15, 18, 20 A和B归并化为(A0, B0)和(A1, B1)的归并

  7. 7.1.3 方根划分

  8. 7.1.3 方根划分

  9. 7.1.3 方根划分

  10. 7.1.4 功能划分 • 方法: n个元素A[1..n]分成等长的p组,每组满足 某种特性。 • 示例: (m, n)选择问题(求出n个元素中前m个最小者) - 功能划分:要求每组元素个数必须大于m; - 算法是基于Batcher排序网络,下面先介绍一些预备知识: 1.Batcher比较器 2.奇偶归并及排序网络: 网络构造、奇偶归并网络、奇偶排序网络 3.双调归并及排序网络: 定义与定理、网络构造、双调归并网络、双调排序网络

  11. 1. Batcher比较器 比较和条件交换操作: CCI 比较器网络:用Batcher比较器连成完成某一功能的网络 假定:每次每个元素只能与另一个元素比较 比较器网络的参数:比较器数目、延迟级数 7.1.4 功能划分

  12. 7.1.4 功能划分 2.1奇偶归并网络构造 • 有序序列A:a1,a2,…,an B: b1,b2,…,bm • 归并思想: • A, B中奇数号元素进入奇归并器; • A, B中偶数号元素进入偶归并器; • 再将奇归并器与偶归并器的输出交叉比较 注: (m,n)规模划分为:

  13. 0 2 0 0 2 1 4 0 2 2 2 6 3 6 3 6 3 6 3 8 1 0 1 4 4 1 5 4 4 1 8 3 5 6 5 5 8 8 8 5 7.1.4 功能划分 2.2 奇偶归并示例:m=n=4 A=(2,4,6,8) B=(0,1,3,5) (4, 4)2×(2, 2)4×(1, 1) (2,2)奇归并 (2,2)偶归并 交叉比较

  14. 1 3 1 3 8 8 3 2 5 1 3 5 8 5 1 4 2 2 5 7 7 4 2 6 6 7 4 4 7 6 8 6 7.1.4 功能划分 2.3 奇偶排序网络 • 基于奇偶归并网络 • 示例: B(8)

  15. 7.1.4 功能划分 3.1 定义及定理 • 定义:一个序列a1,a2,…,an是双调序列(Bitonic Sequence),如果: (1)存在一个ak(1≤k≤n), 使得a1≥…≥ak≤…≤an成立;或者 (2)序列能够循环移位满足条件(1) • 示例: 序列(1,3,5,7,8,6,4,2,0), (7,8,6,4,2,0,1,3,5)和(1,2,3,4,5,6,7,8) 都是双调序列。ak • 定理(Batcher定理): • 设序列a1,…,an,an+1,…, a2n是一个双调序列, 记 • bi=min{ai, ai+n} ==> MIN={b1,…,bn}, • ci=max{ai, ai+n} ==> MAX={c1,…,cn}, 则 • (1) bi≤cj (1≤i, j≤n) (2) MIN和MAX序列仍是双调的

  16. MIN MAX MIN MAX MIN MAX MIN MAX 7.1.4 功能划分 3.2 双调归并网络构造(依据Batcher定理) • 2n个输入的双调序列两两比较形成2个大小为n的MIN和MAX序列 • MIN和MAX序列是双调的,可以递归重复进行下去 MIN双调序列 MAX双调序列

  17. 0 0 8 8 1 0 8 6 2 6 1 4 1 3 6 2 3 4 4 0 3 4 5 1 6 2 2 3 5 8 5 5 7.1.4 功能划分 3.3 双调归并示例:双调序列(8,6,4,2,0,1,3,5)的(4,4)双调归并网络 MIN归并 MAX归并 两两比较 2个(2,2)双调归并网络

  18. 3 1 1 8 8 3 2 3 5 5 3 1 1 8 4 5 7 7 5 7 6 6 2 2 4 4 7 4 6 2 8 6 7.1.4 功能划分 3.4 双调排序网络 • 基于双调归并网络 • 示例:B(8)

  19. 7.1.4 功能划分 • 基于划分原理的(m,n)-选择过程 ①将n个输入数据划分成若干个大小相等的子序列(≥m); ②使用Batcher排序网络对各子序列排序; ③将有序子序列形成双调序列,进行 两两对接; 使用Batcher定理形成MAX,MIN序 列,弃去MAX序列; 再使用Batcher排序网络将MIN序列 排成有序序列; ④重复③直至MIN序列恰好包含所需 的m个最小元素为止。

  20. 1 1 5 2 6 13 4 7 12 15 7 10 7 11 3 16 1 1 13 8 14 10 9 2 4 4 2 1 4 7 2 8 2 11 3 3 4 5 5 9 3 3 15 5 6 9 6 12 9 6 14 16 7.1.4 功能划分 • (m,n)-选择示例: B(4) 奇偶排序 双调对接比较 取MIN 分组Batcher奇偶排序 分组 分组Batcher奇偶排序 双调对接比较 取MIN

  21. 7.2 分治设计技术 • 设计思想 • 将原问题划分成若干个相同的子问题分而治之,若子问题仍然较大,则可以反复递归应用分治策略处理这些子问题,直至子问题易求解。 • 求解步骤 • 将输入划分成若干个规模相等的子问题; • 同时(并行地)递归求解这些子问题; • 并行地归并子问题的解成为原问题的解。 • 示例 • SIMD-SM模型上的FFT递归算法

  22. 7.2 分治设计技术 FFT递归算法 • DFT离散富里叶变换的定义 给定向量 ,DFT将A变换为 ,即 写成矩阵形式为 注:串行直接计算DFT需要O(n2)

  23. 7.2 分治设计技术 FFT递归算法 • FFT递归算法原理 • j为偶数时 • j为奇数时 因此将原问题的DFT划分为两个规模相等的子问题的DFT

  24. 7.2 分治设计技术 FFT递归算法 • SIMD-SM模型上的算法

  25. 7.3 平衡树设计技术 • 设计思想 • 树叶结点为输入,中间结点为处理结点,由叶向根或由根向叶逐层并行处理。 • 示例 • 求最大值 • 计算前缀和

  26. A1 K=0 K=m-2 An/4 An/2-1 P1 Pn/2-1 An-1 K=m-1 An/2 An/2+1 An-2 P1 P2 Pn/2-1 Pn/2 An An+1 An+2 An+3 A2n-4 A2n-3 A2n-2 A2n-1 7.3 平衡树设计技术 • 算法: SIMD-TC(SM)上求最大值算法 Begin for k=m-1 to 0 do for j=2kto 2k+1-1 par-do A[j]=max{A[2j], A[2j+1]} end for end for end • 图示 时间分析 t(n)=m×O(1)=O(logn) p(n)=n/2 W(n)=O(n)---WT最优(总比较次数) 成本最优吗? P1

  27. 9 7 9 7 5 8 9 4 7 2 5 8 6 9 1 7.3 平衡树设计技术 • 求最大值示例

  28. 7.3 平衡树设计技术 前缀和 • 问题定义 n个元素{x1,x2,…,xn},前缀和是n个部分和: Si=x1*x2*…*xi, 1≤i≤n这里*可以是+或× • 串行算法: Si=Si-1*xi计算时间为 O(n) • 并行算法:SIMD-TC上非递归算法 令A[i]=xi, i=1~n, B[h,j]和C[h,j]为辅助数组(h=0~logn, j=1~n/2h) 数组B记录由叶到根正向遍历树中各结点的信息(求和) 数组C记录由根到叶反向遍历树中各结点的信息(播送前缀和)

  29. 总和 B31 前半部分和 B31 C31 h=3 j=1 P1 P1 后半部分和 B21 * B22 C22 j=1~2 h=2 B21 C21 *B13 P1 P1 P3 P3 * * B11 C13 B13 C14 B14 j=1~4 h=1 C11 B11 B12 C12 P1 P1 P2 P2 P3 P3 P4 P4 * * * * B01 *B07 *B03 *B05 B06 C06 B07 C07 B01 C01 B02 C02 B03 C03 B04 C04 C08 B08 h=0 j=1~8 C05 B05 P2 P4 P6 P1 P3 P5 P7 P8 A2 A4 A6 A8 A1 A3 A5 A7 计算:B[h,j]=B[h-1,2j-1]*B[h-1,2j] 正向遍历(求和) 7.3 平衡树设计技术 前缀和 • 例:n=8, p=8, C01~C08为前缀和 计算:C[h,1]=B[h,1] j=1 C[h,j]=C[h+1, j/2] j=even C[h,j]=C[h+1,(j-1)/2]*B[h, j] j=odd>1 反向遍历(播送前缀和)

  30. 7.3 平衡树设计技术 (3)for h=logn to 0 do //反向遍历 for j=1 to n/2h par-do (i) if j=even then //该结点为其父结点的右儿子 C[h,j]=C[h+1,j/2] end if (ii) if j=1 then //该结点为最左结点 C[h,1]=B[h,1] end if (iii) if j=odd>1 then //该结点为其父结点的左儿子 C[h,j]=C[h+1,(j-1)/2]*B[h,j] end if end for end for end SIMD-SM上非递归算法 begin (1)for j=1 to n par-do //初始化 B[0,j]=A[j] end if (2)for h=1 to logn do //正向遍历 for j=1 to n/2h par-do B[h,j]=B[h-1,2j-1]*B[h-1,2j] end for end for 时间分析: (1) O(1) (2) O(logn) (3) O(logn) ===> t(n)=O(logn) , p(n)=n , c(n)=O(nlogn)

  31. 1 2 3 4 1 2 3 4 7.3 平衡树设计技术 Prefix Sums on a Tree: More

  32. 1,3 3,7 1 2 3 4 7.3 平衡树设计技术 Prefix Sums on a Tree: More

  33. 3 7 1,3 3,7 3 1 1 2 3 4 7.3 平衡树设计技术 Prefix Sums on a Tree: More

  34. 3 1 3 3 7 7.3 平衡树设计技术 Prefix Sums on a Tree: More

  35. 3 3 1 3 3 7 7.3 平衡树设计技术 Prefix Sums on a Tree: More

  36. 3 3 3 1 3 3 7 7.3 平衡树设计技术 Prefix Sums on a Tree: More

  37. 1 3 6 10 7.3 平衡树设计技术 Prefix Sums on a Tree: More

  38. 7.3 平衡树设计技术 Prefix Sums on a Tree: More • Properties: • time: 2 log n • processors: 2n– 1 • cost O(n log n) • Comparison with PRAM algorithm • asymptotically equivalent • in practice, less efficient • weaker model

  39. 1 1 1 1 depth (time) = 3 complexity (cost) = 3  8 = 24 2 3 3 3 3 5 6 6 4 7 10 10 5 9 14 15 6 11 18 21 7 13 22 28 8 15 26 36 Specialized Circuit 7.3 平衡树设计技术

  40. 1 2 3 4 10 + 15 10 + 21 10 + 28 10 + 36 Recursive Circuit 7.3 平衡树设计技术 1 1 Circuit for 4 inputs 3 2 6 3 10 4 5 5 Circuit for 4 inputs 11 6 18 7 26 8

  41. 7.4 倍增设计技术 • 设计思想 • 又称指针跳跃(pointer jumping)技术,特别适合于处理链表或有向树之类的数据结构; • 当递归调用时,所要处理数据之间的距离逐步加倍,经过k步后即可完成距离为2k的所有数据的计算。 • 示例 • 表序问题 • 求森林的根

  42. a b c d e f g (1) (2) (3) (4) 7.4 倍增设计技术 表序问题: • 问题描述 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 (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]=0

  43. 7.4 倍增设计技术 表序问题: • 算法:P155算法6.10 (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)=n

  44. 7.4 倍增设计技术 求森林的根 • 问题描述 一组有向树F中, 如果<i, j>是F中的一条弧,则p[i]=j(即j是i的双亲);若i为根,则p[i]=i。求每个结点j(j=1~n)的树根s[j]. • 示例 初始时 P[1]=p[2]=5 p[3]=p[4]=p[5]=6 P[6]=p[7]=8 p[8]=8 P[9]=10 p[10]=11 p[11]=12 p[12]=13 p[13]=13 s[i]=p[i]

  45. 7.4 倍增设计技术 求森林的根 • 示例 第一次迭代后 第二次迭代后 • 算法:P157算法6.11 • 运行时间:t(n)=O(logn) W(n)=O(nlogn)

  46. 7.5 流水线设计技术 流水线技术: • 设计思想 • 将算法流程划分成p个前后衔接的任务片断,每个任务片断的输出作为下一个任务片断的输入; • 所有任务片断按同样的速率产生出结果。 • Remark • 流水线技术是一种广泛应用在并行处理中的技术; • 脉动算法(Systolic algorithm)是其中一种流水线技术; • 示例:5-point DFT的计算。应用秦九韶(Horner)法则,

  47. 7.5 流水线设计技术 • 示例:5-point DFT的计算,p(n)=n-1, t(n)=2n-2=O(n)

  48. 7.5 流水线设计技术 Systolic排序算法示例: Sorting 3, 4, 5, 1, 7, 2, 6 Step 1 6 3,4,5,1,7,2

  49. 7.5 流水线设计技术 Systolic排序算法示例: Sorting 3, 4, 5, 1, 7, 2, 6 Step 2 2 3,4,5,1,7 6

  50. 7.5 流水线设计技术 Systolic排序算法示例: Sorting 3, 4, 5, 1, 7, 2, 6 Step 3 7 3,4,5,1 2 6

More Related