一种代码解析的方法、装置、电子设备及存储介质制造方法及图纸

技术编号:28622234 阅读:20 留言:0更新日期:2021-05-28 16:17
本公开提供了一种代码解析的方法、装置、电子设备及存储介质,其中,该方法包括:获取前端中待解析的源代码;检测源代码中是否存在非纯函数元素,并在确定存在非纯函数元素的情况下,获取非纯函数元素在源代码中的位置信息;基于位置信息将源代码划分为非纯函数语段和纯函数语段;利用前端对划分后的非纯函数语段进行处理,以及利用终端对划分后的纯函数语段进行处理。本公开可以基于非纯函数元素进行语段的划分,这使得有关源代码中的纯函数语段依然是可以在终端运行的,整体的计算性能更佳。

【技术实现步骤摘要】
一种代码解析的方法、装置、电子设备及存储介质
本公开涉及深度学习
,具体而言,涉及一种代码解析的方法、装置、电子设备及存储介质。
技术介绍
目前,深度学习网络广泛应用在各个领域,基于深度学习网络的各种深度学习框架和终端也越来越多。这里的深度学习框架包括TensorFlow、MXNet、Keras和PyTorch等,这里的终端包括中央处理器(CentralProcessingUnit,CPU)、图形处理器(GraphicsProcessingUnit,GPU)等深度学习处理器。为了适应不同端的应用需求,上述深度学习框架和终端之间所采用的编程语言往往不同,因此一款支持前端各种深度学习框架和终端各种终端的编译器显得尤为重要。现有的深度学习编译器可以将算法研究员编写的高层次语言代码(例如Python)自动生成为终端代码(例如CUDA)来提高计算执行性能。然而对于非纯函数而言,由于其具有的特殊性,深度学习编译器无法处理,这将导致包含非纯函数的所有源代码均无法完成编译,这使得终端的计算性能大大减低。专利技术内容本公开实本文档来自技高网...

【技术保护点】
1.一种代码解析的方法,其特征在于,所述方法包括:/n获取前端中待解析的源代码;/n检测所述源代码中是否存在非纯函数元素,并在确定存在非纯函数元素的情况下,获取所述非纯函数元素在所述源代码中的位置信息;/n基于所述位置信息将所述源代码划分为非纯函数语段和纯函数语段;/n利用前端对划分后的所述非纯函数语段进行处理,以及利用终端对划分后的所述纯函数语段进行处理。/n

【技术特征摘要】
1.一种代码解析的方法,其特征在于,所述方法包括:
获取前端中待解析的源代码;
检测所述源代码中是否存在非纯函数元素,并在确定存在非纯函数元素的情况下,获取所述非纯函数元素在所述源代码中的位置信息;
基于所述位置信息将所述源代码划分为非纯函数语段和纯函数语段;
利用前端对划分后的所述非纯函数语段进行处理,以及利用终端对划分后的所述纯函数语段进行处理。


2.根据权利要求1所述的方法,其特征在于,所述检测所述源代码中是否存在非纯函数元素,包括:
将获取的所述源代码对应的字符序列进行词法分析,得到至少一个单词;
对所述至少一个单词进行语法分析,得到不同单词之间的语法关系;
针对所述至少一个单词中的每个单词,基于与该单词存在语法关系的关联单词,确定该单词是否为非纯函数元素。


3.根据权利要求2所述的方法,其特征在于,所述基于与该单词存在语法关系的关联单词,确定该单词是否为非纯函数元素,包括:
针对所述至少一个单词中的每个单词,在确定与该单词存在语法关系的关联单词指示该单词为非局部变量、局部静态变量、可修改的引用参数、以及输入输出流中的任一种的情况下,确定该单词为非纯函数元素。


4.根据权利要求1-3任一所述的方法,其特征在于,检测所述源代码中是否存在非纯函数元素,包括:
对获取的前端中待解析的源代码包括的语句进行拆分处理,得到拆分处理后的源代码;
检测所述拆分处理后的源代码中是否存在非纯函数元素。


5.根据权利要求4所述的方法,其特征在于,所述对获取的前端中待解析的源代码包括的语句进行拆分处理,得到拆分处理后的源代码,包括:
针对所述前端中待解析的源代码中的函数调用语句,从所述函数调用语句中拆分出函数体,将拆分出的函数体作为所述拆分处理后的源代码;和/或,
针对所述前端中待解析的源代码中的目标表达式语句,对该目标表达式语句进行拆分,将得到的拆分后的多个子目标表达式语句作为所述拆分处理后的源代码。


6.根据权利要求1-5任一所述的方法,其特征在于,所述基于所述位置信息将所述源代码划分为非纯函数语段和纯函数语段,包括:
将所述位置信...

【专利技术属性】
技术研发人员:李秀红陈仁泽李懋林颜深根
申请(专利权)人:上海商汤智能科技有限公司
类型:发明
国别省市:上海;31

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

1