一种基于动态代码生成的图计算方法及系统技术方案

技术编号:33345677 阅读:10 留言:0更新日期:2022-05-08 09:40
本发明专利技术公开了一种基于动态代码生成的图计算方法及系统,具体涉及计算机领域,包括图计算框架主体,其设置在本地代码空间,所述图计算框架主体包括与外部编辑台连接的代码生成器,所述代码生成器用于接收外部编辑台输出的图算法代码并在本地代码空间中直接注入生成图算法代码,实现了使用本地语言实现图计算系统的主体。本发明专利技术通过在本地代码空间中直接注入生成代码,消除了数据交换的开销;构建了可二次编译的中间图结构,使得图数据的访问代码可进行编译优化;同时增加了中间图结构缓存,规避了图算法的预处理开销。规避了图算法的预处理开销。规避了图算法的预处理开销。

【技术实现步骤摘要】
一种基于动态代码生成的图计算方法及系统


[0001]本专利技术涉及计算机
,更具体地说,本专利技术涉及一种基于动态代码生成的图计算方法及系统。

技术介绍

[0002]图计算是分析挖掘数据中关联关系的重要技术.由于图结构的非线性特点使得图算法开发难度高,同时性能较差,代码不易优化.为了能够支撑高效的图计算需求,相应的计算框架应运而生.图计算框架将图封装成统一的数据结构,并提供基础算子以辅助图算法研发。
[0003]现有的图计算框架主要分为两类:第一类是提供固定的图算子库并使用解释型语言组合算子,实现通用的图计算操作,如graphkit;该类框架算法开发成本低,使用灵活,但性能较差;第二类是使用并发库如OpenMP或Cilk实现编译型图计算API,支撑图算法开发,如Ligra;该类框架性能较好,在一定程度上降低了图算法的开发门槛,但算法实现难度仍然很高,且代码修改困难。随着图数据的爆炸式增长,以灵活的方式实现高性能图算法成为了当前图计算领域的一大热点需求。因此,使用动态代码生成技术来开发图计算框架成为了当前一大趋势。动态代码生成是结合解释型语言与编译型语言二者优势的经典方法。用户通过交互式界面提交算法描述,对应的图计算系统即时进行编译、运行,在不损失运行效率的同时,极大地提高了图算法开发的灵活性。
[0004]但现有的动态代码生成的图框架依旧具有一些缺陷,如图1所示,现有的基于代码生成的图计算框架使用解释型代码开发,形成了外部代码空间,只对核心的图计算代码进行动态生成,这导致部分数据需要通过拆箱传递至本地代码空间,并通过装箱返回,增加了数据的装拆箱开销。

技术实现思路

[0005]为了克服现有技术的上述缺陷,本专利技术的实施例提供一种基于动态代码生成的图计算方法及系统,以解决上述
技术介绍
中提出的问题。
[0006]为实现上述目的,本专利技术提供如下技术方案:
[0007]一种基于动态代码生成的图计算方法及系统,包括图计算框架主体,其设置在本地代码空间,所述图计算框架主体包括与外部编辑台连接的代码生成器,所述代码生成器用于接收外部编辑台输出的图算法代码并在本地代码空间中直接注入生成图算法代码,实现了使用本地语言实现图计算系统的主体。
[0008]在一个优选地实施方式中,所述图计算框架主体还包括中间图编译器、图构建模块与图缓存器;
[0009]所述图构建模块,用于将数据源转换成图数据,并将图数据结合基础算子代码输出至中间图编译器;
[0010]所述中间图编译器,用于获取图构建模块发送的代码构建对象,将该对象使用代
码生成原语组装成可编译的本地代码结构,并将该结构输出至图缓存器保存;
[0011]所述图缓存器,用于接收并保存中间图编译器输出的本地代码结构。
[0012]在一个优选地实施方式中,所述图计算框架主体基于该中间图结构设置有通用的图算法开发API。
[0013]在一个优选地实施方式中,所述编辑台提供图算法模板,包括图算法签名,基础图操作算子API与图数据访问API。
[0014]在一个优选地实施方式中,所述图计算框架主体内部还包括代码执行器,
[0015]所述代码执行器负责接收用户的连接请求,生成执行台;
[0016]所述执行台,用于解析图算法名称,从代码执行器中读取相应的本地代码并注入,并从图缓存器中查找对应的中间图代码,结合图算法本地代码生成最终代码并执行。
[0017]本专利技术的技术效果和优点:
[0018]本专利技术通过在本地代码空间中直接注入生成代码,消除了数据交换的开销;构建了可二次编译的中间图结构,使得图数据的访问代码可进行编译优化;同时增加了中间图结构缓存,规避了图算法的预处理开销。
附图说明
[0019]图1为现有动态代码生成的图计算框架结构示意图;
[0020]图2为本专利技术动态代码生成的图计算框架结构示意图;
[0021]图3为本专利技术动态代码生成的图计算框架内部结构示意图;
[0022]图4为本专利技术图计算框架预生成代码示意图;
[0023]图5为本专利技术图算法服用同一图数据示意图。
具体实施方式
[0024]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0025]实施例1
[0026]本专利技术一种基于动态代码生成的图计算方法及系统,如图2、图3所示,包括本地代码空间和外部编辑台;所述本地代码空间包括图计算框架主体,通过将图计算框架主体由现有技术中外部代码空间转移至本地代码空间,并注入生成代码,解决了数据交换开销;所述外部编辑台提供有图算法模板,所述图计算框架主体包括与外部编辑台连接的代码生成器,用于接收外部编辑台代码并监听代码变化,在本地代码空间中直接注入生成图算法代码。实现了使用本地语言实现图计算系统的主体,将图数据以其原始的结构存储,并通过内存共享机制,传递至动态生成的代码空间,实现了数据的零拷贝,规避了数据的交换开销。
[0027]实施例2
[0028]作为进一步的优化改进,在上述实施例1中,我们通过将图计算框架主体由现有技术中外部代码空间转移至本地代码空间,并注入生成代码,解决了数据交换开销;在此基础上为了提供更充分地编译优化,解决了函数调用开销,如图3所示,所述图计算框架主体还
包括中间图编译器、图构建模块与图缓存器;所述图构建模块用于将数据源转换成图数据,并将图数据结合基础算子代码输出至中间图编译器;所述中间图编译器获取图构建模块发送的代码构建对象,将该对象使用代码生成原语组装成可编译的本地代码结构,并将该结构输出至图缓存器保存;所述图缓存器用于接收并保存中间图编译器输出的本地代码结构。
[0029]如图4所示,这样设置由于预编译了图的基础操作代码,形成可二次编译的中间图结构,并将其与图算法结合进行二次编译,消除了外部调用的开销。
[0030]如图5所示,这样设置本专利还能够通过图缓存器使得不同的图算法可以复用同一图数据,降低了算法的预处理时间。
[0031]实施例3
[0032]作为进一步的优化改进,为了提高图计算框架主体的易用性,提高用户的开发效率,所述图计算框架主体基于该中间图结构设计了通用的图算法开发API。本专利技术用户连接编辑台进行图算法开发,编辑台提供图算法模板,包括图算法签名,基础图操作算子API与图数据访问API,编辑台向代码生成器提交图算法。
[0033]进一步的,为了有效利用API接口,如图3所示,所述图计算框架主体内部还包括代码执行器,所述代码执行器负责接收用户的连接请求,生成执行台,用户向执行台提交图算法执行请求,执行台解析图算法名称,从代码执行器中读取相应的本地代码并注入,执行台从图缓存器中查找对应的中间图代码,结合图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于动态代码生成的图计算方法及系统,其特征在于:包括图计算框架主体,其设置在本地代码空间,所述图计算框架主体包括与外部编辑台连接的代码生成器,所述代码生成器用于接收外部编辑台输出的图算法代码并在本地代码空间中直接注入生成图算法代码,实现了使用本地语言实现图计算系统的主体。2.根据权利要求1所述的一种基于动态代码生成的图计算方法及系统,其特征在于:所述图计算框架主体还包括中间图编译器、图构建模块与图缓存器;所述图构建模块,用于将数据源转换成图数据,并将图数据结合基础算子代码输出至中间图编译器;所述中间图编译器,用于获取图构建模块发送的代码构建对象,将该对象使用代码生成原语组装成可编译的本地代码结构,并将该结构输出至图缓存器保存;所述图缓存器,用于接...

【专利技术属性】
技术研发人员:邓昌智郑伊恒
申请(专利权)人:中科金审北京科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1