论文部分内容阅读
大数据背景下,行业应用数据呈爆炸性增长,统计分析的数据规模和处理复杂度不断增加,传统意义上的计算技术和信息系统的处理能力远远不能满足用户要求。随着高性能计算平台的不断发展,其在统计分析领域的应用开始广泛受到相关领域研究人员的关注,众多结合大数据平台的统计分析方法、从编译层面对编程语言进行优化的方法逐渐成为热门项目。作为深受统计学家追捧的编程工具R语言,和所有的解释型语言一样,存在着严重的性能弊端,需要利用并行方法提高代码执行性能。然而并行化程序设计的过程远比传统的串行化算法复杂的多,不仅需要数据分析程序员进行功能性的代码实现,还需要掌握很多分布式系统背景知识和并行程序设计技巧。上层数据分析和算法设计工作与底层复杂的并行化和分布式编程调试存在一个难以逾越的鸿沟,急需一种能够缩短普通程序员和常规程序设计方法距离的架构。首先,文章分析了R语言的特性。由于R语言是一门新兴的解释型统计学语言,没有系统的同类文献可供参考,因此本文先从源代码层面对R语言目前的实现方式进行了剖析,并着重从R语言的类型系统、向量化特性、函数式语言特性及与C语言结合等方面进行了系统性整理。然后对其运行时特性进行探讨,对比解释型语言和编译型语言在运行时的显著区别,并以目前的GNU R作为研究对象,构建了其运行时的执行框架,明确运行时阶段要处理的事务,如内存分配、数据通信等,为接下来的分布式并行系统运行时设计及优化奠定理论基础。其次,本文提出了基于R语言的分布式并行编程系统Rdp的设计思路。以提供一系列的支持R语言中常规向量化操作的并行编程接口作为系统的编程模型,采用消息传递接口(MPI)编程规范作为并行系统架构的主要实现方式,自顶向下分并行应用、并行接口、运行时环境(RTE)、操作系统及底层硬件几部分设计了基于R语言的并行运行时架构,并以RTE中的任务调度和资源分配任务为对象,对系统功能及API功能进行了设计。接下来,文章对系统的设计思路分层进行了实现与优化。按照底层系统环境交互、中间层调度工作节点及高层提供简易应用编程接口这三层抽象出并行编程的API,并使用R中的C语言接口以高效的编程语言实现MPI的任务调度和分配。不同层次编程接口功能的划分,有利于用户或者开发人员根据使用需求自由选择编程粒度实现并行,同时以R语言中使用最为广泛的泛函apply函数家族作为主要优化对象,能够在尽量不改变用户编程习惯的前提下提供一套可以在高性能计算平台上的通用接口。最后是文章的实验测试部分。首先,将Rdp中主要函数接口的性能与snow包和parallel包中的对应函数性能进行了对比测试,实验表明Rdp在处理大数据集、可扩展性、负载均衡效果方面都较其他二者有显著提升。之后使用性能监控工具Rtrace对R语言运行时函数执行时间分配和内存使用情况等方面进行了分析,提出了相应的优化策略。最后通过TWIX函数包的数据测试,证明了Rdp的易用性和高效性。