论文部分内容阅读
数据并行编程模型以其简单的特点在大数据计算领域获得了广泛的应用。但是,编写用户自定义函数的串行思维与实际的并行执行之间存在显著的差异,使得程序员容易忽略并行执行中的不确定性和通讯开销,并引入正确性与性能方面的问题。本文分别从这两方面问题入手,发现并改进了现有工作的不足。本文的主要工作包括:(1)针对并行执行不确定性引起的正确性问题,本文从上万个真实数据并行程序中提取了507个不同的Reduce函数并进行了人工分析,发现了大量并无正确性问题的不可交换Reduce函数,否定了现有工作关于不可交换Reduce函数必为程序缺陷的假设。此外,本文进一步发现了5种不可交换模式,以及部分模式依赖特定隐含数据性质保证确定性的特点。通过检查实际数据上的性质,本文成功发现了5个长期隐藏在产品环境中的真实程序缺陷,并讨论了改进现有测试方法的思路。(2)本文提出了Cybertron,一种动静态结合的数据并行程序网络流量优化技术。通过结合静态程序分析结果和运行时动态信息,Cybertron克服了现有静态技术在处理实际程序中面临的限制,通过在运行时精确跟踪给定运算对数据的使用情况,更细粒度地过滤无用数据,并使用数据约束编码的技术对数据进行更高效的编码。它在合理的运行时开销下显著提高了现有方法对数据并行程序网络流量的优化效果,并在各种网络环境下有效提高了程序性能。