文章快速检索     高级检索
  浙江大学学报(工学版)  2017, Vol. 51 Issue (1): 160-167  DOI:10.3785/j.issn.1008-973X.2017.01.020
0

引用本文 [复制中英文]

蓝帆, 潘赟, 严晓浪, 宦若虹, CHENGKwang-ting. 片上网络良率评估的GPU加速[J]. 浙江大学学报(工学版), 2017, 51(1): 160-167.
dx.doi.org/10.3785/j.issn.1008-973X.2017.01.020
[复制中文]
LAN Fan, PAN Yun, YAN Xiao-lang, HUAN Ruo-hong, CHENG Kwang-ting. GPU acceleration for network-on-chip yield evaluation[J]. Journal of Zhejiang University(Engineering Science), 2017, 51(1): 160-167.
dx.doi.org/10.3785/j.issn.1008-973X.2017.01.020
[复制英文]

基金项目

浙江省自然科学基金资助项目(LY15F020008);国家自然科学基金资助项目(61204030,61302129);浙江省科技厅公益性技术应用研究计划资助项目(2014C31045)

作者简介

蓝帆(1989—), 男, 博士生, 从事片上网络的研究.
orcid.org/0000-0002-3299-9635.
E-mail: lanfan@vlsi.zju.edu.cn

通信联系人

潘赟, 男, 副教授.
orcid.org/0000-0002-9335-4291.
E-mail: panyun@vlsi.zju.edu.cn

文章历史

收稿日期:2015-11-23
片上网络良率评估的GPU加速
蓝帆1 , 潘赟2 , 严晓浪2 , 宦若虹3 , CHENGKwang-ting4     
1. 浙江大学 电气工程学院, 浙江 杭州 310027;
2. 浙江大学 信息与电子工程学院, 浙江 杭州 310027;
3. 浙江工业大学 计算机科学与技术学院, 浙江 杭州 310023;
4. University of California, Electrical Computer Engineering, CA Santa Barbara 93106, USA
摘要: 针对片上网络良率评估速度较慢、效率较低的问题, 研究片上网络良率评估的GPU加速, 提高评估算法的执行效率.将良率评估中的样本分析算法移植到GPU平台; 在分析、比较了不同平台, 随机样本生成算法优劣的基础上, 发现GPU平台不适合生成样本; 进一步优化CPU平台上的样本生成算法, 使之能与GPU一起, 实现异构并行; 提出CPU生成样本、GPU执行样本分析的异构并行方案.与仅使用CPU的评估算法相比, 采用提出的异构并行算法实现了10倍的运行效率提升.
关键词: 片上网络    良率    蒙特卡洛    GPU加速    
GPU acceleration for network-on-chip yield evaluation
LAN Fan1 , PAN Yun2 , YAN Xiao-lang2 , HUAN Ruo-hong3 , CHENG Kwang-ting4     
1. College of Electrical Engineering, Zhejiang University, Hangzhou 310027, China;
2. College of Information Science and Electronic Engineering, Zhejiang University, Hangzhou 310027, China;
3. College of Computer Science and Technology, Zhejiang University of Technology, Hangzhou 310023, China;
4. Electrical Computer Engineering, University of California, Santa Barbara, 93106, USA
Abstract: A speedup method based on GPU platform was presented in order to improve the efficiency of the time-consuming NoC yield evaluation algorithm. The runtime efficiency was improved. The evaluation algorithm was ported to GPU platform. GPU was not suitable for generating samples based on the random number generation comparison between GPU and CPU platform. The sample generation algorithm was optimized on CPU, making it more suitable to cooperate with GPU. A heterogeneous parallel algorithm was proposed, in which CPU generates the random samples and GPU analyzes the generated samples. The proposed algorithm achieved 10x speedup compared to the algorithm running on purely CPU.
Key words: network-on-chip    yield    Monte Carlo    GPU acceleration    

片上网络(network-on-chip, NoC)在单一芯片中集成了数十、甚至数百个处理核心, 因此是解决不断增长的计算需求的有效方案之一[1-4].由于集成了大量的处理核心, 片上网络的硅片面积较大, 更易受到工艺偏差和制造缺陷的影响[5], 导致较低的良率[6].为了能在设计阶段优化片上网络的良率, 需要在早期设计阶段, 从系统层准确地评估片上网络的良率.

基于负二项分布[7]的良率评估方法可以用于绝大多数冗余单元较少的设计, 如MPSoCs(multi-processor system-on-chip).考虑到片上网络有较多的冗余单元, 可靠性较高, 评估片上网络时应当考虑设计中的冗余特性[8-11].换言之, 一个有缺陷器件的片上网络能够利用冗余单元正常工作, 因此片上网络的良率应该明显高于无缺陷片上网络的概率[12-16].

近年来的研究主要依靠蒙特卡洛(Monte Carlo, MC)仿真方法[17-19]来评估片上网络的良率或可靠性.由于单一器件的良率较高, 且片上网络设计中包含冗余单元, 使得片上网络的良率较高, 进而导致基于蒙特卡洛仿真方法[17]的良率评估仿真次数极大, 效率很低.

在蒙特卡洛仿真方法中, 各次仿真过程完全独立, 具有良好的并行性, 可以采用GPU并行执行的方法加速.GPU加速蒙特卡洛方法已经被广泛应用于不同的算法中, 如应用在医学图像处理[20]、物理模拟[21]、金融计算[21]、通信仿真[22]以及电路静态时序的统计分析[23]等.

本文将片上网络良率评估算法移植到GPU上, 利用GPU的并行计算能力, 加速蒙特卡洛仿真, 提高评估效率, 最终实现了10倍效率的提升.

本文提出的异构并行算法有以下两方面贡献.1) 本文完成了片上网络良率评估算法的GPU移植, 利用GPU的并行性, 极大地减小了评估算法的运行时间, 提升了评估效率.由于评估算法基于蒙特卡洛仿真方法, 该方法需要对大量、相互独立的随机样本进行仿真, 并行性较好, 因此利用GPU的并行特性, 能够获得较大的性能提升.2) 本文深入研究了蒙特卡洛方法中所需的随机数生成算法, 比较了CPU和GPU平台随机数生成的优劣, 总结出CPU更适合生成的随机数; 进一步挖掘了CPU和GPU之间的异构并行能力, 提出了异构并行算法.由于许多随机数生成算法, 前、后两个随机数之间具有依赖关系, 即后一个随机数的生成依赖于前一个随机数[24-25], 不具有并行性, 不利于GPU移植.本文提出的异构并行算法中, 随机数生成部分采用CPU平台, 确保了随机数的质量, 从而保证良率评估的准确度, 又不会影响算法的整体效率.

1 片上网络的良率模型

以通用同构2D mesh拓扑的片上网络为例, 介绍良率模型, 如图 1所示.在该模型中, 一个片上网络由两类器件组成, 分别为:节点和互连.其中节点包含了一个处理核心及路由单元.每种器件有自身的良率, 记作YnodeYlink.各器件的无缺陷概率等于良率, 即YnodeYlink.

图 1 片上网络的良率模型 Fig. 1 Yield model of network-on-chip

各器件只有两种可能的状态, 即有缺陷和无缺陷, 因此可以用伯努利(Bernoulli)分布描述器件的状态.对于任意一个器件, 器件状态可用随机变量Xi表示, 即Xi~B(1, Ydevice), 其中B()表示二项分布(伯努利分布的一般形式), Ydevice可以是YnodeYlink(取决于器件类型).Xi的概率质量函数f(Xi)的定义为

$ f\left( {{X_i}} \right) = \left\{ \begin{array}{l} {Y_{{\rm{device}}}},{X_i} = 1;\\ 1 - {Y_{{\rm{device}}}},{X_i} = 0. \end{array} \right. $ (1)

对于整个片上网络中的所有p个器件, 可以使用多维随机变量X=[X1, X2, …, Xp]T描述p个器件的状态.f(X)=f(X1f(X2)…f(Xp)为X的概率质量函数.

由于片上网络具有较高的容错特性, Shamshiri等[17]将片上网络的良率定义为“有足够数量无缺陷节点的网络的概率”.其中, “足够数量”的具体数值由应用程序需求决定; “无缺陷节点”指节点和节点间的互连都需要“无缺陷”.满足这些条件的网络称为“连通”网络, 否则称为“不通连”网络.式(2) 定义了一个指示函数, 用于描述多维随机变量X的连通性.

$ {I_\rm {f}}\left( \boldsymbol{X} \right) = \left\{ \begin{array}{l} 1,{\boldsymbol{X}}{\rm{对应连通网络}};\\ 0,{\boldsymbol{X}}{\rm{对应不连通网络}}. \end{array} \right. $ (2)

图 1的片上网络为例, 解释连通性概念.如图 1所示, 片上网络的拓扑为3×4共12个节点, 假设应用程序需求9个无缺陷节点.网络中的各个器件会随机地出现缺陷, 如图 1(a)所示.图 1(b)~(d)分别表示3个不同的网络实例.图 1(b)中, 有多于9个无缺陷的节点, 因此是“连通”的; 图 1(c)中, 无缺陷节点的数量不足9个, 因此是“不连通”的; 图 1(d)中, 虽然有9个无缺陷节点, 但这些节点未连接在一起, 因此是“不连通”的.

如果能够穷举全部网络实例, 即穷举全部可能的多维随机变量X取值, 则片上网络的良率可以由下式计算:

$ Y = \sum\limits_{\boldsymbol{X} = {{\left[ {0,0 \cdots ,0} \right]}^{\rm{T}}}}^{\boldsymbol{X} = {{\left[ {1,1 \cdots ,1} \right]}^{\rm{T}}}} {{I_{\rm{f}}}\left( \boldsymbol{X} \right)} f\left( \boldsymbol{X} \right). $ (3)

式中:Y为片上网络的良率, 从X=[0, 0, …, 0]TX=[1, 1, …, 1]T的求和表示所有可能的X取值都需要计算.

2 片上网络良率评估算法

按式(3) 穷举全部网络实例是不现实的, 通常情况下, 可以采用蒙特卡洛方法[26]计算式(3).蒙特卡洛方法的计算原理如下所示:

$ {Y^{{\rm{MC}}}} = \frac{1}{N}\sum\limits_{n = 1}^N {{I_{\rm{f}}}\left( {{\boldsymbol{X}^{\left( n \right)}}} \right)} . $ (4)

式中:X(n)f(X)的第n个样本.当样本总数N足够大时, If(X)的平均值YMC会收敛至实际的良率Y.

YMC的方差σ等于YMC(1-YMC)/N[27], 正比于1/N.根据数理统计理论[27]可知, 若需要95%的置信区间(即[YMC-1.96σ, YMC+1.96σ])和10%的置信度α=10%, 则样本容量N必须满足下式:

$ N \ge \frac{{{{1.96}^2}}}{{{\alpha ^2}}}\frac{{\left( {1 - \sigma } \right)}}{\sigma }. $ (5)

式(5) 用作蒙特卡洛方法的停止条件.此外, 式(5) 可以用于估计完成蒙特卡洛方法所需的样本数量, 即N, 从而估计所需的运行时间.

2.1 异构并行评估算法

分析式(4) 可知, 算法的实现需要解决2个环节:1) 生成随机样本X(n); 2) 分析样本X(n), 计算If(X(n)).前者生成样本需要用到随机数生成算法, 如LCG[24]、MT[25]算法, 算法复杂度为O(n)(n为样本X的维度); 后者分析样本, 可以将样本转化为图表示, 并遍历图, 得到最大无缺陷节点数量, 从而判断连通性, 算法复杂度为O(n2).由于后者分析样本是整个算法的性能瓶颈(算法复杂度高于前者), 本文提出的异构并行算法将分析样本部分移植到GPU实现加速.对于生成样本, 由于随机数生成算法的随机数之间具有一定依赖性, 即将前一个随机数作为种子, 产生下一个随机数, 如LCG[24]、MT[25]算法, 不利于GPU移植, 因此本文将随机数生成部分保留在CPU上执行.此外, 异构并行算法进一步挖掘CPU和GPU之间的并行性, 即本轮在GPU上执行的样本分析和下一轮在CPU上执行的生成样本没有数据依赖关系, 可以同时执行, 进一步提升算法效率.详细的算法如算法1所示.

算法1 片上网络良率评估算法-异构并行

1:初始化连通网络计数器cnt := 0

2:初始化样本容量N := 0

3:初始化样本数组sample[1…K] := 0

4:初始化连通性数组conn[1…K] := 0

5: for i = 1, 2, …, K do

6:  sample[i] :=随机生成样本X

7: end for

8: repeat

9: 将sample数组从CPU传送到GPU

10: GPU for i = 1, 2, …, K do

11:  从sample[i]中取出样本X

12:  将样本X对应的网络实例转化为图表示, 并遍历此图, 记最大无缺陷节点数目为m

13:   if m >=应用程序所需要节点数目

14:    conn[i] := 1

15:   end if

16:  end for

17:  CPU for i = 1, 2, …, K do

18:   sample[i] :=随机生成样本X

19:  end for

20:  等待GPU for和CPU for执行完成

21:  将conn数组从GPU传送到CPU

22:  for i = 1, 2, …, K do

23:   cnt := cnt + conn[i]

24:  end for

25:  N := N+K

26: 良率Y = cnt / N

27: until N满足式(5)

在算法1中, 步骤10)~16) 的GPU for部分实现了分析样本的GPU并行执行, 并行执行的线程数为K, 实现了评估算法的执行效率提升.另一方面, 步骤10)~16) 的GPU for和步骤17)~19) 的CPU for之间没有数据依赖, 因此可以同时执行, 仅需要在步骤20) 确定两者都完成执行.为了实现GPU for和CPU for两者的并行执行, 需要保证GPU for中分析的样本和CPU for中生成的样本不相同, 即没有数据依赖关系, 因此, 在算法最初的步骤5)~7) 预先生成了一组样本, 使得每次循环过程中, GPU for分析的是本轮迭代的样本, 而CPU for生成的是下一轮的样本.

该算法有以下三方面优势:1) 利用GPU的并行特性, 提升评估算法的效率; 2) 随机数生成在CPU上执行, 确保了随机数的质量; 3) GPU和CPU之间的异构并行, 保证了CPU上的随机数生成不会影响算法的整体效率.

2.2 CPU评估算法

算法2给出CPU平台的评估算法.该算法与算法1在功能上完全等价, 因此两者结果的一致性会非常高.由于CPU平台的并行性较差, 该算法的运行时间远高于算法1, 效率非常低.

算法2 片上网络良率评估算法-CPU

1:初始化连通网络计数器cnt := 0

2:初始化样本容量N := 0

3: repeat

4: 随机生成样本X

5: 将样本X对应的网络实例转化为图表示, 并遍历此图, 记最大无缺陷节点数目为m

6:  if m >=应用程序所需要节点数目

7:   cnt := cnt+1

8:  end if

9:  N := N+1

10:  良率Y = cnt / N

11: until N满足式(5)

2.3 GPU评估算法

给出完全使用GPU平台的评估算法.完全使用GPU平台的难点在于随机数生成算法不能直接并行化.针对该问题, 本节的算法使用多个随机数种子, 解决随机数生成并行化的问题.具体来说, 记GPU并行线程数为K, 在开始GPU计算之前, 预先准备K个随机数种子, 使K个并行线程能够同时执行.与之相比, 算法1中只需要1个随机数种子.详细算法如下.

算法3 片上网络良率评估算法-GPU

1:初始化连通网络计数器cnt := 0

2:初始化样本容量N := 0

3:初始化随机数种子数组seed[1…K] := 0

4:初始化连通性数组conn[1…K] := 0

5: repeat

6:  for i = 1, 2, …, K do

7:   seed[i] :=系统时间

8:  end for

9:  将seed数组从CPU传送到GPU

10:  GPU for i = 1, 2, …, K do

11:  以seed[i]为种子, 随机生成样本X

12:  将样本X对应的网络实例转化为图表示, 并遍历此图, 记最大无缺陷节点数目为m

13:   if m >=应用程序所需要节点数目

14:    conn[i] := 1

15:   end if

16:  end for

17: 将conn数组从GPU传送到CPU

18:  for i = 1, 2, …, K do

19:    cnt := cnt + conn[i]

20:  end for

21:  N := N+K

22: 良率Y = cnt / N

23: until N满足式(5)

算法3中的GPU并行部分为步骤10)~16), 即GPU for部分.与算法1相比, 算法3使用GPU生成随机数, 执行时间会略微增加, 但非常接近.另一方面, 算法3多次取系统时间作为随机数种子, 如步骤6)~8) 所示, 解决随机数算法难以并行化的问题.在多次取系统时间的过程中, 相邻两次之间的时间间隔不会有太大变化, 因此数组seed[1…K]的数据基本上是一个等差数列, 这会影响随机数的质量, 从而导致良率评估的准确度下降.

2.4 综合分析

介绍了总共3种片上网络良率评估的算法, 分别是:CPU产生随机样本、GPU分析样本的异构并行算法(简记作GPU+CPU); CPU算法(简记作CPU); GPU算法(简记作GPU).3个算法的流程可以用图 2的示意图表示.

图 2 3种良率评估算法对比示意图 Fig. 2 Flow chart of three yield evaluation algorithms

图 2中的左侧是异构并行GPU+CPU算法, 由于每次都有K个线程同时执行, 总共需要迭代$\left\lceil {N/K} \right\rceil $($\left\lceil {} \right\rceil $为顶函数); 中间是CPU算法, 总共需要迭代N次; 最右侧是GPU算法, 与GPU+CPU一样, 只需要迭代$\left\lceil {N/K} \right\rceil $次.

记在CPU上的单线程产生样本和分析样本的时间分别为TC_genTC_analy; 在GPU上的K线程产生样本和分析样本的时间分别为TG_genTG_analy.在图 2左侧的异构并行GPU+CPU算法中, 产生样本和分析样本分别同时运行在CPU和GPU上, 因此执行时间为max(KTC_gen, TG_analy); GPU算法或CPU算法执行时间分别为(TG_gen+TG_analy)和(TC_gen+TC_analy).3种算法的总时间可以用表 1描述.对于GPU+CPU算法中的额外开销KTC_gen, 由于$\left\lceil {N/K} \right\rceil $远远大于1, 可以忽略.

表 1 3种算法的运行时间比较 Table 1 Runtime comparison of three algorithms
3 实验数据及分析

展示了3种不同算法的实验数据.实验平台使用的CPU为Intel i5 2.4 GHz; GPU为Intel Iris 5100 Graphics; GPU算法使用OpenCL实现, 并行执行线程数K=512, 该值与实验环境所使用的GPU最大并行线程数相等.假设应用程序所需求的节点数量为9.后文中的实验将使用不同的网络大小(拓扑大小)和不同的器件良率(YnodeYlink), 分析3种算法的优劣.

此外, 由于实验分析中片上网络的良率普遍较高, 能够达到99.9%以上, 实验中主要分析失效率, 即1-Y.

3.1 评估精确度分析

首先将器件良率固定为0.98, 即Ynode=0.98, Ylink=0.98;然后改变网络大小, 观察3种算法的结果是否一致.实验结果如图 3所示, 图中,S为网络大小.

图 3 3种良率评估算法在不同网络大小下的准确度比较 Fig. 3 Accuracy comparison of different network size

图 3所示, 3种算法的评估结果总体来看比较一致, 3条线基本都紧靠在一起.其中GPU算法的结果偏差比较明显, 比另2种算法的结果偏小.以具体数据来说, 在4×4网络下, GPU算法的结果为3.936 768×10-5, 而CPU算法和GPU+CPU算法的结果分别为4.784×10-5和4.662 408×10-5, GPU算法的相对误差达到17.7%.可见, GPU产生的随机数质量较低的问题, 已经达到了影响蒙特卡洛评估结果的程度.

观察不同器件良率下的3种算法结果, 具体选择了4种YnodeYlink结合, 实验结果如图 4所示.图中, “.9x-.9y”的标记表示Ynode=0.9x, Ylink=0.9y, 例如“.98-.99”的标记表示Ynode=0.98, Ylink=0.99.

图 4 3种良率评估算法在不同器件良率下的准确度比较 Fig. 4 Accuracy comparison of different device yield

图 4所示, 在该组实验结果中, GPU算法结果的偏小显现更明显:在3×4网络下, “.99-.98”和“.99-.99”明显偏小; 在4×4网络下, “.99-.98”明显偏小.可以总结出:GPU不适合产生随机数, 特别是在用于蒙特卡洛分析这类对随机数质量有一定要求的环境.

3.2 评估效率分析

将器件良率固定为0.98, 即Ynode=0.98, Ylink=0.98;改变网络大小, 观察3种算法的运行时间T.实验结果如图 5所示.

图 5 3种良率评估算法在不同网络大小下的运行时间比较 Fig. 5 Runtime comparison of different network size by using three evaluation algorithms

当网络较小时, 如3×4网络, 因为CPU算法的运行时间较小(约10 s), GPU和GPU+CPU的加速效果不是非常明显, 仅有5倍左右.当网络变大, 如4×5网络, CPU算法的时间需要近1 h.此时的GPU和GPU+CPU加速效果较显著, 仅需要5 min左右, 加速比大约为10倍.

将网络大小固定为3×4, 观察不同器件良率下的3种算法结果, 具体选择了4种YnodeYlink结合, 实验结果如图 6所示.图 6中, “.9x-.9y”的标记与图 4相同, 表示Ynode=0.9x, Ylink=0.9y.

图 6 3种良率评估算法在不同器件良率下的运行时间比较 Fig. 6 Runtime comparison of different device yield by using three evaluation algorithms

在不同器件良率下, GPU和GPU+CPU加速比基本上都保持在10倍左右, 无论是在网络良率较低时(即较小的YnodeYlink), 如“.98-.98”, 还是在网络良率较高时, 如“.99-.99”.

3.3 加速比分析

综合图 56可以看出, 采用GPU算法和GPU+CPU算法的加速比似乎为一个定值.将全部数据样本点, 包括不同网络大小(3×4, 4×4, 4×5) 和不同器件良率(各种YnodeYlink的组合)的结果, 绘制在一张图上, 如图 7所示.

图 7 不同良率下的加速比分析 Fig. 7 Speedup under different scenarios

分析图 7可见, CPU算法与GPU算法和GPU+CPU算法之间的间隔基本上是固定的, 大约为10倍, 因此GPU和GPU+CPU的加速比大约为10倍.在低良率下, 即1-Y=10-3附近, GPU和GPU+CPU的曲线变得平坦, 加速比略有降低, 约为5倍, 这一范围对应网络较小(3×4网络)的情形.加速比的降低不影响GPU和GPU+CPU的高效率, 因为在该范围内, 无论是CPU还是GPU或GPU+CPU都能在数秒内完成良率评估(GPU和GPU+CPU 2 s, CPU 8~10 s), 运行时间较短, 一般不需要担心评估效率的问题.

算法整体包含2个主要阶段:样本随机生成阶段和样本分析阶段.选用3种不同的网络(3×4, 4×4, 4×5), 将器件良率固定为0.98, 即Ynode=0.98, Ylink=0.98, 进一步分析整体加速比的瓶颈.首先将算法中的2个阶段, 样本生成阶段和样本分析阶段, 分别记作gen和analy; 然后将CPU+GPU算法中两个阶段的执行时间以CPU算法的总执行时间作归一化, 结果如图 8所示.图中,T′为归一化的运行时间.

图 8 异构并行算法中样本生成阶段和样本分析阶段 Fig. 8 Sample generation phase and sample analysis phase

在GPU+CPU算法中, 生成阶段(gen)和分析阶段(analy)分别同时运行在CPU和GPU上, 瓶颈为两者中的时间较大者.如图 8所示, CPU算法的总运行时间为gen和analy的累加(如图 8中1与2所示), GPU+CPU算法的gen和analy是平行进行的(如图 8中3与4所示), 总时间为两者中的时间较大者.

分析图 8可知, GPU+CPU算法的瓶颈会随着网络大小的改变而变化.当网络较大时(如图 8的4×5网络所示, 对应片上网络的良率较高), 样本分析时间(analy)大于样本生成时间(gen), 即表 1公式max(KTC_gen, TG_analy)中TG_analy > KTC_gen, 此时的瓶颈是GPU上的样本分析, 因此加速比由GPU决定.当网络较小时(如图 8的3×4网络, 对应片上网络良率较低时), 样本分析时间(analy)小于样本生成时间(gen), 即表 1公式max(KTC_gen, TG_analy)中KTC_gen > TG_analy, 此时算法的瓶颈不再是GPU上的样本分析, 而是CPU上的样本生成, 因此降低了低良率范围内的整体加速比, 即图 7中的低良率范围加速比.

观察图 8中的4×4与4×5网络, 即性能瓶颈在GPU的情形可以发现, CPU+GPU算法都能够保持10倍左右的加速比.通过控制GPU上的并行线程数量, 观察加速比与GPU并行容量之间的关系.在本文的实现环境中, GPU的最大线程数量K=512, 使K=256、128, 观察4×4网络下, Ynode=0.98, Ylink=0.98的加速比变化, 结果如表 2所示.表中,T1为CPU算法的运行时间,T2为GPU+CPU算法的运行时间,P为加速比.

表 2 不同并行线程数量下的加速比 Table 2 Speedup under different number of parallel threads

分析表 2可知, 随着K从512降至256和128, 加速比随之降至约1/2和1/4.可见, 加速比和GPU并行线程数量基本呈线性关系.表 1公式中, 当瓶颈在GPU, 且$\left\lceil {N/K} \right\rceil $远大于1时(实验中$\left\lceil {N/K} \right\rceil $都在104量级以上), GPU+CPU的算法时间可以简化为$\left\lceil {N/K} \right\rceil $·TG_analy, 与CPU算法时间N(TC_gen+TC_analy)相比, 加速比与K呈线性关系.可知, 只要整个算法的性能瓶颈在GPU, 就可以通过提升GPU的并行线程数量(例如使用更强大的GPU), 进一步提升加速比.

4 结语

本文以片上网络的良率评估为背景, 研究蒙特卡洛算法的GPU加速技术.在将该算法移植到GPU的过程中, 分析随机数生成算法GPU移植的优劣, 总结出CPU更适合随机数生成算法, 提出CPU与GPU异构并行的良率评估算法.实验数据显示, 采用异构并行算法能够在保证评估准确度的前提下, 减少10倍的运行时间, 极大地提升了良率评估的效率.

参考文献
[1] MARCULESCU R, OGRAS U Y, PEH L S, et al. Outstanding research problems in NoC design: system, microarchitecture, and circuit perspectives[J]. IEEE Transactions on Computer-aided Design of Integrated Circuits and Systems, 2009, 28(1): 3–21. DOI:10.1109/TCAD.2008.2010691
[2] BELL S, EDWARDS B, AMANN J, et al. TILE64 processor: a 64-Core SoC with mesh Interconnect [C]//IEEE International Solid-State Circuits Conference-Digest of Technical Papers. San Francisco: IEEE, 2008.
[3] VANGAL S, HOWARD J, RUHL G, et al. An 80-Tile 1.28TFLOPS network-on-chip in 65nm CMOS [C]//IEEE International Solid-State Circuits Conference-Digest of Technical Papers. San Francisco: IEEE, 2007.
[4] 全励, 程爱莲, 潘赟, 等. 基于旁路通道的片上网络差别型服务实现方法[J]. 浙江大学学报:工学版, 2013, 47(6): 957–968.
QUAN Li, CHENG Ai-lian, PAN Yun, et al. Bypassed channels based differentiated service implementation method for network-on-chip[J]. Journal of Zhejiang University: Engineering Science, 2013, 47(6): 957–968.
[5] KOREN I, KOREN Z. Defect tolerance in VLSI circuits: techniques and yield analysis[J]. Proceedings of IEEE, 1998, 86(9): 1819–1838. DOI:10.1109/5.705525
[6] KAHLE J A, DAY M N, HOFSTEE H P, et al. Introduction to the cell multiprocessor[J]. IBM Journal of Research and Development, 2005, 40((4.5): 589–604.
[7] YANG Y, SHI Z, YU J, et al. Evaluating performance of manycore processors with various granularities considering yield and lifetime reliability [C]//IEEE International Symposium on Circuits and Systems. Seoul: IEEE, 2012.
[8] CHEN Y Y, UPADHYAYA S J. Yield analysis of reconfigurable array processors based on multiple-level redundancy[J]. IEEE Transactions on Computers, 1993, 42(9): 1136–1141. DOI:10.1109/12.241602
[9] MICHALKA T L, VARSHNEY R C, MEINDL J D. A discussion of yield modeling with defect clustering, circuit repair, and circuit redundancy[J]. IEEE Transactions on Semiconductor Manufacture, 1990, 3(3): 116–127. DOI:10.1109/66.56568
[10] BREUER M A. Trading off area, yield and performance via hybrid redundancy in multi-core architectures [C]//IEEE VLSI Test Symposium. Berkeley: IEEE, 2013.
[11] PHAM D, ASANO S, BOLLIGER M, et al. The design and implementation of a first-generation CELL processor: a multi-core SoC [C]//International Conference on Integrated Circuit Design and Technology. Austin: IEEE, 2005.
[12] CHOUDHURY A D, PALERMO G, SILVANO C, et al. Yield enhancement by robust application-specific mapping on network-on-chips [C]//NoCArc. New York: IEEE, 2009.
[13] KHALILINEZHAD S H, REZA A, RESHADI M. Yield modeling and yield-aware mapping for application specific networks-on-chip [C]//NORCHIP. Lund: IEEE, 2011.
[14] KOLOGESKI A, CONCATTO C, MATOS D, et al. Combining fault tolerance and serialization effort to improve yield in 3D Networks-on-Chip [C]//IEEE International Conference on Electronics, Circuits, and Systems. Abu Dhabi: IEEE, 2013.
[15] PALESI M, KUMAR S, CATANIA V. Leveraging partially faulty links usage for enhancing yield and performance in networks-on-chip[J]. IEEE Transactions on Computer-aided Design of Integrated Circuits and Systems, 2010, 29(3): 426–440. DOI:10.1109/TCAD.2010.2041851
[16] RODRIGO S, HERNANDEZ C, FLICH J, et al. Yield-oriented evaluation methodology of network-on-chip routing implementations [C]//International Symposium on System-on-Chip. Tampere: IEEE, 2009.
[17] SHAMSHIRI S, CHENG K T. Modeling yield, cost, and quality of a spare-enhanced multicore chip[J]. IEEE Transactions on Computers, 2011, 60(9): 1246–1259. DOI:10.1109/TC.2011.32
[18] SHAMSHIRI S, CHENG K T. Yield and cost analysis of a reliable NoC [C]//IEEE VLSI Test Symposium. Washington: IEEE, 2009.
[19] SHAMSHIRI S, CHENG K T. Modeling yield, cost, and quality of an NoC with uniformly and non-uniformly distributed redundancy [C]//IEEE VLSI Test Symposium. Santa Cruz: IEEE, 2010.
[20] 解聪, 雷辉, 徐星, 等. 基于并行欧式距离变换的三维障碍距离场计算[J]. 浙江大学学报:工学版, 2014, 48(2): 360–367.
XIE Cong, LEI Hui, XU Xing, et al. Computing 3D distance fields with obstacles based on parallel Euclidean distance transform[J]. Journal of Zhejiang University: Engineering Science, 2014, 48(2): 360–367.
[21] 巨涛, 朱正东, 董小社. 异构众核系统及其编程模型与性能优化技术研究综述[J]. 电子学报, 2015, 43(1): 111–119.
JU Tao, ZHU Zheng-dong, DONG Xiao-she. The feature, programming model and performance optimization strategy of heterogeneous many-core system: a review[J]. Acta Electronica Sinica, 2015, 43(1): 111–119.
[22] 党青青. 基于GPU的通信仿真加速方法研究[D]. 北京: 北京邮电大学, 2015.
DANG Qing-qing. The research of acceleration methods in communication simulation based on GPU [D]. Beijing: Beijing University of Posts and Telecommunications, 2015. http://cdmd.cnki.com.cn/Article/CDMD-10013-1015585681.htm
[23] 马海晨. 基于GPU的EDA加速技术[D]. 上海: 复旦大学, 2011.
MA Hai-chen. EDA acceleration techniques based on GPU [D]. Shanghai: Fudan University, 2011. http://cdmd.cnki.com.cn/Article/CDMD-10246-1011194849.htm
[24] KNUTH D E. Seminumerical algorithms, Vol. 2 of the art of computer programming[M]. 3rd ed. Boston: Wesley, 1981: 763-767.
[25] MATSUMOTO M, NISHIMURA T. Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator[J]. ACM Transactions on Modeling and Computer Simulation, 1998, 8(1): 3–30. DOI:10.1145/272991.272995
[26] ROBERT C, GEORGE C. Monte Carlo statistical methods[M]. 2nd ed. New York: Springer, 2004: 325-330.
[27] SHAO J. Mathematical statistics[M]. 2nd ed. New York: Springer, 2003: 524-530.