一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

代码运行方法、装置、设备、存储介质及程序产品与流程

2022-06-05 16:34:29 来源:中国专利 TAG:


1.本发明涉及硬件运算技术领域,尤其涉及一种代码运行方法、装置、设备、存储介质及程序产品。


背景技术:

2.目前大多采用同构硬件处理逻辑运算代码时,例如通过cpu处理多方安全计算或者联邦机器学习中的每一个逻辑运算步骤,然而对于一些计算量复杂的逻辑运算步骤,如涉及到paillier加解密的步骤时,存在大量模幂运算或者矩阵运算时,由于cpu没有fpga、gpu等其他硬件的强大的计算能力,导致采用cpu处理执行模幂运算或者矩阵运算时运行进程变慢,而若采用fpga或其他具备强大计算能力的硬件处理每一个逻辑运算步骤时,由于一些逻辑运算步骤比较简单,则会出现硬件资源浪费的情况,因此采用同构硬件无法达到最优的处理效果。


技术实现要素:

3.本发明提供一种代码运行方法、装置、设备、存储介质及程序产品,旨在解决目前现有技术中由于采用同构硬件而导致逻辑代码运算处理效果不好的技术问题。
4.为实现上述目的,本发明提供一种代码运行方法,所述代码运行方法包括:
5.将源代码拆解成多个逻辑运算步骤;
6.确定所述多个逻辑运算步骤分别适配的目标硬件;
7.将各逻辑运算步骤的源代码编译成运算代码,并通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码。
8.优选地,所述确定所述多个逻辑运算步骤分别适配的目标硬件的步骤包括:
9.确定各逻辑运算步骤涉及的计算类型;
10.根据所述计算类型确定所述多个逻辑运算步骤分别适配的目标硬件。
11.优选地,所述根据所述计算类型确定所述多个逻辑运算步骤分别适配的目标硬件的步骤,还包括:
12.若所述逻辑运算步骤涉及多个计算类型,则确定各个计算类型对应的逻辑运算量;
13.确定最大逻辑运算量对应的目标计算类型,并根据所述目标计算类型确定所述逻辑运算步骤适配的目标硬件。
14.优选地,所述根据所述目标计算类型确定所述逻辑运算步骤适配的目标硬件的步骤之后,还包括:
15.获取本地硬件配置信息;
16.若本地硬件配置信息中包括所述目标硬件,则判定所述目标硬件为所述逻辑运算步骤适配的硬件。
17.优选地,所述获取本地硬件配置信息的步骤之后,还包括:
18.若本地硬件配置信息中不包括所述目标硬件,则确定本地硬件配置信息中各本地硬件与所述逻辑运算步骤的契合程度;
19.确定最大契合程度对应的最优本地硬件,并将所述最优本地硬件作为所述逻辑运算步骤适配的目标硬件。
20.优选地,所述获取本地硬件配置信息的步骤之后,还包括:
21.若本地硬件配置信息中不包括所述目标硬件,则判断所述本地硬件配置信息中是否包含备用硬件信息,其中,所述备用硬件信息包括预先设定作为备用硬件的本地硬件信息;
22.若所述本地硬件配置信息中包含备用硬件信息,则根据所述备用硬件信息确定所述逻辑运算步骤适配的目标硬件。
23.优选地,所述将源代码拆解成多个逻辑运算步骤的步骤包括:
24.调用预设代码解析库对源代码进行解析,以将所述源代码拆解成若干个逻辑运算步骤。
25.此外,为实现上述目的,本发明还提供一种代码运行装置,所述代码运行装置包括:
26.拆解模块,用于将源代码拆解成多个逻辑运算步骤;
27.确定模块,用于确定所述多个逻辑运算步骤分别适配的目标硬件;
28.编译模块,用于将各逻辑运算步骤的源代码编译成运算代码,并通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码。
29.此外,为实现上述目的,本发明还提供一种代码运行设备,所述代码运行设备包括处理器,存储器以及存储在所述存储器中的代码运行程序,所述代码运行程序被所述处理器运行时,实现如上所述的代码运行方法的步骤。
30.此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有代码运行程序,所述代码运行程序被处理器运行时实现如上所述代码运行方法的步骤。
31.此外,为实现上述目的,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器运行时实现如上所述代码运行方法的步骤。
32.相比现有技术,本发明提供了一种代码运行方法,通过将源代码拆解成多个逻辑运算步骤;确定所述多个逻辑运算步骤分别适配的目标硬件;将各逻辑运算步骤的源代码编译成运算代码,并通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码,由此,与现有技术中采用同构硬件全程处理代码数据相比,本发明采用将源代码拆分成多个逻辑运算步骤,并为不同的逻辑运算步骤配置不同的目标硬件去运行,克服了现有技术中采用同构硬件而导致运算效果不优的技术问题,通过灵活调用不同硬件运行不同的运算代码,提高了运算效果。
附图说明
33.图1是本发明各实施例涉及的代码运行设备的硬件结构示意图;
34.图2是本发明代码运行方法第一实施例的流程示意图;
35.图3是本发明代码运行方法第二实施例的流程示意图;
36.图4是本发明代码运行装置一实施例的功能模块示意图。
37.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
38.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
39.本发明实施例主要涉及的代码运行设备是指能够实现网络连接的网络连接设备,所述代码运行设备可以是服务器、云平台等。
40.参照图1,图1是本发明各实施例涉及的代码运行设备的硬件结构示意图。本发明实施例中,代码运行设备可以包括处理器1001(例如中央处理器central processing unit、cpu),通信总线1002,输入端口1003,输出端口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;输入端口1003用于数据输入;输出端口1004用于数据输出,存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
41.继续参照图1,图1中作为一种可读存储介质的存储器1005可以包括操作系统、网络通信模块、应用程序模块以及代码运行程序。在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的代码运行程序,并执行如下操作:
42.将源代码拆解成多个逻辑运算步骤;
43.确定所述多个逻辑运算步骤分别适配的目标硬件;
44.将各逻辑运算步骤的源代码编译成运算代码,并通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码。
45.进一步地,处理器1001还可以用于调用存储器1005中存储的代码运行程序,并执行以下步骤:
46.确定各逻辑运算步骤涉及的计算类型;
47.根据所述计算类型确定所述多个逻辑运算步骤分别适配的目标硬件。
48.进一步地,处理器1001还可以用于调用存储器1005中存储的代码运行程序,并执行以下步骤:
49.若所述逻辑运算步骤涉及多个计算类型,则确定各个计算类型对应的逻辑运算量;
50.确定最大逻辑运算量对应的目标计算类型,并根据所述目标计算类型确定所述逻辑运算步骤适配的目标硬件。
51.进一步地,处理器1001还可以用于调用存储器1005中存储的代码运行程序,并执行以下步骤:
52.获取本地硬件配置信息;
53.若本地硬件配置信息中包括所述目标硬件,则判定所述目标硬件为所述逻辑运算步骤适配的硬件。
54.进一步地,处理器1001还可以用于调用存储器1005中存储的代码运行程序,并执
行以下步骤:
55.若本地硬件配置信息中不包括所述目标硬件,则确定本地硬件配置信息中各本地硬件与所述逻辑运算步骤的契合程度;
56.确定最大契合程度对应的最优本地硬件,并将所述最优本地硬件作为所述逻辑运算步骤适配的目标硬件。
57.进一步地,处理器1001还可以用于调用存储器1005中存储的代码运行程序,并执行以下步骤:
58.若本地硬件配置信息中不包括所述目标硬件,则判断所述本地硬件配置信息中是否包含备用硬件信息;
59.若所述本地硬件配置信息中包含备用硬件信息,则根据所述备用硬件信息确定所述逻辑运算步骤适配的目标硬件。
60.进一步地,处理器1001还可以用于调用存储器1005中存储的代码运行程序,并执行以下步骤:
61.调用预设代码解析库对源代码进行解析,以将所述源代码拆解成若干个逻辑运算步骤。
62.基于图1所示的硬件结构,本发明第一实施例提供了一种代码运行方法。
63.参照图2,图2为本发明代码运行方法第一实施例的流程示意图。
64.本发明实施例提供了代码运行方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。具体地,本实施例代码运行方法包括:
65.步骤s10:将源代码拆解成多个逻辑运算步骤;
66.需要说明的是,目前现有技术中,当执行一具体的逻辑运算时,在此以多方安全计算举例说明,采用同构硬件技术去执行整个多方安全计算的逻辑运算代码,例如采用基于cpu的同构硬件多方安全计算技术,虽然目前基于cpu的同构硬件多方安全计算技术日渐成熟,但是对于多方安全计算中的一部分逻辑运算步骤,采用基于cpu的同构硬件处理效果不好,如对于paillier加解密的逻辑运算步骤,由于中间会涉及到大量的模幂运算及矩阵运算的步骤,计算过程较复杂,因此采用cpu的处理效果远不如采用fpga、gpu等其他拥有强大的计算能力的硬件的处理效果好,而若采用基于fpga的同构硬件多方安全计算技术,由于多方安全计算中的一部分逻辑运算步骤比较简单,则会造成在处理部分逻辑运算步骤时出现资源浪费,因此,本实施例中,为了解决上述问题,提出了一种可灵活调度硬件的代码运行方法。
67.容易理解的,上述源代码指代用汇编语言和高级语言写出来的代码,源代码不能被cpu等其他硬件直接识别,其中,源代码由一系列字符组成,基于不同的字符构成不同的逻辑运算步骤,因此本实施例中,将源代码拆解成多个逻辑运算步骤,以分别为不同的逻辑运算步骤配置不同的硬件来实现灵活调度硬件的代码运行。
68.具体而言,在实际应用中,本发明提出的代码运行方法应用于服务器,其中,该服务器可用于处理本服务器中存储的本地源代码或者其他终端输入的源代码,具体不做限制,例如,当用户a需要充分利用硬件资源高效率的进行多方安全计算时,用户a可向服务器提供多方安全计算的源代码,以通过服务器对源代码进行处理。
69.此外,为了便于理解,本实施例给出一种将源代码拆解成多个逻辑运算步骤的具体实现方案,具体如下:
70.调用预设代码解析库对源代码进行解析,以将所述源代码拆解成若干个逻辑运算步骤。
71.具体而言,预设代码解析库指代当前源代码的编程语言环境对应的解析库,例如,当源代码是通过基于python语言写出来时,则调用python解析库对源代码进行解析,从而将源代码拆解成若干个逻辑运算步骤,因此在一些实施例中,先确定源代码的编程语言,接着在调用该编程语言对应的预设代码解析库对源代码进行解析,在调用预设代码解析库对源代码进行解析的过程中,通过预设代码解析库确定源代码中各个字符对应的字符含义,进而根据各字符的字符含义将源代码拆解成多个逻辑运算步骤,或者通过预设代码解析库直接确定源代码中函数代码,以通过函数代码将源代码拆解成多个逻辑运算步骤。
72.为了便于理解,本实施例对步骤s10举例进行具体说明。
73.例如,对于一源代码a,其中,源代码a包括以下字符:
74.def get_prime_arr(max):prime_array=[]for i in range(2,max):if is_prime(i):prime_array.append(i)return prime_array def is_prime(num):if num==1:raise exception('1')for i in range(2,math.floor(math.sqrt(num)) 1):if num%i==0:#print(",(str(num),str(i)))return false return true,对于源代码a,调用预设代码解析库识别出识别出源代码a的获取函数(def get_prime_arr(max):)及判断函数(def is_prime(num):),并根据获取函数(def get_prime_arr(max):)及判断函数(def is_prime(num):)将源代码a拆分成获取逻辑运算步骤(def get_prime_arr(max):prime_array=[]for i in range(2,max):if is_prime(i):prime_array.append(i)return prime_array)与获取逻辑运算步骤(def is_prime(num):if num==1:raise exception('1')for i in range(2,math.floor(math.sqrt(num)) 1):if num%i==0:#print(",(str(num),str(i)))return false return true)。
[0075]
此外,在一些实施例中,服务器中部署有webpack插件,则可采用调用webpack的code splitting功能将源代码拆解成多个逻辑运算步骤,其中,调用webpack的code splitting功能拆解代码的步骤基于现有的webpack的code splitting功能原理实现,本实施例在此不再赘述。
[0076]
此外,在一些实施例中,源代码中除了包含逻辑运算代码,还包括各逻辑运算代码的逻辑运算标签文本信息,因此将源代码进行拆解,并确定拆解后的代码中是否包含逻辑运算标签文本信息,若包含逻辑运算标签文本信息,则基于逻辑运算标签文本信息将源代码拆解成多个逻辑运算步骤,例如对于一源代码b,其中,源代码b包括以下字符:
[0077]
#加密def rsa_encrypt(content,ned):#密文b=明文a的e次方模n,ned为公钥#content就是明文a,ned【1】是e,ned【0】是n;b=pow(content,ned[1])%ned[0]return b#解密def rsa_decrypt(encrypt_result,ned):#明文c=密文b的d次方模n,ned为私钥匙#encrypt_result就是密文,ned【1】是d,ned【0】是n;c=pow(encrypt_result,ned[1])%ned[0]return c,对源代码b进行拆解,识别出拆解后的代码中包含逻辑运算标签文本信息(#加密)及(#解密),则基于#加密)及(#解密)将源代码b分解成加密逻辑运算步骤(def rsa_encrypt(content,ned):#密文b=明文a的e次方模n,ned为公钥#content就是明文a,ned
【1】是e,ned【0】是n;b=pow(content,ned[1])%ned[0]return b)及加密逻辑运算步骤(def rsa_decrypt(encrypt_result,ned):#明文c=密文b的d次方模n,ned为私钥匙#encrypt_result就是密文,ned【1】是d,ned【0】是n;c=pow(encrypt_result,ned[1])%ned[0]return c)。
[0078]
值得一提的是,本实施例中对源代码拆解的具体实施方式不做限制,具体地,基于源代码与服务器的实际情况,例如,服务器可调用预设代码解析库、服务器上部署有webpack插件、源代码中包含逻辑运算标签文本信息等,选取当前最优的源代码拆解手段将源代码拆解成多个逻辑运算步骤。
[0079]
步骤s20:确定所述多个逻辑运算步骤分别适配的目标硬件;
[0080]
具体而言,本实施例中,目标硬件包含cpu、gpu、asic及fpga等任何可处理逻辑运算的硬件,容易理解地是,fpga可提供强大的计算能力和足够的灵活性,因此当处理计算密集型任务时,例如矩阵运算、图像处理、机器学习、压缩、非对称加密、bing搜索的排序等,选取fpga处理的效果最好,而cpu虽然运算不行,但是擅长管理和调度,比如读取数据,管理文件,人机交互等,因此当处理调度任务时,选取cpu处理的效果最好,gpu相比于cpu虽然管理更弱,但是运算更强,且由于是多进程并发处理,因此gpu更适合整块数据进行流处理的算法,进一步地,asic与fpga类似,都可提供强大的计算能力和足够的灵活性,在处理计算密集型任务时,asic与fpga均可满足,但从设计成本来考虑,当存在小批量的计算密集型任务时,选取fpga最优,存在大批量的计算密集型任务时,选取asic最优。
[0081]
容易理解地,由于各硬件的最优功能不同,因此本实施例中,将源代码拆解成多个逻辑运算步骤之后,为了提高整个源代码后续在运行时的效果,根据各逻辑运算步骤的运算情况,选取相对应适配的目标硬件。例如,当逻辑运算步骤为paillier加解密的步骤时,由于需要大量的模幂运算及大量矩阵运算的步骤等,则可选取asic或fpga作为其适配的目标硬件。
[0082]
步骤s30:将各逻辑运算步骤的源代码编译成运算代码,并通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码。
[0083]
具体而言,本实施例中,运算代码指代计算机可以执行的二进制指令代码,容易理解地是,由于源代码是基于汇编语言和高级语言写出来的代码,源代码不能被cpu等其他硬件直接识别,因此需要将源代码编译成计算机可以执行的二进制指令,其中,可调用编译器将各逻辑运算步骤的源代码编译成运算代码,例如,调用编译器对源代码从前往后逐个字符地扫描,从中识别出一个个"单词"符号,其中,"单词"符号是程序设计语言的基本语法单位,如关键字、标识符、常数、运算符和分隔符(标点符号,括号)等,接着根据语言的语法规则将单词符号序列分解成各类的语法单位,如表达式、语句、程序等,通过语法分析确定整个输入串是否构成一个语法上正确的程序,如果源代码中没有语法错误,语法分析后就正确的构造出语法树,否则就指出语法错误,并给出相应的诊断信息,然后分析程序中各种语法结构的语义信息,包括检查源代码是否包含语义错误,并收集类型信息在后面的代码生成阶段使用,根据语义分析的输出生成中间代码,其中,中间代码是一种简单且含义明确的记号系统,中间代码的设计原则:一是容易生成,二是容易被翻译成目标代码,进一步地,在生成中间代码阶段时可基于程序的等价变换规则进行代码优化,最后把中间代码变换成可在计算器上执行的运算代码。
[0084]
此外,在一些实施例中,将各逻辑运算步骤的源代码编译成运算代码之后,将各逻辑运算步骤的运算代码与所述多个逻辑运算步骤分别适配的目标硬件绑定,以使服务器在运行计算机程序指令(即运算代码)时,调用所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码。
[0085]
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限制,本领域的技术人员在实际应用中可以基于需要进行设置,此处不再一一列举。
[0086]
相较于现有的采用同构硬件全程处理程序代码相比,本方法实施例通过将源代码拆解成多个逻辑运算步骤;确定所述多个逻辑运算步骤分别适配的目标硬件;将各逻辑运算步骤的源代码编译成运算代码,并通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码,克服了现有技术中采用同构硬件而导致运算效果不优的技术问题,通过灵活调用不同硬件运行不同的运算代码,提高了运算效果。
[0087]
进一步地,基于本发明代码运行方法的第一实施例,提出本发明代码运行方法第二实施例。
[0088]
参照图3,图3为本发明代码运行方法第二实施例的流程示意图;
[0089]
所述代码运行方法第二实施例与所述代码运行方法第一实施例的区别在于,所述确定所述多个逻辑运算步骤分别适配的目标硬件的步骤包括:
[0090]
步骤s201:确定各逻辑运算步骤涉及的计算类型;
[0091]
步骤s202:根据所述计算类型确定所述多个逻辑运算步骤分别适配的目标硬件。
[0092]
具体而言,逻辑运算步骤涉及的计算类型指代逻辑运算步骤涉及的逻辑运算函数,例如对于paillier加解密的逻辑运算步骤,其涉及到模幂运算函数及矩阵运算函数,则可将fpga作为模幂运算函数步骤的目标硬件,将gpu作为矩阵运算函数步骤的目标硬件。
[0093]
此外,在一些实施例中,服务器中预先构建有计算类型-硬件的映射函数,则在确定各逻辑运算步骤涉及的计算类型之后,调用计算类型-硬件的映射函数,以确定确定所述多个逻辑运算步骤分别适配的目标硬件。
[0094]
进一步的,在一些实施例中,当逻辑运算步骤涉及到多种逻辑运算函数(即计算类型)时,若为每一个逻辑运算函数均分配一个目标硬件去执行,则在处理该逻辑运算步骤时,即使各逻辑运算函数的硬件处理效果达到最优,则由于服务器频繁来回切换调用硬件,也会加重服务器的运算压力,因此本实施例中,为了解决上述问题,本发明的方法实施的步骤s202还包括以下步骤:
[0095]
若所述逻辑运算步骤涉及多个计算类型,则确定各个计算类型对应的逻辑运算量;
[0096]
确定最大逻辑运算量对应的目标计算类型,并根据所述目标计算类型确定所述逻辑运算步骤适配的目标硬件。
[0097]
具体而言,逻辑运算量包括运算难度及运算数据量等,当逻辑运算步骤涉及多个计算类型时,则为了避免服务器频繁来回切换调用硬件,加重服务器的运算压力,本实施例中根据各个计算类型的逻辑运算子步骤对应的运算难度及运算数据量,确定各个计算类型对应的逻辑运算量,并基于最大逻辑运算量对应的目标计算类型确定所述逻辑运算步骤适配的目标硬件。
[0098]
此外,需要说明的是,上述目标硬件是基于各种硬件的运算能力来选定的理想硬
件,而在实际运行过程中,执行该运算代码的终端中可能并不都配置有以上目标硬件,因此,为了实现实际运行过程中通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码,本发明的方法实施例在根据所述目标计算类型确定所述逻辑运算步骤适配的目标硬件的步骤之后还包括以下步骤:
[0099]
获取本地硬件配置信息;
[0100]
若本地硬件配置信息中包括所述目标硬件,则判定所述所述目标硬件为所述逻辑运算步骤适配的硬件。
[0101]
具体而言,上述本地硬件配置信息指代需要运行上述运算代码的终端处的本地硬件配置信息,例如,当用户端向服务器中输入源代码之后,服务器在将源代码拆解成多个逻辑运算步骤,并根据各硬件的运行能力确定所述多个逻辑运算步骤分别适配的目标硬件之后,服务器向用户端索要用户端的本地硬件配置信息,接着根据本地硬件配置信息判断用户端是否包括上述目标硬件,若包括,则判定目标硬件为该逻辑运算步骤适配的硬件。
[0102]
此外,在一些实施例中,获取本地硬件配置信息的步骤之后,还包括:
[0103]
若本地硬件配置信息中不包括所述目标硬件,则确定本地硬件配置信息中各本地硬件与所述逻辑运算步骤的契合程度;
[0104]
确定最大契合程度对应的最优本地硬件,并将所述最优本地硬件作为所述逻辑运算步骤适配的目标硬件。
[0105]
具体而言,本实施例中,契合程度指代与该硬件的计算能力与该逻辑运算步骤的计算复杂度之间的契合度。
[0106]
容易理解的,当本地硬件配置信息中不包括目标硬件,则表明在实际运行时,无法实现通过该逻辑运算步骤适配的目标硬件运行对应的运算代码,因此本实施例中,在本地硬件配置信息中不包括目标硬件时,基于本地硬件配置信息从本地硬件中择优选取一个本地硬件作为该逻辑运算步骤适配的目标硬件,具体地,采用确定本地硬件配置信息中各本地硬件与逻辑运算步骤的契合程度,并将最大契合程度对应的最优本地硬件作为所述逻辑运算步骤适配的目标硬件。
[0107]
此外,在一些实施例中,获取本地硬件配置信息的步骤之后,还包括:
[0108]
若本地硬件配置信息中不包括所述目标硬件,则判断所述本地硬件配置信息中是否包含备用硬件信息;
[0109]
若所述本地硬件配置信息中包含备用硬件信息,则根据所述备用硬件信息确定所述逻辑运算步骤适配的目标硬件,其中,所述备用硬件信息包括预先设定作为备用硬件的本地硬件信息。
[0110]
具体而言,本实施例中,备用硬件信息指代可作为备用硬件的硬件信息,其中,备远硬件可为用户自定义设定,例如当本地硬件包括cpu及gpu时,可自定义设置其中任意一个本地硬件为备选硬件,或者选取硬件数量最多的一类硬件作为备选硬件,或者将本地硬件均作为备选硬件,本实施例对此不作限制。
[0111]
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限制,本领域的技术人员在实际应用中可以基于需要进行设置,此处不再一一列举。
[0112]
相较于现有的采用同构硬件全程处理程序代码相比,本方法实施例通过确定各逻辑运算步骤涉及的计算类型;根据所述计算类型确定所述多个逻辑运算步骤分别适配的目
标硬件,由此根据计算类型确定所述多个逻辑运算步骤分别适配的目标硬件,提高了运算效果。
[0113]
此外,本实施例还提供一种代码运行装置。参照图4,图4为本发明代码运行装置第一实施例的功能模块示意图。
[0114]
本实施例中,所述代码运行装置为虚拟装置,存储于图1所示的代码运行设备的存储器1005中,以实现代码运行程序的所有功能:用于将源代码拆解成多个逻辑运算步骤;用于确定所述多个逻辑运算步骤分别适配的目标硬件;用于将各逻辑运算步骤的源代码编译成运算代码,并通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码。
[0115]
具体地,参照图4,所述代码运行装置包括:
[0116]
拆解模块10,用于将源代码拆解成多个逻辑运算步骤;
[0117]
确定模块20,用于确定所述多个逻辑运算步骤分别适配的目标硬件;
[0118]
编译模块30,用于将各逻辑运算步骤的源代码编译成运算代码,并通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码。
[0119]
本实施例提供的代码运行装置,通过将源代码拆解成多个逻辑运算步骤;确定所述多个逻辑运算步骤分别适配的目标硬件;将各逻辑运算步骤的源代码编译成运算代码,并通过所述多个逻辑运算步骤分别适配的目标硬件运行对应的运算代码,由此,与现有技术中采用同构硬件全程处理代码数据相比,本发明采用将源代码拆分成多个逻辑运算步骤,并为不同的逻辑运算步骤配置不同的目标硬件去运行,克服了现有技术中采用同构硬件而导致运算处理效果不优的技术问题,通过灵活调用不同硬件运行不同的运算代码,提高了运算处理效果。
[0120]
此外,本发明实施例还提供一种计算机存储介质,所述计算机存储介质上存储有代码运行程序,所述代码运行程序被处理器运行时实现如上所述代码运行方法的步骤,此处不再赘述。
[0121]
此外,本发明实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器运行时实现如上所述代码运行方法的步骤,此处不再赘述。
[0122]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0123]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0124]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
[0125]
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技
术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献