CN110033405B - 一种基于图像处理器加速的符号执行方法及系统 - Google Patents
一种基于图像处理器加速的符号执行方法及系统 Download PDFInfo
- Publication number
- CN110033405B CN110033405B CN201910213435.7A CN201910213435A CN110033405B CN 110033405 B CN110033405 B CN 110033405B CN 201910213435 A CN201910213435 A CN 201910213435A CN 110033405 B CN110033405 B CN 110033405B
- Authority
- CN
- China
- Prior art keywords
- state
- execution
- gpu
- constraint
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种基于图像处理器加速的符号执行方法及系统,包括:符号执行分解步骤:将符号执行分解为可并行化部分和非并行化部分;任务分配步骤:将可并行化部分分配给GPU并行化执行,将非可并行化部分分配给CPU执行。本发明利用GPU的内核数量多、并行度高的特性去并行地执行简单的指令解析过程,以缓解路径爆炸问题从而加速符号执行。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及一种基于图像处理器加速的符号执行方法及系统。
背景技术
图像处理器(Graphics Process ing Unit,GPU),有高吞吐量、高内存带宽、并行度高的优点,使得很多应用使用GPU加速可以达到比传统的多核CPU快上百倍;而且GPU的编程接口现在也比较成熟,比如主流GPU编程接口有CUDA,是英伟达公司(NVIDIA)推出的GPU编程接口,还有OpenCL是一个开源的GPU编程接口。
符号执行(Symbolic Execution)是一种程序分析技术,其主要思想是使用符号作为输入而不是具体值作为输入去分析程序。在软件测试中符号执行可以用于为每条程序执行路径生成具体的测试用例,其中执行路径就是True和False的序列串,在该序列串中当第i个为True时则表示第i个条件分支中的条件为True,当为False时则表示第i个条件分支中的条件为False。符号执行的过程中主要维护两个状态信息:(1)符号映射,是变量到符号表达式之间的Map。(2)路径约束,表示能执行相应路径时变量的条件约束。符号执行的过程中会不断更新这两个信息。当某个路径结束时,会得到这个路径相对应的路径约束,得到该路径约束后就可以使用约束求解器来求解是否能够到达该目标代码,以及能够到达目标代码的具体值。该技术广泛应用于自动生成测试用例、检查软件Bug。
符号执行的一个很重要的技术挑战是路径爆炸问题:程序中的路径数量随着分支数量的增长而指数增长的现象。由于符号执行会对每个路径分配一个执行状态进行探索,所以当路径越多则需要维护的状态也越多,需要探索的路径也越多。目前解决该问题的方法有:一是利用启发式技术,其主要思想是优先探索最值得探索的路径,也就是优先探索语句和分支覆盖率高的分支,比如可以利用CFG(Control-Flow Graph)来指导路径选择,选择距离未被覆盖语句最近的分支,例如公开号为CN108845944A的发明专利。第二种方法是利用程序分析和软件验证结果来指导减少符号执行的路径;比如,对底层函数的计算结果生成一个分析总结包括该函数执行前后的状态以及输入输出,该分析总结可以在上层函数中重用而不需要重新计算。还有一种方法是剪枝冗余路径,比如RWset技术,当当前探索路径到达程序某个特定点,且此时的路径约束与之前某个探索过的路径到达该点的约束相同时,那么该当前路径就可以丢弃,因为该路径之后的探索和之前的路径探索结果一样。
以上方法都存在不完善的地方,比如对于启发式搜索技术只是延迟路径爆炸的发生,对于RWset技术需要额外的开销去判断特定点当前的路径约束是否和之前某个探索过的路径到达该点的约束相同。随着目标程序规模的增加,路径爆炸问题很难从根本上解决,以上这些方法只能在一定程度上缓解路径爆炸,而且这些方法都没有考虑如何并行化来加速符号执行。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于图像处理器加速的符号执行方法及系统。
根据本发明提供的一种基于图像处理器加速的符号执行方法,包括:
符号执行分解步骤:将符号执行分解为可并行化部分和非并行化部分;
任务分配步骤:将可并行化部分分配给GPU并行化执行,将非可并行化部分分配给CPU执行。
较佳的,所述符号执行包括:从程序中提取相应的变量约束,根据变量约束求解出相应的解;
其中,从程序中提取相应的变量约束包括遍历不同的路径,生成相应的路径约束,所述遍历不同的路径为所述可并行化部分;
所述根据变量约束求解出相应的解为所述非并行化部分。
较佳的,遍历不同的路径包括:
对程序的指令序列进行解析,并为每个路径分配一个状态;对指令序列的解析就是对状态的更新或者生成新的状态;状态包括对应的指令位置PC。
较佳的,所述程序包括准备好链接,且没有使用Share Library的程序。
较佳的,所述程序中循环体中的循环次数最多为3次。
较佳的,CPU执行的步骤包括:
步骤1:初始化操作,包括生成初始状态,为GPU分配内存空间;
步骤2:CPU拷贝数据到GPU内存;
步骤3:根据GPU的规格以及需要处理的状态集中状态的数量得到需要并行处理的线程数,并开启相应的线程;
步骤4:当指令执行过程中遇到条件分支时,该指令的执行交由CPU进行执行,执行过程中CPU更新状态并生成一个新的状态;
更新状态包括:更改指令位置PC的值,指向条件分支为真时的下一个指令位置;根据条件分支为该路径添加一个新的条件约束,约束内容为条件分支为真时的约束;
生成新的状态包括:复制原状态到新生成的状态中;更改新状态中的指令位置PC的值,使得指令位置PC的值为条件分支为假时的下一条指令的位置;根据条件分支判断为新状态添加一个新的条件约束,约束内容为条件分支为假时的约束;
步骤5:根据条件约束利用约束求解器求解出符号变量的具体值。
较佳的,GPU执行的步骤包括:
将各个线程并行地从状态集中取出相应的状态进行解析执行,并根据执行结果更新指令位置PC的值以及更新符号变量。
较佳的,整体步骤具体包括:
步骤A:CPU初始化执行状态,并为GPU分配内存,把初始化执行状态传输到GPU内存中,启动GPU中的线程;
步骤B:GPU中的线程根据线程编号取得相应的执行状态执行,当遇到分支或者到了预定时间后结束;
步骤C:CPU进行分支指令的解析,根据所述分支指令地执行更新状态和创建新的状态并为各个状态生成路径约束;并把新的状态集合传送给GPU,调用GPU线程根据相应状态并行地解析执行指令;
步骤D:循环执行步骤B-C,直到有终止的状态;
步骤E:对于终止的状态,在CPU端利用约束求解器求出终止的状态所对应的路径符号变量的值;对于还没有终止的状态循环执行步骤B-C;
步骤F:当所有状态都终止后,利用约束求解器求解出结果。
根据本发明提供的一种基于图像处理器加速的符号执行系统,包括:
符号执行分解模块:将符号执行分解为可并行化部分和非并行化部分;
任务分配模块:将可并行化部分分配给GPU并行化执行,将非可并行化部分分配给CPU执行。
较佳的,整体步骤具体包括:
A:CPU初始化执行状态,并为GPU分配内存,把初始化执行状态传输到GPU内存中,启动GPU中的线程;
B:GPU中的线程根据线程编号取得相应的执行状态执行,当遇到分支或者到了预定时间后结束;
C:CPU进行分支指令的解析,根据所述分支指令地执行更新状态和创建新的状态并为各个状态生成路径约束;并把新的状态集合传送给GPU,调用GPU线程根据相应状态并行地解析执行指令;
D:循环执行B-C直到有终止的状态;
E:对于终止的状态,在CPU端利用约束求解器求出终止的状态所对应的路径符号变量的值;对于还没有终止的状态循环执行B-C;
F:当所有状态都终止后,利用约束求解器求解出结果。
与现有技术相比,本发明具有如下的有益效果:
本发明利用GPU的内核数量多、并行度高的特性去并行地执行简单的指令解析过程,以缓解路径爆炸问题从而加速符号执行。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的系统架构图;
图2为本发明的流程图;
图3为本发明实施例提供的待分析的程序伪代码示意图;
图4为本发明实施例提供的状态的数据结构示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
一种基于图像处理器加速的符号执行方法包括:符号执行的并行化以及CPU和GPU的任务分配执行。
所述符号执行的并行化,包括以下步骤:符号执行的并行化包括将符号执行分解为可并行化部分和非并行化部分。可以把简单重复的操作归类为可并行化操作。由于符号执行主要分为两个步骤:1、从一个程序中提取出相应的变量约束;2、根据变量约束求解出相应的解。其中第一步就是遍历不同的路径,生成相应的路径约束;该步中的不同路径的遍历就可以并行化处理。对于复杂的计算则归类为非并行化部分,比如上述的第二个步骤中的变量约束求解。
对于每个路径的遍历就是对源程序的指令序列进行解析执行,并为每个路径分配一个状态;对指令的解析过程就是对状态的更新或者生成新的状态。其中,执行状态包括了当前状态所对应的指令位置PC,当前路径所对应的路径约束标号,当前路径所对应的符号变量等。系统中维护一个状态集合,每个线程从这个状态集合中获取相应的状态进行解析执行,并更新其状态。
CPU和GPU的任务分配包括把需要同步或非并行化的操作放到CPU中执行,比如线程的创建分配、状态的初始化、条件分支的执行、根据变量约束求解出相应的解等操作;把可并行化的操作交给GPU执行,利用GPU的并行度高的特性加速符号执行。
如图3所示,待分析的源程序主要是:必须已经链接好,且没有使用Share Library的程序。
对于待分析的源代码中的循环体中的循环次数有可能是与输入有关,这时对于该循环的终止情况可能会一次都不执行就终止,也可能是无限循环,对于这种情况本发明中限定该循环的次数最多为3次。
主要模块有:一,CPU执行环境,主要执行初始化任务和复杂的任务;二,GPU执行环境,主要并行执行简单任务。采用的编程接口是CUDA,CUDA是英伟达的GPGPU模型,通常的执行过程是主机端程序会将数据准备好后,复制到GPU的显存中,然后由GPU执行设备端程序,当执行结束后再由主机端程序将结果从显存中取回。其中CPU存取显卡内存时是通过PCIExpress接口。
中央处理器CPU的任务主要包括:(1)初始化操作,包括生成初始状态;为GPU分配内存空间。(2)负责从CPU拷贝数据到GPU内存。(3)根据系统中GPU的规格以及需要处理的状态集中状态的数量得到需要并行处理的线程数,并开启相应的线程。(4)当指令执行过程中遇到条件分支时,该指令的执行交由CPU进行执行,执行过程中CPU会更新原状态并生成一个新的状态。更新状态包括:更改PC的值,使其指向条件为真时的下一个指令位置;根据该条件判断为该路径添加一个新的条件约束,其约束内容为该条件为真时的约束。生成一个新的状态包括:复制原状态到新生成的状态中;更改新状态中的PC值,使得该PC值为条件状态为假时的下一条指令的位置;根据该条件判断为新状态添加一个新的条件约束,其约束内容为该条件为假时的约束。(5)根据条件约束利用约束求解器求解出符号变量的具体值。
图形处理器GPU的任务主要包括:各个线程并行地从状态集中取出相应的状态进行解析执行,并根据执行结果更新其PC值以及更新符号变量。
如图1和图2所示,本发明的其工作流程为:(1)在CPU端初始化执行状态,并为GPU设备分配内存;然后把初始化状态传输到GPU设备端内存中;最后启动GPU中的线程;(2)GPU中的线程根据线程编号取得相应的执行状态执行,当遇到分支或者到了一定时间后结束。(3)CPU进行分支指令的解析,根据这个分支指令地执行更新状态和创建新的状态并为各个状态生成路径约束;并把新的状态集合传送给GPU,调用GPU线程根据相应状态并行地解析执行指令。(4)循环执行步骤2-3直到有状态终止。(5)对于终止的状态,在CPU端进行约束求解器求出该状态所对的路径符号变量的值。对于还没有终止的状态循环执行步骤2-3。(6)当所有状态都终止且利用约束求解器求解出结果后返回最终结果。
实施例一:
基于GPU加速的符号执行的流程包括[CPU状态初始化]、[GPU并行执行]、[CPU更新状态集合]和[CPU约束求解]四个部分。
步骤(1):CPU首先进行初始化;分配内存存储相应的状态集合,和路径约束集合。其中状态的数据结构如图4所示,其中PC值为被分析程序的当前指令位置;约束标号为当前状态下的约束的标号,把约束信息存储在主存中,内存和显存中只是传递其标号;符号映射为变量到符号表达式之间的Map。刚开始的时候只有一个状态其状态为:(PC值,约束标号,符号映射)=(0,0,null),此时的PC值为0,且0标号相应的路径约束为1表示肯定满足。通过cudaMalloc()为GPU的设备分配内存,并把状态复制到GPU内存;最后分配线程并调用GPU执行。
步骤(2):GPU从状态集合中获取相应的状态执行。初始状态下只有一个线程去执行,但是随着路径的增多,在执行状态集合中会后很多状态;每个线程根据其线程号(比如:可以通过int index=blockIdx.x*blockDim.x+threadIdx.x求的该线程的编号为index)去获取该线程编号所对应的状态执行。在执行过程中会更新状态,比如当执行到"a=read()"时会在状态中跟新PC的值并新建新的符号变量a,使得状态为 同理当执行到"b=read()"时会在状态中跟新PC的值并新建新的符号变量b,使得状态为当执行到"a=a+1"时,状态变为 每个线程会在执行到分支或者执行到指定最大时间限制后将结束该线程,例如当执行到"if(a>15)"时就会结束执行。
步骤(3):当所有GPU线程结束后,CPU将整合本次GPU执行的结果,对于遇到分支情况如“a>15”时首先会更新本状态为且约束标号为0的约束变为((a0+1)>15);同时会生成一个新的状态也就是说其PC值变成该条件判断为false时下一个需要解析的指令的位置,同时约束编号为1所对应的约束为((a0+1)<=15)。之后就把这两个状态重新发送给GPU执行,循环执行步骤2-3;此时GPU就会使用两个线程对该两个状态继续执行,当程序路径越多,那么GPU的执行线程就会越多。
步骤(4):当有路径终止时,则会在CPU端利用SMT(Satisfiability ModuloTheories)求解器进行求解,比如可以利用Z3、STP来求解。可以求出约束是否能够满足,如果不能则返回不满足,如果可以满足则返回能够满足的一个具体值。
在上述一种基于图像处理器加速的符号执行方法的基础上,本发明还提供一种基于图像处理器加速的符号执行系统,包括:
符号执行分解模块:将符号执行分解为可并行化部分和非并行化部分;
任务分配模块:将可并行化部分分配给GPU并行化执行,将非可并行化部分分配给CPU执行。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (8)
1.一种基于图像处理器加速的符号执行方法,其特征在于,包括:
符号执行分解步骤:将符号执行分解为可并行化部分和非并行化部分;
任务分配步骤:将可并行化部分分配给GPU并行化执行,将非可并行化部分分配给CPU执行;
所述基于图像处理器加速的符号执行方法的整体步骤具体包括:
步骤A:CPU初始化执行状态,并为GPU分配内存,把初始化执行状态传输到GPU内存中,启动GPU中的线程;
步骤B:GPU中的线程根据线程编号取得相应的执行状态执行,当遇到分支或者到了预定时间后结束;
步骤C:CPU进行分支指令的解析,根据所述分支指令地执行更新状态和创建新的状态并为各个状态生成路径约束;并把新的状态集合传送给GPU,调用GPU线程根据相应状态并行地解析执行指令;
步骤D:循环执行步骤B-C,直到有终止的状态;
步骤E:对于终止的状态,在CPU端利用约束求解器求出终止的状态所对应的路径符号变量的值;对于还没有终止的状态循环执行步骤B-C;
步骤F:当所有状态都终止后,利用约束求解器求解出结果。
2.根据权利要求1所述的基于图像处理器加速的符号执行方法,其特征在于,所述符号执行包括:从程序中提取相应的变量约束,根据变量约束求解出相应的解;
其中,从程序中提取相应的变量约束包括遍历不同的路径,生成相应的路径约束,所述遍历不同的路径为所述可并行化部分;
所述根据变量约束求解出相应的解为所述非并行化部分。
3.根据权利要求1所述的基于图像处理器加速的符号执行方法,其特征在于,遍历不同的路径包括:
对程序的指令序列进行解析,并为每个路径分配一个状态;对指令序列的解析就是对状态的更新或者生成新的状态;状态包括对应的指令位置PC。
4.根据权利要求2所述的基于图像处理器加速的符号执行方法,其特征在于,所述程序包括准备好链接,且没有使用Share Library的程序。
5.根据权利要求2所述的基于图像处理器加速的符号执行方法,其特征在于,所述程序中循环体中的循环次数最多为3次。
6.根据权利要求3所述的基于图像处理器加速的符号执行方法,其特征在于,CPU执行的步骤包括:
步骤1:初始化操作,包括生成初始状态,为GPU分配内存空间;
步骤2:CPU拷贝数据到GPU内存;
步骤3:根据GPU的规格以及需要处理的状态集中状态的数量得到需要并行处理的线程数,并开启相应的线程;
步骤4:当指令执行过程中遇到条件分支时,该指令的执行交由CPU进行执行,执行过程中CPU更新状态并生成一个新的状态;
更新状态包括:更改指令位置PC的值,指向条件分支为真时的下一个指令位置;根据条件分支为该路径添加一个新的条件约束,约束内容为条件分支为真时的约束;
生成新的状态包括:复制原状态到新生成的状态中;更改新状态中的指令位置PC的值,使得指令位置PC的值为条件分支为假时的下一条指令的位置;根据条件分支判断为新状态添加一个新的条件约束,约束内容为条件分支为假时的约束;
步骤5:根据条件约束利用约束求解器求解出符号变量的具体值。
7.根据权利要求6所述的基于图像处理器加速的符号执行方法,其特征在于,GPU执行的步骤包括:
将各个线程并行地从状态集中取出相应的状态进行解析执行,并根据执行结果更新指令位置PC的值以及更新符号变量。
8.一种基于图像处理器加速的符号执行系统,其特征在于,包括:
符号执行分解模块:将符号执行分解为可并行化部分和非并行化部分;
任务分配模块:将可并行化部分分配给GPU并行化执行,将非可并行化部分分配给CPU执行;
所述基于图像处理器加速的符号执行系统执行的整体步骤具体包括:
A:CPU初始化执行状态,并为GPU分配内存,把初始化执行状态传输到GPU内存中,启动GPU中的线程;
B:GPU中的线程根据线程编号取得相应的执行状态执行,当遇到分支或者到了预定时间后结束;
C:CPU进行分支指令的解析,根据所述分支指令地执行更新状态和创建新的状态并为各个状态生成路径约束;并把新的状态集合传送给GPU,调用GPU线程根据相应状态并行地解析执行指令;
D:循环执行B-C直到有终止的状态;
E:对于终止的状态,在CPU端利用约束求解器求出终止的状态所对应的路径符号变量的值;对于还没有终止的状态循环执行B-C;
F:当所有状态都终止后,利用约束求解器求解出结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910213435.7A CN110033405B (zh) | 2019-03-20 | 2019-03-20 | 一种基于图像处理器加速的符号执行方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910213435.7A CN110033405B (zh) | 2019-03-20 | 2019-03-20 | 一种基于图像处理器加速的符号执行方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110033405A CN110033405A (zh) | 2019-07-19 |
CN110033405B true CN110033405B (zh) | 2020-11-06 |
Family
ID=67236242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910213435.7A Active CN110033405B (zh) | 2019-03-20 | 2019-03-20 | 一种基于图像处理器加速的符号执行方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110033405B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4285331A1 (en) | 2021-05-27 | 2023-12-06 | Huawei Technologies Co., Ltd. | Neural radiance field rig for human 3d shape and appearance modelling |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526934A (zh) * | 2009-04-21 | 2009-09-09 | 浪潮电子信息产业股份有限公司 | 一种gpu与cpu复合处理器的组建方法 |
US8595701B2 (en) * | 2011-02-04 | 2013-11-26 | Fujitsu Limited | Symbolic execution and test generation for GPU programs |
US9183396B2 (en) * | 2012-05-21 | 2015-11-10 | Carnegie Mellon University | Detecting exploitable bugs in binary code |
CN104063325B (zh) * | 2014-07-11 | 2016-10-26 | 电子科技大学 | 一种针对嵌入式软件的测试用例自动化生成装置及其方法 |
CN106340873A (zh) * | 2016-10-11 | 2017-01-18 | 上海交通大学 | 一种采用基于无向生成树的并行遗传算法的配网重构方法 |
CN106600521A (zh) * | 2016-11-30 | 2017-04-26 | 宇龙计算机通信科技(深圳)有限公司 | 一种图像处理方法及终端设备 |
CN106709356B (zh) * | 2016-12-07 | 2019-05-24 | 西安电子科技大学 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
US10606672B2 (en) * | 2017-05-04 | 2020-03-31 | Microsoft Technology Licensing, Llc | Micro-service framework derived from third-party apps |
CN107273331A (zh) * | 2017-06-30 | 2017-10-20 | 山东超越数控电子有限公司 | 一种基于cpu+gpu+fpga架构的异构计算系统和方法 |
CN108345503A (zh) * | 2018-01-18 | 2018-07-31 | 杭州电子科技大学 | 基于cpu-gpu的b样条曲面并行刀轨规划方法 |
-
2019
- 2019-03-20 CN CN201910213435.7A patent/CN110033405B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110033405A (zh) | 2019-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gorelick et al. | High Performance Python: Practical Performant Programming for Humans | |
EP3126971B1 (en) | Program execution on heterogeneous platform | |
US9678775B1 (en) | Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment | |
Nugteren et al. | Introducing'Bones' a parallelizing source-to-source compiler based on algorithmic skeletons | |
US11494681B1 (en) | Quantum instruction compiler for optimizing hybrid algorithms | |
EP1884899A2 (en) | Efficient processing of operator graphs representing three-dimensional character animation | |
US8677334B2 (en) | Parallelization method, system and program | |
US8793692B2 (en) | Language for task-based parallel programming | |
US8260598B2 (en) | Size vector sharing in code generated for variable-sized signals | |
US20190187966A1 (en) | Dynamically replacing a call to a software library with a call to an accelerator | |
US20220222226A1 (en) | Integration of model execution engine containers with a model development environment | |
US9396095B2 (en) | Software verification | |
Tuomanen | Hands-On GPU Programming with Python and CUDA: Explore high-performance parallel computing with CUDA | |
US11308396B2 (en) | Neural network layer-by-layer debugging | |
CN110033405B (zh) | 一种基于图像处理器加速的符号执行方法及系统 | |
Lanaro | Python high performance programming | |
Xu et al. | Empowering R with high performance computing resources for big data analytics | |
US20190163447A1 (en) | Dynamic accelerator generation and deployment | |
Gosmann et al. | Automatic optimization of the computation graph in the Nengo neural network simulator | |
US9262141B1 (en) | Distributed computations of graphical programs having a pattern | |
Sakai et al. | Towards automating multi-dimensional data decomposition for executing a single-GPU code on a multi-GPU system | |
US10824472B2 (en) | Coalescing multiple accelerators into a single accelerator | |
CN114127681A (zh) | 用于实现数据流ai应用的自主加速的方法和装置 | |
US8549456B2 (en) | System and method for circuit design floorplanning | |
US20220391216A1 (en) | Graphics processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |