首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态数据竞争检测方法实验分析(二)

动态数据竞争检测方法实验分析(二)

原创
作者头像
chain
发布2018-06-12 22:39:22
6550
发布2018-06-12 22:39:22
举报

上一篇文章主要分析了各个检测方法在检测能力上的优劣。这篇文章主要分析一下各个检测方法对程序造成的影响以及可扩展性。

我们挑选了比较常用的SPLASH-2测试集程序用来测试这些动态数据竞争检测方法在程序运行过程中需要消耗的执行时间以及内存。

应用程序

输入参数

描述

同步

Cholesky

-p1/2/4/8/16/32 -b32 -c16384 ./inputs/tk17.O

cholesky decomposition

Lock+Condvar

FFT

-p1/2/4/8/16/32 -m20 -n65536 -l4

fast fourier transformation

Lock+Condvar

LU

-p1/2/4/8/16/32 –n512 -b16

factors a dense matrix into the product of a lower triangular and an upper triangular matrix

Lock+Condvar

Radix

-p1/2/4/8/16/32 –n5262144 -r8 -m524288

radix sort

Lock+Condvar

图例
图例
平均内存开销
平均内存开销

上图展示的是动态数据竞争检测方法在不同的程序上执行需要的平均内存开销。在Cholesky中可以明显的发现TS需要的内存开销是其他9种方法的两倍多,其次是ML。这两种由于保留了很多锁集和向量时钟信息,因此占用的内存会很多。FFT中当线程数目大于等于8并且不超过16时,ML需要的内存增长趋势大于其他几个方法,而当线程数目大于16时,HG需要的内存增长趋势大于其他方法,而ML趋于平稳。LU中各个方法总体来看都需要比较类似的内存开销并且增长趋势也保持一致。Radix中当线程数目大于8时,各个方法需要的内存开销都比较接近并且增长趋势趋于平稳。而当线程数目在2~8之间时,有一个明显的峰值并且内存开销增长趋势最快。

图例
图例
平均执行时间
平均执行时间

上图展示的是动态数据竞争检测方法在不同的程序上执行需要的平均执行时间。Cholesky中可以明显的发现当线程数目大于4时,TS需要的执行时间比其他方法都要多,其次是ML,然后是HG。而SL+和Loft相对来说执行得较快。FFT中可以明显的发现HG的执行时间比其他方法都要多并且执行时间增长趋势比其他方法都要快,当线程数目大于4时,其他方法需要的时间都趋于平稳。LU中当线程数目大于8时,各个方法需要的执行时间基本相同并且执行时间增长趋势也保持一致。Radix中,当线程数目大于8时,ML需要的执行时间都要大于其他方法并且执行时间增长趋势也更快。

同时我们也可以发现当线程数目在4时,这四个程序执行时间都会到达一个峰值。这点我们暂时还无法解释,期待后序研究中发现其中的问题。

锁集和向量时钟操作分析
锁集和向量时钟操作分析
锁集和向量时钟操作分析
锁集和向量时钟操作分析

上表展示的动态数据竞争检测方法在不同程序(16个线程)上执行时锁集操作和向量时钟操作相关的统计。VC OPS ON SYNC OBJS表示就是在同步对象上向量时钟相关的操作,其中JOINS表示向量时钟合并操作,ASSIGNS表示的就是向量时钟拷贝操作,CMPS表示就是向量时钟比较操作。而LOCKSET OPS表示就是锁集相关操作,INTSECS表示锁集交集操作,ASSIGNS表示锁集拷贝操作,ALLOCS表示锁集分配内存空间操作,ADDS表示就是锁集添加锁操作。

从这张表中能够我们发现在FFT程序中,HG在向量时钟的ASSIGNS和CMPS的操作数目远远多于其他方法,这也就不难理解为什么在Cholesky中HG需要的内存开销和执行时间都比较多。整体上来看,HG、TS在向量时钟和锁集上的操作相比于其他方法都要更多。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档