在交互式r语言平台中进行并行线性代数计算的方法

文档序号:9631450阅读:578来源:国知局
在交互式r语言平台中进行并行线性代数计算的方法
【技术领域】
[0001]本发明涉及并行计算技术,尤其涉及一种能在交互式(interactive) R语言平台中进行并行线性代数计算的方法。
【背景技术】
[0002]R语言是数据科学领域中应用广泛的一种程序设计语言。R语言为计算机用户提供了大量常用的统计计算函数,并且支持用户自己编写程序对R语言的功能进行扩展。R语言本身提供了一组程序函数库,他们构成了原始的R语言平台。用户可以自己编写程序对R语言进行扩展,用户编写的程序一般以R语言软件包的形式扩充到R语言平台中。R语言以函数式编程为主要编程范式,同时支持面向对象程序设计等现代程序设计方法。
[0003]R语言平台同时支持批处理(batch)运行和交互式(interactive)运行两种运行方式。交互式运行方式为计算机用户提供了一个交互式的命令行控制台,用户可以交互地向R平台中输入指令,R语言平台根据指令进行计算并对用户进行应答。交互式的运行方式允许用户一边设计、一边调整,近实时地获得反馈,使错误和不足之处及时得到改正和补充,方便了 R语言程序的开发过程,广受数据科学家的欢迎。根据美国0’ Reilly出版社和的KDNuggets网站的调查,R语言在数据科学家社群中被广泛使用。由于R语言平台最初是为单计算机环境设计的,因此基本的R语言平台本身无法充分利用多个处理器(CPU)或者多台计算机提供的并行计算能力。在数据规模越来越大的大数据时代,基本的R语言平台受限于单计算机的计算能力而无法处理大规模数据分析任务。基本的R语言平台处理能力受限的一个主要表现就是:基本的R语言平台无法处理大规模的线性代数计算问题(例如大规模矩阵乘法)。如何扩展基本的R语言平台使其能进行大规模线性代数计算,已成为计算技术领域一个需要解决的重要问题。而目前大规模线性代数计算主要是通过并行计算技术的手段解决。
[0004]在另一方面,现有的基于消息传递接口(MPI)的并行计算技术,能够解决大规模线性代数计算问题。基于消息传递接口(MPI)技术的软件库ScaLAPACK提供了一组应用程序接口(API)函数,覆盖了大部分的线性代数计算需求。ScaLAPACK软件库通过使用MPI并行计算技术,突破了单计算机计算能力的限制,能够充分利用多台计算机的计算能力。目前已有pbdR项目(该项目的网址为http://r-pbd.0rg/)利用ScaLAPACK软件库对R语言平台进行功能扩展,使R语言用户可以进行并行线性代数计算。但是基于ScaLAPACK软件库编写的或者基于PbdR项目编写的程序只能以批处理的方式运行,他们无法直接运行于交互式R语言平台中。这种限制使得交互式R语言平台的用户无法利用ScaLAPACK库、pbdR项目进行大规模的并行线性代数计算。目前尚无方法可以在交互式R语言平台中进行并行线性代数计算。

【发明内容】

[0005]发明目的:为了克服现有的交互式R语言平台中无法进行并行线性代数计算的不足,本发明提供了一种扩展交互式R语言平台的方法,该方法使用户可以在交互式R语言平台中进行并行线性代数计算,而无需了解并行线性代数计算的具体实现细节,解决了现有的交互式R语言编程平台无法进行并行线性代数计算的不足,扩展了交互式R的计算能力。
[0006]本发明的技术解决方案是:为了实现上述发明目的,本发明采用的技术方案为一种基于客户端-服务器(Client-Server)模型的计算方法,该方法将交互式计算平台与并行线性代数计算平台在结构上相分离,通过计算机网络通信实现两个平台的协同计算。整个技术方案包括以下步骤:
(1)本发明的方法提供两个计算平台,一个是交互式R语言平台,另外一个是并行线性代数计算平台,两个计算平台通过计算机网络进行通信、协同计算;
(2)在交互式R语言平台中,定义一个分布式矩阵类,该类提供了可以交互式运行的并行线性代数计算的应用程序接口;
(3)在分布式矩阵类中,包含一个R环境(environment)类型的成员变量;
(4)为分布式矩阵类中R环境类型的成员变量注册垃圾回收响应函数。
[0007]进一步地,在所述步骤(1)中的两个计算平台分别是:一、交互式R语言平台,该平台为一个标准的交互式R语言平台,该交互式R语言平台加载有本发明实现的扩展软件包,并且直接与计算机用户进行交互;二、并行线性代数计算平台,该计算平台是一个基于MPI(消息传递接口 )技术和ScaLAPACK软件库的、实现了并行线性代数计算功能的计算平台。两个计算平台通过计算机网络互相通信。交互式R语言平台从计算机用户处接受交互式计算命令,并向并行线性代数计算平台发送对应的计算指令,后者进行具体的并行线性代数计算并将计算结果返回给交互式R语言平台,并由交互式R语言平台将结果反馈给计算机用户。
[0008]进一步地,所述步骤(2)中“分布式矩阵类”指的是一个R语言的S3类或者是S4类。该类使用R语言编写,并被加载到交互式R语言平台中,供用户使用。该分布式矩阵类提供了一组用于并行线性代数计算的R语言函数,用户通过在该分布式矩阵类的对象上调用相应的计算函数,来完成并行线性代数计算任务。
[0009]进一步地,所述步骤(3)中指出了“分布式矩阵类”应该包含一个特殊的成员变量,该成员变量的类型是R环境(environment)类型。该成员变量的主要功能是:当交互式R语言平台中的垃圾回收器对分布式矩阵类的对象进行回收时,垃圾回收器通过该成员变量注册的响应函数,通知并行线性代数计算平台,对相应的矩阵数据同步地进行删除。
[0010]进一步地,所述步骤(4)中,注册垃圾回收响应函数的过程是在分布式矩阵类的构造函数中完成的,通过R语言本身的reg.finalizer函数来实现。
[0011]本发明的有益效果是:(1)通过将交互式R语言平台和并行线性代数计算平台相分离,使两者能以不同的运行方式同时运行。通过计算机网络通信,使交互式R语言平台能够调用并行线性代数计算平台提供的功能,而不丧失其交互性。本发明解决了不能在交互式R语言平台中进行并行线性代数计算的问题。(2)通过将所有并行线性代数计算函数包装在一个分布式矩阵类当中,本发明在交互式R语言平台中提供了一个用户友好的使用界面。计算机用户可以像操作传统R语言单机矩阵一般操作分布式矩阵,来进行并行线性代数计算。本发明编写的R语言计算代码与原生R语言计算代码保持高度一致,减轻了计算机用户在使用本发明时的学习成本。(3)本发明通过R语言的reg.finalizer函数向垃圾回收器注册垃圾回收响应函数,解决了交互式R语言平台的垃圾回收与并行线性代数计算平台的垃圾回收的同步问题。同时本发明使用的技术方案避免了同类技术中需要使用C语言进行编程的问题,使得本发明可以全部以R语言编程实现,降低了整个技术方案的实现复杂度。(4)在使用本发明扩展交互式R语言平台之后,交互式R语言平台能够突破单计算机的处理能力限制,而进行更大规模的线性代数计算。
【附图说明】
[0012]图1是本发明的整体处理流程示意图。
[0013]图2是本发明与标准R语言平台提供的单机线性代数计算系统的性能对比图。
【具体实施方式】
[0014]下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0015]本发明的技术方案主要由两个软件模块组成:一个是交互式的R语言平台,另外一个是并行线性代数计算平台。交互式R语言平台是一个标准的R语言计算平台,来自于R Project项目的实现(项目网址为https://www.r-project.0rg/),这个软件不属于本
【发明内容】
。而并行线性代数计算平台则是一个满足如下特征的计算平台:(1)该计算平台可以通过计算机网络接收计算指令,并能够解析指令,执行相应的并行线性代数计算任务;
(2)该平台可以分布式地存储矩阵数据;(3)该计算平台通过MPI (消息传递接口)技术和ScaLAPACK软件库进行并行线性代数计算(MPI技术和ScaLAPACK软件库不属于本
【发明内容】
,本发明说明书中所提“ScaLAPACK软件库”均代指“与ScaLAPACK应用程序接口标准兼容的软件库”);(4)该计算平台能通过计算机网络将计算结果或者计算结果的标识符返回给计算指令发出者。全部满足上述4个特征的计算平台均可被认为是符合本发明技术特征的并行线性代数计算平台。
[0016]用户使用本发明进行并行线性代数计算的具体流程如图1所示。交互式的R语言平台直接与最终的计算机用户进行交互,接收用户给予的指令,执行计算,并将计算结果通过计算机屏幕返回给用户。对于用户下达的并行线性代数计算指令,交互式R语言平台通过计算机网络,将该指令发送给并行线性代数计算平台,由并行线性代数计算平台通过ScaLAPACK软件库执行计算操作,并将计算结果通过计算机网络返回给交互式R语言平台,最终由交互式R语言平台将结果返回给计算机用户。
[0017]本发明涉及的两
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1