CN113849182A - 用以基于图注意力网络分析和增强软件的系统 - Google Patents
用以基于图注意力网络分析和增强软件的系统 Download PDFInfo
- Publication number
- CN113849182A CN113849182A CN202011539258.0A CN202011539258A CN113849182A CN 113849182 A CN113849182 A CN 113849182A CN 202011539258 A CN202011539258 A CN 202011539258A CN 113849182 A CN113849182 A CN 113849182A
- Authority
- CN
- China
- Prior art keywords
- graph
- neural network
- program code
- analysis
- instructions
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
本发明公开了用以基于图注意力网络分析和增强软件的系统。系统、装置和方法可以提供用于以下技术的技术:基于与编译的程序代码相关联的多个中间表示(IR)代码指令来生成依赖图,基于所述多个IR代码指令来生成图嵌入向量的集合,以及经由神经网络基于依赖图和图嵌入向量的集合确定对编译的程序代码的分析或对程序代码的增强之一。该技术可以提供一种图注意力神经网络,其包括循环块和至少一个任务特定的神经网络层,该循环块包括图注意力层和转移函数。该技术还可以基于自适应计算时间来应用动态每位置循环停止以确定循环块中每个位置的循环步数。
Description
技术领域
实施例一般涉及用于计算系统的技术。更具体地,实施例涉及用以分析和增强计算机软件程序的技术。
背景技术
软件的量正在迅速增长,并且其使用渗透日常生活。然而,在许多情况下,代码是由不具备以防故障、高度优化的方式编写它的技术知识和/或时间的软件开发人员生成的。恶性软件也存在指数增长,并且自动检测它是最重要的。因此,自动分析和/或优化代码是至关重要的新兴问题。
其他方法有缺点。例如,依赖确定性算法而不是学习方法的方法受到可以应用的启发法的数量、种类和有效性的限制。作为另一个示例,利用源代码而不是机器代码工作的方法要求源代码是可用的。在又一示例中,依赖自然语言处理方法的方法在处理诸如函数调用、分支和语句的可互换顺序之类的结构特征方面有麻烦,并且无法充分利用代码中存在的图形结构。
附图说明
通过阅读以下说明书及所附权利要求书和通过参考以下各图,实施例的各种优势将变得对本领域技术人员显而易见,其中:
图1是图示根据一个或多个实施例的用于分析和增强计算机程序代码的系统的示例的框图;
图2是图示各个指令之间的示例数据依赖性的图;
图3是图示根据一个或多个实施例的用于指令级向量的图的示例的图;
图4提供图示根据一个或多个实施例的图注意力神经网络的示例的各方面的图;
图5提供图示根据一个或多个实施例的针对图注意力神经网络的示例的循环块(recurrent block)的图;
图6提供图示根据一个或多个实施例的用于分析和增强计算机程序代码的系统的示例的操作的流程图;
图7是图示根据一个或多个实施例的性能增强的计算系统的示例的框图;
图8是图示根据一个或多个实施例的示例半导体装置的框图;
图9是图示根据一个或多个实施例的处理器的示例的框图;和
图10是图示根据一个或多个实施例的基于多处理器的计算系统的示例的框图。
具体实施方式
一般地,实施例提供一种使用图注意力神经网络来自动分析和增强计算机程序代码的计算系统。实施例还提供用于分析计算机程序代码并返回关于代码的有用信息,诸如软件分类(例如,恶意代码检测)、线程粗化分析或异构调度分析。另外,实施例提供用于通过代码修改(诸如经由环向量化(loop vectorization)和优化传递排序)来改进计算机程序代码的运行时执行。实施例还包括执行从指令级粒度到任何期望的较粗级(例如,环、函数、模块、类别等)的任何类型的操纵的技术。因此,实施例将自动增强程序执行或自动标识和分类某些类型的程序代码。
更特别地,计算系统的实施例提供用于基于多个机器代码指令生成依赖图,基于多个机器代码指令生成嵌入向量的集合,以及将依赖图和嵌入向量的集合输入到图注意力神经网络以确定对编译的程序代码的分析或对程序代码的增强。图1是图示根据一个或多个实施例的用于分析和增强计算机程序代码的计算系统100的示例的框图,其参考本文描述的组件和特征,包括但不限于附图和相关联的描述。系统100可以接收源代码102,并将源代码编译成中间表示(IR)代码104。在一些实施例中,系统可以接收已经以编译的形式的机器代码104。如图1中图示的,在一些实施例中,编译的代码104可以包括LLVM中间表示(LLVM-IR)位代码。在其他实施例中,代码104可以包括除LLVM-IR位代码之外的编译的中间表示代码,诸如例如由另一个编译器产生的IR位代码。IR代码104可以被存储在存储器(未示出)中以用于进一步处理。
如图1中所示出的,可以从IR代码104生成依赖图106。依赖图106可以例如基于LLVM为LLVM IR位代码提供的依赖图技术。在一些实施例中,可以应用其他依赖图技术。可以基于IR代码104生成图嵌入向量的集合108,并且将其输入到图注意力神经网络110(其可以是在本文中更详细地描述的通用图注意力网络)。通过(多个)学习算法112,可以训练图注意力神经网络110处置诸如其中系统自动提取有关软件的信息(诸如例如,分类为恶意代码)的软件分析(标签114)或其中系统修改LLVM-IR位代码以提高软件运行时性能的软件增强(标签116)之类的任务。软件分析的示例可以包括软件分类分析、线程粗化分析或异构调度分析。软件增强的示例可以包括经由环向量化和/或优化传递排序进行程序修改以提高性能。
图创建模块
指令之间的依赖性可以经由依赖图(诸如已经讨论的图1中的依赖图106)来映射。一些实施例可以使用称为数据依赖图(DDG)的依赖图来映射指令之间的依赖性。在DDG中,图表示各个指令之间的数据依赖性。DDG图中的每个节点表示单个指令,并称为“原子”节点。也可能将它们之间具有简单的def-use依赖性的一些原子节点组合为包含多个指令的较大节点(称为pi块)。在图2中提供了DDG中的数据依赖性的示例的图示(请参阅https://llvm.org/docs/DependenceGraphs/index.html)。如图2中示出的,代码样本集包含一语句,该语句具有对其自身的环承载的依赖性,从而在DDG中创建一循环。图200示出如何通过多个def-use关系和存储器访问依赖性承载依赖性的循环。依赖性的循环是通过多个def-use关系和存储器访问依赖性承载的。
在一些实施例中,称为程序依赖图(PDG)的依赖图可以用于映射指令之间的依赖性。PDG具有与DDG类似的结构,但是它能够表示程序元素(诸如指令、指令组、基本块或基本块组)之间的数据依赖性和控制流依赖性。PDG是优选的依赖图。在替代实施例中,可以使用其他依赖图来映射指令之间的依赖性。
嵌入模块
可以计算图嵌入向量(诸如已经讨论过的图1中的嵌入向量108)的集合,一个向量用于输入程序(即,已经讨论过的图1中的IR代码104)的每个中间表示(IR)代码指令(例如每个LLVM-IR指令)。根据实施例,可以使用具有可泛化为看不见的指令的关键特征的组成嵌入。为了说明的目的参考LLVM-IR指令,由于所有LLVM-IR指令都由共同的元素组成,因此通过为这些元素创建单独的嵌入向量并组成它们,可以实现泛化。此技术类似于由n-gram组成的词嵌入。嵌入向量是独立于依赖图(例如,PDG)生成的。然而,嵌入向量的生成是神经网络中可训练(可通过反向传播训练)元素的一部分。由于训练涉及使用依赖图(例如,PDG),因此在训练之后,这些嵌入向量的值将受到训练期间看到的PDG图的收集的影响。一旦经过训练,神经网络就将被调整为所选任务。
表1示出LLVM-IR指令集中的一组LLVM-IR元素,可以为其生成嵌入向量:
如表1中所示出的,LLVM-IR指令有53种操作、6种类型和5个自变量,总共有64个元素。对于这64个元素中的每个元素,都可以生成嵌入向量。在实施例中,向量的维数可以是系统的用户可调参数。
作为示例,可以说明针对LLVM-IR指令的嵌入向量生成:
store i32 %a, i32* %a.addr, align 4
该指令将通过%a.addr被指向的32位整数设置为address %a中的32位值。“align4”参数确保地址将为4的倍数。根据实施例,该指令可以首先被转化成可以采用许多形式的抽象组成格式(CF)。此指令的CF的特定示例可以如表2中示出的那样:
操作 | Arg1 | Arg1的类型 | Arg2 | Arg2的类型 | 对准 |
存储 | 变量 | 整数 | 指针 | 整数 | 4 |
表2中的CF值是从表1中的条目获得的。如表2中示出的,示例LLVM-IR“存储”指令有六个元素。在一些实施例中,对准信息可以被丢弃。复合函数可以用于从五个单独的元素中创建单个嵌入向量(不考虑对准信息)。该组成向量将被称为指令级向量(ILV)。
在一些实施例中,如图3中所示出的,LLVM-IR“存储”指令可以被建模为“星形图”300,其中向量(ILV)被图示为中心节点,其中每个周围的邻居节点表示来自表2的CF值之一的嵌入向量:vstore(指令)、vvariable和vinteger(自变量1)、vpointer和vinteger(自变量2)。可训练的图注意力层可以用于通过将消息从邻居传递到中心节点来将ILV邻居(即,各个元素的嵌入向量)的信息汇总到ILV中。
通用图注意力模块
根据实施例,图注意力神经网络(例如,已经讨论过的图1中的图注意力神经网络110)可以从图创建模块(其生成用于程序位代码的依赖图)和嵌入模块(其生成用于程序位代码中的每个指令的ILV)接收输入。更特别地,图注意力神经网络的输入可以是(a)函数,其表示在给定依赖图中的一节点的情况下返回其邻居的函数,以及(b)ILV的收集,其表示程序位代码中的指令的指令级向量的收集(本文参考图3描述)。可以应用图注意力层(GAT)以计算每个节点的向量的嵌入向量的加权平均值,然后计算非线性。应用图注意力层(GAT),每个节点的输出通过以下来计算:
其中αj可以表示赋予每个向量vj的权重(或注意力)。在实施例中,取决于算法或任务,非线性可以采取不同形式。在实施例中,可以采用多头图注意力机制。在一些实施例中,图神经网络可以在现场可编程门阵列(FPGA)加速器中实现。在实施例中,图神经网络可以以处理器和FPGA加速器的组合来实现。
实施例可以使用图神经网络架构,该图神经网络架构包括图注意力层(GAT),其后是转移函数。可以使用GAT的任何实例。这种架构的关键特征——称为通用图注意力(UGAT)在于它的深度可以针对每个输入自动且独立地确定。UGAT将GAT的可并行性和延展性与循环神经网络(RNN)的循环归纳基础相结合。可以使用动态的每位置循环停止机制,从而产生针对图中的每个节点的可变且可自调整的深度。动态停止是使用自适应计算时间(ACT)实现的,所述自适应计算时间(ACT)是允许循环神经网络学习在接收输入和发出输出之间要进行多少计算步的算法。ACT要求对网络架构的最少的更改,并且是确定性的和可微的,从而允许使用反向传播进行训练。
图4图示根据一个或多个实施例的图注意力神经网络(例如,已经讨论过的图1中的图注意力神经网络110)的示例的循环处理阶段400,其参考本文描述的组件和特征,包括但不限于附图和相关联的描述。如图 4中所示出的,通过使用图注意力阶段402组合来自不同位置的信息并跨时间步1≤t≤T应用递归转移函数404,UGAT针对图中的每个节点并行地重复细化向量表示的收集。在图4中,在两个循环时间步上图示了该过程,其中示出了箭头以指示操作之间的依赖性。最初,每个向量v0(对于t=0)都利用每个指令的嵌入在图中被初始化。神经网络参数跨图位置和时间步被捆绑。利用动态停止,可以针对每个指令独立确定循环步数T。
图5提供图示根据一个或多个实施例的图注意力神经网络(例如,已经讨论过的图1中的图注意力神经网络110)的示例的循环块的图500,其参考本文描述的组件和特征,包括但不限于附图和相关联的描述。图5中图示的处理流程可以类似于已经讨论过的图1中的流程来进行。在标签502处,可以基于输入IR指令(例如,LLVM-IR位代码)来生成依赖图。在标签504处,可以为输入IR代码中的指令生成嵌入向量。类似于已经讨论过的图4中的图示,用于UGAT的循环块506可以通过应用GAT 508(其可以是多头GAT)和转移函数510经由循环阶段来处理输入依赖图信息和嵌入向量。在T步之后,可以由一个或多个任务特定的神经网络层512处理循环块的输出。通常,神经网络层512可以采用一些完全连接的层的形式,这些层通过诸如例如修正线性单元(ReLU)之类的非线性分开。可以经由使用自适应计算时间的动态停止来分别确定每个位置的循环步数T。
转移函数可以是采用输入向量并返回与输入相同维数的输出向量的任何可微函数。在大多数实施例中,转移函数(即,已经讨论过的图4中的转移函数404和/或图5中的转移函数510)可以是逐位置(即单独地)应用于At的每一行的完全连接的神经网络。
学习模块
学习模块(例如,已经讨论过的图1中的学习算法112)在训练期间使用,并且特定于手头的任务或应用。在一些实施例中,学习模块可以包括使用训练过的训练神经网络用于分类或回归。在分类任务的情况下,学习模块可以采用交叉熵损失函数的形式来评估输出是否与类别标签匹配。在代码性能增强任务的情况下,学习模块可以采用回归损失函数(例如均方误差(MSE)损失)的形式,所述回归损失函数对最差的性能(诸如例如较长的运行时间)进行惩罚并且有利于较好的性能(例如,较短的运行时间)。在这种情况下,未优化的程序可以用作损失的基线。在一些实施例中,学习模块可以包括使用奖励机制训练的深度强化学习代理,该奖励机制有利于解决手头的任务。例如,当深度强化学习代理正确地对软件进行分类时或当它实现运行时加速时,它可能收到高的奖励。
可以使用标准深度学习算法(例如,反向传播或自然进化策略)对系统进行端到端训练。在任何设置下,训练都需要软件数据库。根据任务和所选的学习技术,可能需要或可能不需要标记的示例。训练数据库将需要代表将预期在推理期间遇到的软件程序的类型。
图6是图示根据一个或多个实施例的操作用于分析和增强计算机程序代码的系统的示例的过程600的流程图,其参考本文描述的组件和特征,包括但不限于附图和相关联的描述。可以在已经讨论过的本文参考图1描述的计算系统100中实现过程600。更特别地,可以在作为存储在机器或计算机可读存储介质(诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等)中的一组逻辑指令的一个或多个模块中、在可配置逻辑(诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD))中、在使用电路技术(诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术)的固定功能逻辑硬件中或以其任何组合实现过程600。
例如,可以以一个或多个编程语言的任何组合来编写用以执行过程600中示出的操作的计算机程序代码,所述编程语言包括诸如JAVA、SMALLTALK、C++等的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。另外,逻辑指令可能包括汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、状态设置数据、用于集成电路的配置数据、将源自于硬件(例如,主机处理器、中央处理器/CPU、微控制器等)的电子电路和/或其他结构组件个性化的状态信息。
转到图6,图示的处理块610提供用于基于与编译的程序代码相关联的多个IR代码指令来生成依赖图。图示的处理块620提供用于基于多个IR代码指令来生成图嵌入向量的集合。图示的处理块630提供用于经由图注意力神经网络基于依赖图和图嵌入向量的集合来确定对编译的程序代码的分析或对程序代码的增强之一。图注意力神经网络包括循环块(例如,已经讨论过的图5中的循环块506)和任务特定的神经网络层(例如,已经讨论过的图5中的层512)。循环块包括图注意力层和转移函数(例如,已经讨论过的图5中的层508和转移函数510)。自动确定循环块中每个位置的重复步数。对编译的程序代码的分析的示例可以包括软件分类分析、线程粗化分析或异构调度分析。对程序代码的增强的示例可以包括程序修改,以经由环向量化或优化传递排序中的至少一个来提高性能。
图示的处理块640提供用于基于自适应计算时间来应用动态每位置循环停止来确定循环块中每个位置的循环步数。图示的处理块650提供用于应用一个或多个任务特定的神经网络层。可以将图示的处理块640和/或图示的处理块650作为图示的处理块630的过程的一部分来执行。
图7示出图示根据一个或多个实施例的用于分析和增强计算机程序代码的示例计算系统10的框图,其参考本文描述的组件和特征,包括但不限于附图和相关联的描述。系统10一般可以是电子设备/平台的一部分,所述电子设备/平台具有计算和/或通信功能(例如,服务器、云基础设施控制器、数据库控制器、笔记本计算机、台式计算机、个人数字助理/PDA、平板计算机、可转换式平板电脑、智能电话等)、成像功能(例如,相机、摄像机)、媒体播放功能(例如,智能电视/TV)、可穿戴功能(例如,手表、眼镜、头饰、鞋类、珠宝)、车辆功能(例如,汽车、卡车、摩托车)、机器人功能(例如,自主机器人)、物联网(IoT)功能等或其任何组合。在图示的示例中,系统10包括主机处理器12(例如,中央处理单元/CPU),所述主机处理器12具有可以耦合至系统存储器20的集成存储器控制器(IMC)14。主机处理器12可以包括任何类型的处理设备,诸如例如微控制器、微处理器、RISC处理器、ASIC等,连同相关联的处理模块或电路。系统存储器20可以包括任何非暂时性机器或计算机可读存储介质,诸如RAM、ROM、PROM、EEPROM、固件、闪存等,可配置逻辑,诸如例如PLA、FPGA、CPLD,使用诸如例如ASIC、CMOS或TTL技术之类的电路技术的固定功能硬件逻辑,或其适合于存储指令28的任何组合。
系统10还可以包括输入/输出(I/O)子系统16。I/O子系统16可以与例如一个或多个输入/输出(I/O)设备17、网络控制器24(例如,有线和/或无线NIC)以及存储装置22通信。存储装置22可以由任何适当的非暂时性机器或计算机可读存储器类型(例如,闪存、DRAM、SRAM(静态随机存取存储器)、固态驱动器(SSD)、硬盘驱动器(HDD)、光盘等)组成。存储装置22可以包括大容量存储装置。在一些实施例中,主机处理器12和/或I/O子系统16可以经由网络控制器24与存储装置22(其全部或部分)通信。在一些实施例中,系统10还可以包括图形处理器26(例如,图形处理单元/GPU)和AI加速器27。在实施例中,系统10还可以包括未示出的视觉处理单元(VPU)。
主机处理器12和I/O子系统16可以一起被实现在半导体管芯上作为片上系统(SoC)11,其被示出为以实线包起。SoC 11因此可以作为用于分析和增强计算机软件程序的计算装置进行操作。在一些实施例中,SoC 11还可以包括系统存储器20、网络控制器24、图形处理器26和/或AI加速器27(被示出为以虚线包起)中的一个或多个。在一些实施例中,SoC 11还可以包括系统10的其他组件。
主机处理器12、I/O子系统16、图形处理器26、AI加速器27和/或VPU可以执行从系统存储器20和/或存储装置22取回的程序指令28,以执行如本文参考图6描述的过程600的一个或多个方面。因此,指令28的执行可以使SoC 11基于与编译的程序代码相关联的多个中间表示(IR)代码指令来生成依赖图,基于多个IR代码指令来生成图嵌入向量的集合,并经由图注意力神经网络基于依赖图和图嵌入向量的集合,确定对编译的程序代码的分析或对程序代码的增强之一。系统10可以实现如本文参考图1-5描述的计算系统100、图创建模块、嵌入模块、通用图注意力模块和/或学习模块的一个或多个方面。因此,至少就系统自动地和自适应地分析和/或增强计算机程序代码的性能来说,系统10被认为是性能增强的。
用于执行以上描述的过程的计算机程序代码可以以一个或多个编程语言的任何组合来编写,并实现为程序指令28,所述编程语言包括诸如JAVA、JAVASCRIPT、PYTHON、SMALLTALK、C++等的面向对象的编程语言和/或常规过程编程语言,诸如“C”编程语言或类似的编程语言。另外,程序指令28可以包括汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、状态设置数据、用于集成电路的配置数据、使源自于硬件(例如主机处理器、中央处理单元/CPU、微控制器等)的电子电路和/或其他结构组件个性化的状态信息。
I/O设备17可以包括输入设备中的一个或多个,所述输入设备诸如触摸屏、键盘、鼠标、光标控制设备、触摸屏、麦克风、数码相机、录像机、摄像机、生物计量学扫描仪和/或传感器;输入设备可以用于输入信息并与系统10和/或与其他设备进行交互。I/O设备17还可以包括输出设备中的一个或多个,所述输出设备诸如显示器(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器、等离子体面板等)、扬声器和/或其他视觉或音频输出设备。输入和/或输出设备可以用于例如提供用户接口。
图8示出图示根据一个或多个实施例的用于分析和增强计算机程序代码的示例半导体装置30的框图,其参考本文描述的组件和特征,包括但不限于附图和相关联的描述。半导体装置30可以被实现为例如芯片、管芯或其他半导体封装。半导体装置30可以包括由例如硅、蓝宝石、砷化镓等组成的一个或多个衬底32。半导体装置30还可以包括由例如耦合到(多个)衬底32的(多个)晶体管阵列和(多个)其他集成电路(IC)组件组成的逻辑34。逻辑34可以至少部分地以可配置逻辑或固定功能逻辑硬件来实现。逻辑34可以实现以上参考图7描述的片上系统(SoC)11。逻辑34可以实现以上描述的过程的一个或多个方面,包括如本文参考图6描述的过程600,其用以基于与编译的程序代码相关联的多个中间表示(IR)代码指令来生成依赖图,基于多个IR代码指令生成图嵌入向量的集合,并经由图注意力神经网络基于依赖图和图嵌入向量的集合来确定对编译的程序代码的分析或对程序代码的增强之一。逻辑34可以实现如本文参考图1-5描述的计算系统100、图创建模块、嵌入模块、通用图注意力模块和/或学习模块的一个或多个方面。因此,至少就系统自动和自适应地分析和/或增强计算机程序代码的性能来说,装置30被认为是性能增强的。
可以使用任何适当的半导体制造过程或技术来构造半导体装置30。例如,逻辑34可以包括被定位(例如嵌入)在(多个)衬底32内的晶体管沟道区。因此,逻辑34和(多个)衬底32之间的界面可以不是突变结。逻辑34也可以被认为包括在(多个)衬底32的初始晶片上生长的外延层。
图9是图示根据一个或多个实施例的示例处理器核40的框图,其参考本文描述的组件和特征,包括但不限于附图和相关联的描述。处理器核40可以是用于任何类型的处理器(诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器)或用以执行代码的其他设备的核。尽管在图9中仅图示了一个处理器核40,但是处理元件也可以替代地包括不止一个图9中图示的处理器核40。处理器核40可以是单线程核,或者对于至少一个实施例,处理器核40可以是多线程的,因为它每个核可以包括不止一个硬件线程上下文(或“逻辑处理器”)。
图9还图示了耦合至处理器核40的存储器41。存储器41可以是如本领域技术人员已知或以其他方式可获得的(包括存储器层级的各个层的)多种多样的存储器中的任何存储器。存储器41可以包括将由处理器核40执行的一个或多个代码42指令。代码42可以实现如本文参考图6描述的过程600的一个或多个方面。处理器核40可以实现如本文参考图1-5描述的计算系统100、图创建模块、嵌入模块、通用图注意力模块和/或学习模块的一个或多个方面。处理器核40遵循由代码42指示的指令的程序序列。每个指令可以进入前端部分43并且由一个或多个解码器44处理。解码器44可以生成诸如以预定义的格式的固定宽度微操作之类的微操作作为其输出,或者可以生成其他指令、微指令或反映原始代码指令的控制信号。图示的前端部分43还包括寄存器重命名逻辑46和调度逻辑48,它们一般分配资源并使与转换指令对应的操作排队以用于执行。
示出了处理器核40,其包括具有一组执行单元55-1至55-N的执行逻辑50。一些实施例可以包括专用于特定功能或功能集的多个执行单元。其他实施例可以包括仅一个执行单元或一个可以执行特定功能的执行单元。图示的执行逻辑50执行由代码指令指定的操作。
在完成由代码指令指定的操作的执行之后,后端逻辑58引退代码42的指令。在实施例中,处理器核40允许无序执行,但是要求按顺序引退指令。引退逻辑59可以采取如本领域技术人员已知的多种形式(例如,重新排序缓冲器等)。以该方式,至少依据解码器生成的输出、寄存器重命名逻辑46利用的硬件寄存器和表格以及执行逻辑50修改的(未示出的)任何寄存器,在代码42的执行期间变换处理器核40。
尽管未在图9中图示,但是处理元件可以包括与处理器核40一起在芯片上的其他元件。例如,处理元件可以包括存储器控制逻辑连同处理器核40。处理元件可以包括I/O控制逻辑和/或可以包括与存储器控制逻辑集成在一起的I/O控制逻辑。处理元件还可以包括一个或多个高速缓存。
图10是图示根据一个或多个实施例的基于多处理器的计算系统60的示例的框图,其参考本文描述的组件和特征,包括但不限于附图和相关联的描述。多处理器系统60包括第一处理元件70和第二处理元件80。虽然示出了两个处理元件70和80,但是将理解,系统60的实施例也可以仅包括一个这样的处理元件。
系统60被图示为点对点互连系统,其中第一处理元件70和第二处理元件80经由点对点互连71耦合。应当理解,可以将图10中图示的任何或所有互连实现为多点总线而不是点对点互连。
如图10中所示,处理元件70和80中的每个可以是多核处理器,其包括第一和第二处理器核(即,处理器核74a和74b以及处理器核84a和84b)。这样的核74a、74b、84a、84b可以被配置成以与上面结合图9讨论的方式类似的方式来执行指令代码。
每个处理元件70、80可以包括至少一个共享高速缓存99a、99b。共享高速缓存99a、99b可以存储由处理器的一个或多个组件(诸如分别为核74a、74b和84a、84b)利用的数据(例如,指令)。例如,共享高速缓存99a、99b可以本地高速缓存存储在存储器62、63中的数据,用于由处理器的组件更快访问。在一个或多个实施例中、共享高速缓存99a、99b可以包括一个或多个中级高速缓存(诸如级别2(L2)、级别3(L3)、级别4(L4)或高速缓存的其他级别)、末级高速缓存(LLC)和/或其组合。
虽然仅示出了两个处理元件70、80,但是将理解,实施例的范围不被如此限制。在其他实施例中,给定处理器中可以存在一个或多个附加处理元件。替代地,处理元件70、80中的一个或多个可以是除处理器之外的元件,诸如加速器或现场可编程门阵列。例如,(多个)附加处理元件可以包括与第一处理器70相同的(多个)附加处理器、与第一处理器70异构或不对称的(多个)附加处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理元件。在包括架构、微架构、热、功耗特性等的一连串优点指标方面,在处理元件70、80之间可能存在多种差异。这些差异可以有效地将它们本身表现为处理元件70、80之间的不对称和异构。对于至少一个实施例,各种处理元件70、80可以驻留在同一管芯封装中。
第一处理元件70可以进一步包括存储器控制器逻辑(MC)72以及点对点(P-P)接口76和78。类似地,第二处理元件80可以包括MC 82以及P-P接口1086和1088。如图10中所示,MC 72和82将处理器耦合到相应的存储器,即存储器62和存储器63,它们可以是本地附接到相应处理器的主存储器的部分。虽然将MC 72和82图示为集成到处理元件70、80中,但是对于替代实施例,MC逻辑可以是在处理元件70、80外部而不是集成在其中的分立逻辑。
第一处理元件70和第二处理元件80可以分别经由P-P互连76和86耦合到I/O子系统90。如图10中所示,I/O子系统90包括P-P接口94和98。此外,I/O子系统90包括接口92,用以将I/O子系统90与高性能图形引擎64耦合。在一个实施例中,总线73可以用来将图形引擎64耦合到I/O子系统90。替代地,点对点互连可以耦合这些组件。
继而,I/O子系统90可以经由接口96耦合到第一总线65。在实施例中,第一总线65可以是外围组件互连(PCI)总线,或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但是实施例的范围不被如此限制。
如图10中所示,各种I/O设备65a(例如,生物测量学扫描仪、扬声器、相机、传感器)可以连同总线桥66一起耦合到第一总线65,所述总线桥66可以将第一总线65耦合到第二总线67。在一个实施例中,第二总线67可以是低引脚数(LPC)总线。各种设备可以耦合到第二总线67,包括例如键盘/鼠标67a、(多个)通信设备67b和数据存储单元68,诸如盘驱动器或其他大容量存储设备,其在一个实施例中可以包括代码69。所图示的代码69可以实现以上描述的过程的一个或多个方面,包括如本文参考图6描述的过程600。所图示的代码69可以类似于已经讨论过的代码42(图9)。此外,音频I/O 67c可以耦合到第二总线67,并且电池61可以向计算系统60供电。系统60可以实现如本文参考图1-5描述的计算系统100、图创建模块、嵌入模块、通用图注意力模块和/或学习模块的一个或多个方面。
注意,设想了其他实施例。例如,代替图10的点对点架构,系统可以实现多点总线或另一这样的通信拓扑。而且,可以替代地使用比图10中所示更多或更少的集成芯片来划分图10的元件。
以上系统、设备、组件和/或方法中的每个的实施例,包括系统10、半导体装置30、处理器核40、系统60、计算系统100、图创建模块、嵌入模块、通用图注意力模块、学习模块、过程600和/或任何其他系统组件可以以硬件、软件或其任何合适的组合来实现。例如,硬件实现可以包括可配置逻辑,诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD),或使用电路技术(诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术)的固定功能逻辑硬件,或其任何组合。
替代地或附加地,可以在作为存储在机器或计算机可读存储介质(诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等)中的一组逻辑指令(其待由处理器或计算设备执行)的一个或多个模块中实现前述系统和/或组件和/或方法中的全部或部分。例如,可以以一个或多个操作系统(OS)适用/适当的编程语言的任何组合来编写用以执行组件的操作的计算机程序代码,所述编程语言包括诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。
附加注释和示例:
示例1包括一种计算系统,包括:存储器,用于存储编译的程序代码,所述代码包括多个中间表示(IR)代码指令;耦合到存储器的处理器,该处理器包括一个或多个衬底以及耦合到一个或多个衬底的逻辑,其中所述逻辑至少部分地以可配置逻辑或固定功能硬件逻辑中的一个或多个实现,耦合到所述一个或多个衬底的所述逻辑用以:基于所述多个IR代码指令生成依赖图;基于所述多个IR代码指令生成图嵌入向量的集合;和经由图注意力神经网络,基于依赖图和图嵌入向量的集合,确定对编译的程序代码的分析或对编译的程序代码的增强之一,其中,图注意力神经网络包括循环块和任务特定的神经网络层,该循环块包括图注意力层和转移函数,并且其中,自动确定循环块中每个位置的循环步数。
示例2包括示例1所述的计算系统,其中,所述依赖图用于映射所述多个IR代码指令中的指令之间的依赖性,并且其中,每个图嵌入向量用于作为图对多个IR代码指令中的指令的操作、关联自变量和关联自变量类型进行建模。
示例3包括示例1所述的计算系统,其中,所述转移函数包括完全连接的神经网络层。
示例4包括示例1所述的计算系统,其中,耦合到所述一个或多个衬底的所述逻辑用于基于自适应计算时间应用动态的每位置循环停止,以确定所述循环块中每个位置的循环步数。
示例5包括示例1所述的计算系统,其中,对编译的程序代码的分析包括软件分类分析、线程粗化分析或异构调度分析中的一个,并且其中,对程序代码的增强包括程序修改,以经由环向量化或优化传递排序中的至少一个来提高性能。
示例6包括示例1-5中任一项所述的计算系统,进一步包括:学习模块,用于训练所述图注意力神经网络,所述学习模块包括以下各项之一:被训练用于分类或回归的训练神经网络;或使用有利于解决期望的任务的奖励机制而训练的深度强化学习代理。
示例7包括一种半导体装置,包括:一个或多个衬底;和与一个或多个衬底耦合的逻辑,其中所述逻辑至少部分地以可配置逻辑或固定功能硬件逻辑中的一个或多个实现,与一个或多个衬底耦合的所述逻辑用以:基于与编译的程序代码相关联的多个中间表示(IR)代码指令生成依赖图;基于所述多个IR代码指令生成图嵌入向量的集合;和经由图注意力神经网络,基于依赖图和图嵌入向量的集合,确定对编译的程序代码的分析或对编译的程序代码的增强之一,其中,图注意力神经网络包括循环块和任务特定的神经网络层,该循环块包括图注意力层和转移函数,并且其中自动确定循环块中每个位置的循环步数。
示例8包括示例7所述的装置,其中,所述依赖图用于映射所述多个IR代码指令中的指令之间的依赖性,并且其中,每个图嵌入向量用于作为图对多个IR代码指令中的指令的操作、关联自变量和关联自变量类型进行建模。
示例9包括示例7所述的装置,其中,所述转移函数包括完全连接的神经网络层。
示例10包括示例7所述的装置,其中,耦合到所述一个或多个衬底的所述逻辑用于基于自适应计算时间应用动态的每位置循环停止,以确定所述循环块中每个位置的循环步数。
示例11包括示例7所述的装置,其中,对编译的程序代码的分析包括软件分类分析、线程粗化分析或异构调度分析中的一个,并且其中,对程序代码的增强包括程序修改,以经由环向量化或优化传递排序中的至少一个来提高性能。
示例12包括7-11中任一项所述的装置,其中,学习模块,用于训练所述图注意力神经网络,所述学习模块包括以下各项之一:被训练用于分类或回归的训练神经网络;或使用有利于解决期望的任务的奖励机制而训练的深度强化学习代理。
示例13包括示例7所述的装置,其中,耦合到所述一个或多个衬底的所述逻辑包括定位在所述一个或多个衬底内的晶体管沟道区。
示例14包括至少一个非暂时性计算机可读存储介质,其包括一组指令,所述指令在由计算系统执行时使得所述计算系统进行如下各项:基于与编译的程序代码相关联的多个中间表示(IR)代码指令生成依赖图;基于所述多个IR代码指令生成图嵌入向量的集合;和经由图注意力神经网络,基于依赖图和图嵌入向量的集合,确定对编译的程序代码的分析或对编译的程序代码的增强之一,其中,图注意力神经网络包括循环块和任务特定的神经网络层,该循环块包括图注意力层和转移函数,并且其中自动确定循环块中每个位置的循环步数。
示例15包括示例14所述的至少一个非暂时性计算机可读存储介质,其中,所述依赖图用于映射所述多个IR代码指令中的指令之间的依赖性,并且其中,每个图嵌入向量用于作为图对多个IR代码指令中的指令的操作、关联自变量和关联自变量类型进行建模。
示例16包括示例14所述的至少一个非暂时性计算机可读存储介质,其中,所述转移函数包括完全连接的神经网络层。
示例17包括示例14所述的至少一个非暂时性计算机可读存储介质,其中,所述指令在被执行时使得所述计算系统基于自适应计算时间应用动态的每位置循环停止,以确定所述循环块中每个位置的循环步数。
示例18包括示例14所述的至少一个非暂时性计算机可读存储介质,其中,对编译的程序代码的分析包括软件分类分析、线程粗化分析或异构调度分析中的一个,并且其中,对程序代码的增强包括程序修改,以经由环向量化或优化传递排序中的至少一个来提高性能。
示例19包括示例14-18中任一项所述的至少一个非暂时性计算机可读存储介质,其中,学习模块,用于训练所述图注意力神经网络,所述学习模块包括以下各项之一:被训练用于分类或回归的训练神经网络;或使用有利于解决期望的任务的奖励机制而训练的深度强化学习代理。
示例20包括一种分析和增强计算机软件程序的方法,包括:基于与编译的程序代码相关联的多个中间表示(IR)代码指令生成依赖图;基于所述多个IR代码指令生成图嵌入向量的集合;和经由图注意力神经网络,基于依赖图和图嵌入向量的集合,确定对编译的程序代码的分析或对编译的程序代码的增强之一,其中,图注意力神经网络包括循环块和任务特定的神经网络层,该循环块包括图注意力层和转移函数,并且其中自动确定循环块中每个位置的循环步数。
示例21包括示例20所述的方法,其中,所述依赖图映射所述多个IR代码指令中的指令之间的依赖性,并且其中,每个图嵌入向量作为图对多个IR代码指令中的指令的操作、关联自变量和关联自变量类型进行建模。
示例22包括示例20所述的方法,其中,所述转移函数包括完全连接的神经网络层。
示例23包括示例20所述的方法,进一步包括:基于自适应计算时间应用动态的每位置循环停止,以确定所述循环块中每个位置的循环步数。
示例24包括示例20所述的方法,其中,对编译的程序代码的分析包括软件分类分析、线程粗化分析或异构调度分析中的一个,并且其中,对程序代码的增强包括程序修改,以经由环向量化或优化传递排序中的至少一个来提高性能。
示例25包括示例20-24中任一项所述的方法,其中,学习模块用于训练所述图注意力神经网络,所述学习模块包括以下各项之一:被训练用于分类或回归的训练神经网络;或使用有利于解决期望的任务的奖励机制而训练的深度强化学习代理。
示例26包括一种装置,其包括用于执行示例20-24中任一项所述的方法的部件。
因此,本文描述的自适应技术提供用于自动增强程序执行或自动标识和分类某些类型的程序代码。该技术与语言无关,并且因此可以分析更大范围的代码(例如,源自C、C++、Fortran、OpenCL等程序的代码)。另外,该技术推广到在训练期间看不到的机器指令,因此使系统在推理时更健壮,并减少所需训练数据的量和可变性。此外,该技术包括基于图注意力网络的自动神经网络架构选择机制,该机制被设计用以充分利用代码结构并减少训练时要调整的超参数的数量。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、片上系统(SoC)、SSD/NAND控制器、ASIC等。另外,在一些图中,用线表示信号导线。一些可能不同以指示更多的组成信号路径,具有标号以指示多个组成信号路径,和/或在一个或多个末端处具有箭头以指示主要信息流向。然而,这不应被以限制性方式来解释。准确地说,可以结合一个或多个示例性实施例来使用这样的添加的细节以促进对电路的更容易理解。任何被表示的信号线,无论是否具有附加信息,实际上都可以包括可以在多个方向行进的一个或多个信号,并且可以利用任何适合类型的信号方案来实现,例如利用差分对实现的数字或模拟线、光纤线和/或单端线。
可能已经给出了示例尺寸/模型/值/范围,但是实施例不被如此限制。随着制造技术(例如,光刻法)随着时间的推移而成熟,期望可以制造更小尺寸的器件。另外,为了简化图示和讨论和以便不使实施例的某些方面模糊,在图内可能会或可能不会示出到IC芯片和其他组件的众所周知的电源/接地连接。进一步地,可以以框图形式示出布置,以便避免使实施例模糊而且鉴于以下事实:关于这样的框图布置的实现的细节高度取决于将在其内实现实施例的计算系统,即,这样的细节应该完全在本领域技术人员的眼界内。在阐述特定细节(例如,电路)以便描述示例实施例的情况下,对本领域技术人员应当显而易见的是,可以在没有这些特定细节或具有这些特定细节的变型的情况下实践实施例。因此,说明书将被认为是说明性的而不是限制性的。
术语“耦合”在本文中可以用来指代讨论中的组件之间的任何类型的关系,直接或间接的,并且可以适用于电、机械、流体、光学、电磁、机电或其他连接。另外,术语“第一”、“第二”等在本文中可以仅用来便于讨论,并且不承载特定的时间或时间顺序的意义,除非另外指示。
如在本申请中和权利要求书中使用的那样,通过术语“一个或多个”结合的项目的清单可以意味着所列项的任何组合。例如,短语“A、B或C中的一个或多个”可以意味着A;B;C;A和B;A和C;B和C;或A、B和C。
根据前面的描述,本领域技术人员将领会,可以以多种形式来实现实施例的广泛技术。因此,虽然已经结合实施例的特定示例描述了实施例,但是实施例的真实范围不应被如此限制,因为在对附图、说明书和所附权利要求书的学习时,其他修改将变得对熟练的从业人员显而易见。
Claims (25)
1.一种计算系统,包括:
存储器,用于存储编译的程序代码,所述代码包括多个中间表示(IR)代码指令;
耦合到存储器的处理器,该处理器包括一个或多个衬底以及耦合到一个或多个衬底的逻辑,其中所述逻辑至少部分地以可配置逻辑或固定功能硬件逻辑中的一个或多个实现,耦合到所述一个或多个衬底的所述逻辑用以:
基于所述多个IR代码指令生成依赖图;
基于所述多个IR代码指令生成图嵌入向量的集合;和
经由图注意力神经网络,基于依赖图和图嵌入向量的集合,确定对编译的程序代码的分析或对编译的程序代码的增强之一,其中,图注意力神经网络包括循环块和任务特定的神经网络层,该循环块包括图注意力层和转移函数,并且其中,自动确定循环块中每个位置的循环步数。
2.根据权利要求1所述的计算系统,其中,所述依赖图用于映射所述多个IR代码指令中的指令之间的依赖性,并且其中,每个图嵌入向量用于作为图对多个IR代码指令中的指令的操作、关联自变量和关联自变量类型进行建模。
3.根据权利要求1所述的计算系统,其中,所述转移函数包括完全连接的神经网络层。
4.根据权利要求1所述的计算系统,其中,耦合到所述一个或多个衬底的所述逻辑用于基于自适应计算时间应用动态的每位置循环停止,以确定所述循环块中每个位置的循环步数。
5.根据权利要求1所述的计算系统,其中,对编译的程序代码的分析包括软件分类分析、线程粗化分析或异构调度分析中的一个,并且其中,对程序代码的增强包括程序修改,以经由环向量化或优化传递排序中的至少一个来提高性能。
6.根据权利要求1-5中任一项所述的计算系统,进一步包括:学习模块,用于训练所述图注意力神经网络,所述学习模块包括以下各项之一:被训练用于分类或回归的训练神经网络;或使用有利于解决期望的任务的奖励机制而训练的深度强化学习代理。
7.一种半导体装置,包括:
一个或多个衬底;和
与一个或多个衬底耦合的逻辑,其中所述逻辑至少部分地以可配置逻辑或固定功能硬件逻辑中的一个或多个实现,与一个或多个衬底耦合的所述逻辑用以:
基于与编译的程序代码相关联的多个中间表示(IR)代码指令生成依赖图;
基于所述多个IR代码指令生成图嵌入向量的集合;和
经由图注意力神经网络,基于依赖图和图嵌入向量的集合,确定对编译的程序代码的分析或对编译的程序代码的增强之一,其中,图注意力神经网络包括循环块和任务特定的神经网络层,该循环块包括图注意力层和转移函数,并且其中自动确定循环块中每个位置的循环步数。
8.根据权利要求7所述的半导体装置,其中,所述依赖图用于映射所述多个IR代码指令中的指令之间的依赖性,并且其中,每个图嵌入向量用于作为图对多个IR代码指令中的指令的操作、关联自变量和关联自变量类型进行建模。
9.根据权利要求7所述的半导体装置,其中,所述转移函数包括完全连接的神经网络层。
10.根据权利要求7所述的半导体装置,其中,耦合到所述一个或多个衬底的所述逻辑用于基于自适应计算时间应用动态的每位置循环停止,以确定所述循环块中每个位置的循环步数。
11.根据权利要求7所述的半导体装置,其中,对编译的程序代码的分析包括软件分类分析、线程粗化分析或异构调度分析中的一个,并且其中,对程序代码的增强包括程序修改,以经由环向量化或优化传递排序中的至少一个来提高性能。
12.根据权利要求7-11中任一项所述的半导体装置,其中,学习模块,用于训练所述图注意力神经网络,所述学习模块包括以下各项之一:被训练用于分类或回归的训练神经网络;或使用有利于解决期望的任务的奖励机制而训练的深度强化学习代理。
13.根据权利要求7-11中任一项所述的半导体装置,其中,耦合到所述一个或多个衬底的所述逻辑包括定位在所述一个或多个衬底内的晶体管沟道区。
14.一种计算装置,包括:
用于基于与编译的程序代码相关联的多个中间表示(IR)代码指令生成依赖图的部件;
用于基于所述多个IR代码指令生成图嵌入向量的集合的部件;和
用于经由图注意力神经网络,基于依赖图和图嵌入向量的集合,确定对编译的程序代码的分析或对编译的程序代码的增强之一的部件,其中,图注意力神经网络包括循环块和任务特定的神经网络层,该循环块包括图注意力层和转移函数,并且其中自动确定循环块中每个位置的循环步数。
15.根据权利要求14所述的计算装置,其中,所述依赖图用于映射所述多个IR代码指令中的指令之间的依赖性,并且其中,每个图嵌入向量用于作为图对多个IR代码指令中的指令的操作、关联自变量和关联自变量类型进行建模。
16.根据权利要求14所述的计算装置,其中,所述转移函数包括完全连接的神经网络层。
17.根据权利要求14所述的计算装置,进一步包括:基于自适应计算时间应用动态的每位置循环停止,以确定所述循环块中每个位置的循环步数。
18.根据权利要求14所述的计算装置,其中,对编译的程序代码的分析包括软件分类分析、线程粗化分析或异构调度分析中的一个,并且其中,对程序代码的增强包括程序修改,以经由环向量化或优化传递排序中的至少一个来提高性能。
19.根据权利要求14-18中任一项所述的计算装置,其中,学习模块,用于训练所述图注意力神经网络,所述学习模块包括以下各项之一:被训练用于分类或回归的训练神经网络;或使用有利于解决期望的任务的奖励机制而训练的深度强化学习代理。
20.一种分析和增强计算机软件程序的方法,包括:
基于与编译的程序代码相关联的多个中间表示(IR)代码指令生成依赖图;
基于所述多个IR代码指令生成图嵌入向量的集合;和
经由图注意力神经网络,基于依赖图和图嵌入向量的集合,确定对编译的程序代码的分析或对编译的程序代码的增强之一,其中,图注意力神经网络包括循环块和任务特定的神经网络层,该循环块包括图注意力层和转移函数,并且其中自动确定循环块中每个位置的循环步数。
21.根据权利要求20所述的方法,其中,所述依赖图映射所述多个IR代码指令中的指令之间的依赖性,并且其中,每个图嵌入向量作为图对多个IR代码指令中的指令的操作、关联自变量和关联自变量类型进行建模。
22.根据权利要求20所述的方法,其中,所述转移函数包括完全连接的神经网络层。
23.根据权利要求20所述的方法,进一步包括:基于自适应计算时间应用动态的每位置循环停止,以确定所述循环块中每个位置的循环步数。
24.根据权利要求20所述的方法,其中,对编译的程序代码的分析包括软件分类分析、线程粗化分析或异构调度分析中的一个,并且其中,对程序代码的增强包括程序修改,以经由环向量化或优化传递排序中的至少一个来提高性能。
25.根据权利要求20-24中任一项所述的方法,其中,学习模块用于训练所述图注意力神经网络,所述学习模块包括以下各项之一:被训练用于分类或回归的训练神经网络;或使用有利于解决期望的任务的奖励机制而训练的深度强化学习代理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/913,756 US11640295B2 (en) | 2020-06-26 | 2020-06-26 | System to analyze and enhance software based on graph attention networks |
US16/913756 | 2020-06-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113849182A true CN113849182A (zh) | 2021-12-28 |
Family
ID=72747884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011539258.0A Pending CN113849182A (zh) | 2020-06-26 | 2020-12-23 | 用以基于图注意力网络分析和增强软件的系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11640295B2 (zh) |
CN (1) | CN113849182A (zh) |
DE (1) | DE102020132716A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115269016A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于图计算的指令执行方法及装置 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11210073B1 (en) * | 2020-07-29 | 2021-12-28 | SparkCognition, Inc. | Translating text encodings of machine learning models to executable code |
CN112380427B (zh) * | 2020-10-27 | 2022-07-08 | 中国科学院信息工程研究所 | 基于迭代图注意力网络的用户兴趣预测方法及电子装置 |
US11403090B2 (en) * | 2020-12-08 | 2022-08-02 | Alibaba Group Holding Limited | Method and system for compiler optimization based on artificial intelligence |
CN113157917B (zh) * | 2021-03-15 | 2023-03-24 | 西北大学 | 基于OpenCL的优化分类模型的建立、优化分类方法及系统 |
CN113051819A (zh) * | 2021-03-24 | 2021-06-29 | 依瞳科技(深圳)有限公司 | 一种可视化建模方法、装置、设备和计算机可读存储介质 |
US11907711B2 (en) * | 2021-05-13 | 2024-02-20 | International Business Machines Corporation | Fast porting of projects |
CN113626035B (zh) * | 2021-07-23 | 2022-11-11 | 南方科技大学 | 基于tvm面向risc-v设备的神经网络编译方法 |
CN113484693B (zh) * | 2021-07-30 | 2023-04-07 | 国网四川省电力公司电力科学研究院 | 基于图神经网络的变电站二次回路故障定位方法及系统 |
CN114444473B (zh) * | 2022-04-11 | 2022-06-21 | 江西财经大学 | 基于多通道层次图注意力网络的开放事件抽取方法与系统 |
CN114691148A (zh) * | 2022-04-11 | 2022-07-01 | 北京百度网讯科技有限公司 | 模型推理加速方法、装置、电子设备及存储介质 |
CN115827496A (zh) * | 2023-02-13 | 2023-03-21 | 北京邮电大学 | 代码的异常检测方法、装置、电子设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4710872A (en) * | 1985-08-07 | 1987-12-01 | International Business Machines Corporation | Method for vectorizing and executing on an SIMD machine outer loops in the presence of recurrent inner loops |
US8868032B2 (en) * | 2010-04-23 | 2014-10-21 | Tekelec, Inc. | Methods, systems, and computer readable media for automatic, recurrent enforcement of a policy rule |
US9996325B2 (en) * | 2013-03-06 | 2018-06-12 | Qualcomm Incorporated | Dynamic reconfigurable compiler |
US10409560B1 (en) * | 2015-11-18 | 2019-09-10 | Amazon Technologies, Inc. | Acceleration techniques for graph analysis programs |
CN108959312B (zh) * | 2017-05-23 | 2021-01-29 | 华为技术有限公司 | 一种多文档摘要生成的方法、装置和终端 |
WO2019222751A1 (en) * | 2018-05-18 | 2019-11-21 | Google Llc | Universal transformers |
US20210056076A1 (en) * | 2019-07-18 | 2021-02-25 | Heng YIN | High throughput embedding generation system for executable code and applications |
US11455543B2 (en) * | 2019-10-15 | 2022-09-27 | Accenture Global Solutions Limited | Textual entailment |
US11763157B2 (en) * | 2019-11-03 | 2023-09-19 | Microsoft Technology Licensing, Llc | Protecting deep learned models |
US11462273B2 (en) * | 2020-05-14 | 2022-10-04 | Intel Corporation | SSD with reduced secure erase time and endurance stress |
-
2020
- 2020-06-26 US US16/913,756 patent/US11640295B2/en active Active
- 2020-12-09 DE DE102020132716.1A patent/DE102020132716A1/de active Pending
- 2020-12-23 CN CN202011539258.0A patent/CN113849182A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115269016A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于图计算的指令执行方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11640295B2 (en) | 2023-05-02 |
DE102020132716A1 (de) | 2021-12-30 |
US20200326934A1 (en) | 2020-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113849182A (zh) | 用以基于图注意力网络分析和增强软件的系统 | |
US20200327118A1 (en) | Similarity search using guided reinforcement learning | |
US20210027166A1 (en) | Dynamic pruning of neurons on-the-fly to accelerate neural network inferences | |
US20190130268A1 (en) | Tensor radix point calculation in a neural network | |
US11366647B2 (en) | Automatic compiler dataflow optimization to enable pipelining of loops with local storage requirements | |
Kumar et al. | Energy-efficient machine learning on the edges | |
KR20220153001A (ko) | 심층 신경망들의 배치를 위한 저정밀도 추론 모델들의 최적화 | |
US20210319298A1 (en) | Compute-based subgraph partitioning of deep learning models for framework integration | |
US20190130269A1 (en) | Pipelined tensor manipulation within a reconfigurable fabric | |
US11853766B2 (en) | Technology to learn and offload common patterns of memory access and computation | |
US20190130276A1 (en) | Tensor manipulation within a neural network | |
CN113010468A (zh) | 用于为异构系统划分计算机应用的自动学习技术 | |
US20220350863A1 (en) | Technology to minimize the negative impact of cache conflicts caused by incompatible leading dimensions in matrix multiplication and convolution kernels without dimension padding | |
US20220343165A1 (en) | Device capability aware technology to execute deep learning computation graphs in web applications | |
CN112988376A (zh) | 服务类别属性在运行时的初始化和管理 | |
US20210374554A1 (en) | Graph context-based operator checks to improve graph clustering and execution in ai accelerator framework integration | |
US11836518B2 (en) | Processor graph execution using interrupt conservation | |
US11663056B2 (en) | Unified programming interface for regrained tile execution | |
US11941437B2 (en) | Graph partitioning to exploit batch-level parallelism | |
US20220391710A1 (en) | Neural network based power and performance model for versatile processing units | |
US11704601B2 (en) | Poisson distribution based approach for bootstrap aggregation in a random forest | |
WO2023035221A1 (en) | Sample-adaptive cross-layer norm calibration and relay neural network | |
US20210319369A1 (en) | Multi-level caching for dynamic deep learning models | |
WO2023102722A1 (en) | Interleaved data loading system to overlap computation and data storing for operations | |
Bingham | Self-Timed Length-Adaptive Arithmetic |
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 |