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

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

我们挑选了比较常用的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在向量时钟和锁集上的操作相比于其他方法都要更多。

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏章鱼的慢慢技术路

CodeCombat地牢关卡Python代码

2468
来自专栏Kirito的技术分享

JAVA拾遗 — JMH与8个代码陷阱

JMH (http://openjdk.java.net/projects/code-tools/jmh/) 是 Java Microbenchmark Har...

1454
来自专栏向治洪

策略模式

策略(Strategy)模式 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使...

1759
来自专栏吉浦迅科技

DAY59:阅读 #pragma unroll

By default, the compiler unrolls small loops with a known trip count. The #pragm...

582
来自专栏人工智能LeadAI

拼图游戏和它的AI算法

写了个拼图游戏,探讨一下相关的AI算法。拼图游戏的复原问题也叫做N数码问题。 拼图游戏 N数码问题 广度优先搜索 双向广度优先搜索 A*搜索 游戏设定 实现一个...

53411
来自专栏架构师小秘圈

MapReduce极简教程

一个有趣的例子 你想数出一摞牌中有多少张黑桃。直观方式是一张一张检查并且数出有多少张是黑桃? ? MapReduce方法则是: 给在座的所有玩家中分配这摞牌 ...

3838
来自专栏PPV课数据科学社区

【学习】使用hadoop进行大规模数据的全局排序

1. Hellow hadoop~~! Hadoop(某人儿子的一只虚拟大象的名字)是一个复杂到极致,又简单到极致的东西。 说它复杂,是因为一个hadoop...

2923
来自专栏AI科技评论

用于规划的分层有限状态控制器| IJCAI2016杰出论文详解

导读:2016国际人工智能联合会议(IJCAI2016)于7月9日至7月15日举行,今年会议聚焦于人类意识的人工智能,本文是IJCAI2016杰出论文(Dist...

3194
来自专栏CDA数据分析师

如何高效地学好 R?

本文由知乎著名答主黄宝臣原创,CDA数据分析师已获得授权 学R主要在于5点三阶段: 第一阶段有一点:基础的文件操作(read.*,write.*)、数据结构知...

1925
来自专栏Linyb极客之路

浅谈黑盒测试和白盒测试

  从图中可以直接看出来,黑盒测试就当整个程序是个黑盒子,我们看不到它里面做了些什么事情,只能通过输入输出看是否能得到我们所需的来测试。而白盒测试可以当盒子是透...

1591

扫码关注云+社区