CN117581237A - 生成中间表示的方法和系统 - Google Patents
生成中间表示的方法和系统 Download PDFInfo
- Publication number
- CN117581237A CN117581237A CN202280043438.0A CN202280043438A CN117581237A CN 117581237 A CN117581237 A CN 117581237A CN 202280043438 A CN202280043438 A CN 202280043438A CN 117581237 A CN117581237 A CN 117581237A
- Authority
- CN
- China
- Prior art keywords
- data
- intermediate representation
- place
- place operation
- output data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000010365 information processing Effects 0.000 claims description 32
- 239000000470 constituent Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 239000000284 extract Substances 0.000 description 13
- 238000007726 management method Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000000605 extraction Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 1
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 208000035475 disorder Diseases 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
- G06F16/287—Visualization; Browsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/904—Browsing; Visualisation therefor
-
- 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/44—Encoding
- G06F8/443—Optimisation
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本公开涉及一种由至少一个处理器执行的生成中间表示的方法。生成中间表示的方法包括:由中间表示生成器从程序中提取用于输入/输出的数据相关信息和运算相关信息的步骤;由中间表示生成器从提取到的数据相关信息和提取到的运算相关信息判断是否存在原地运算的步骤;以及当存在原地运算时,由中间表示生成器利用提取到的数据相关信息、提取到的运算相关信息和与原地运算相关联的生成规则来生成中间表示的步骤。原地的输入数据包括被经原地运算而生成的输出数据代替的数据。
Description
技术领域
本公开涉及一种生成中间表示的方法和系统,具体地,涉及一种针对包括原地(in-place)运算的程序的生成中间表示的方法和系统。
背景技术
程序可以包括数据以及对数据执行运算的指令。执行程序的最简单的方法是按顺序执行给定的指令,但在这种情况下,无法考虑未来给出的运算来执行,因此能够适用的优化技术是有限的。
为了解决这样的问题,可以配置一个与程序具有相同含义的中间表示,并对中间表示适用优化技术,对其进行转换之后再执行,而不是按顺序执行给定的指令。
程序中包括的运算中的一些运算可以包括原地运算。当用中间表示图表表达原地运算时,可能会出现循环结构,并且随着循环结构的出现,算法可能会变得复杂,因此存在很难适用优化的问题。
发明内容
要解决的技术问题
本公开提供一种生成中间表示的方法、计算机可读记录介质和装置(系统)以解决如上所述的问题。
技术方案
本公开可以以各种方式实现,包括方法、装置(系统)或存储在可读存储介质中的计算机程序。
根据本公开的一实施例,一种生成中间表示的方法,其为针对包括原地运算的程序生成中间表示的方法,所述方法由至少一个处理器执行,所述方法包括:从程序中提取用于输入/输出的数据相关信息和运算相关信息的步骤;从提取到的数据相关信息和提取到的运算相关信息判断是否存在原地运算的步骤;以及当存在原地运算时,利用提取到的数据相关信息、提取到的运算相关信息和与原地运算相关联的生成规则来生成中间表示的步骤。原地的输入数据包括被经原地运算而生成的输出数据代替的数据。
根据本公开的一实施例,还包括:将提取到的用于输入/输出的数据、中间表示中包括的数据之间的对应关系存储在数据库中的步骤。
根据本公开的一实施例,生成中间表示的步骤包括:通过生成中间表示的运算的输出数据来生成中间表示的步骤,其中,所述中间表示的运算的输出数据与原地运算的输出数据对应,中间表示的运算的输出数据的数据名与原地运算的输入数据的数据名不同。
根据本公开的一实施例,存储在数据库中的步骤包括:通过将原地运算的输入数据的指针更改为指向与原地运算的输出数据对应的中间表示的运算的输出数据来更新数据库的步骤。
根据本公开的一实施例,原地运算包括第一原地运算和继第一原地运算之后的第二原地运算。生成中间表示的步骤包括:通过生成中间表示的运算的输出数据来生成中间表示的步骤,其中,所述中间表示的运算的输出数据与第一原地运算的输出数据和第二原地运算的输出数据对应,第一原地运算的输入数据的数据名、第一原地运算的输出数据的数据名和第二原地运算的输出数据的数据名互不相同。
根据本公开的一实施例,存储在数据库中的步骤包括:通过将第一原地运算的输入数据的指针更改为指向与第二原地运算的输出数据对应的中间表示的运算的输出数据来更新数据库的步骤。
根据本公开的一实施例,存储在数据库中的步骤包括:当原地运算的输入数据的第一大小与原地运算的输出数据的第二大小不同时,通过将原地运算的输入数据的指针更改为指向与原地运算的输出数据对应的中间表示的运算的输出数据来更新数据库的步骤;以及将原地运算的输入数据与能够恢复到第一大小的运算相关信息关联起来并进行存储的步骤。
根据本公开的一实施例,生成中间表示的步骤包括:当作为原地运算的后续运算,存在利用原地运算的输入数据的第一大小的运算时,利用能够将原地运算的输入数据的第二大小恢复到第一大小的运算来生成中间表示的步骤。
根据本公开的一实施例,存储在数据库中的步骤包括:当原地运算的后续运算为后续原地运算时,通过使原地运算的输入数据和原地运算的输出数据的各自的指针指向与后续原地运算的输出数据对应的中间表示的运算的输出数据来将原地运算的输出数据的第二大小更改为第一大小的步骤;以及将原地运算的输出数据与能够恢复到第二大小的信息关联起来并进行存储的步骤。
根据本公开一实施例,提供一种计算机可读非暂时性记录介,其记录有用于在计算机执行针对包括原地运算的程序生成中间表示的方法的指令。
根据本公开一实施例的生成中间表示的系统包括:存储器;以及至少一个处理器,与存储器连接,并且被配置为执行存储器中包括的计算机可读的至少一个程序。至少一个程序包括用于执行如下操作的指令:从程序中提取用于输入/输出的数据相关信息和运算相关信息;以及从提取到的数据相关信息和提取到的运算相关信息判断是否存在原地运算;以及当存在原地运算时,利用提取到的数据相关信息、提取到的运算相关信息和与原地运算相关联的生成规则来生成中间表示的指令。原地的输入数据是被经原地运算之后的输出数据代替的数据。
有益效果
根据本公开的一些实施例,针对包括原地运算的程序生成中间表示,从而可以防止由于中间表示中出现循环结构而导致无法知道运算顺序的情况的发生。另外,通过防止循环结构,可以容易地适用程序优化技术,从而可以减少程序的内存使用量,可以提高程序的执行速度。
本公开的效果不限于上述效果,本公开所属领域的普通技术人员(称为“普通技术人员”)可以从权利要求书的记载清楚地理解其他未提及的效果。
附图说明
将参照以下所述的附图对本发明的实施例进行说明,其中相似的附图标记表示相似的要素,但不限于此。
图1是示出根据本公开一实施例的信息处理系统生成中间表示的方法的示例的图。
图2是示出根据本公开一实施例的信息处理系统的内部配置的框图。
图3是示出根据本公开一实施例的处理器的内部配置的框图。
图4是示出根据本公开一实施例的生成中间表示的方法的示例的流程图。
图5是示出根据本公开一实施例生成的中间表示和存储有数据的数据库的示例的图。
图6是示出根据本公开一实施例的针对程序生成的中间表示的示例的图。
图7是示出根据本公开一实施例的针对程序生成中间表示,并且将程序与中间表示之间的对应关系存储在数据库中的过程的示例的图。
图8是示出根据本公开一实施例生成针对包括更改数据大小的原地运算的程序的中间表示,并且将程序与中间表示之间的对应关系存储在数据库中的状态的示例的图。
图9是示出根据本公开一实施例生成针对包括更改两个以上数据大小的原地运算的程序的中间表示,并且将程序与中间表示之间的对应关系存储在数据库中的状态的示例的图。
具体实施方式
以下,结合附图对本公开实施的具体内容进行详细说明。然而,在下面的说明中,如果存在不必要地模糊本公开的主旨的风险,则将省略对公知功能或结构的详细说明。
在所附的附图中,对相同或相对应的构成要素赋予了相同的附图标记。并且,在以下实施例的说明中,可以省略相同或相对应的构成要素的重复描述。然而,即使省略了有关构成要素的描述,也不意味着这样的构成要素不包括在某些实施例中。
所公开的实施例的优点和特征、以及实现它们的方法将通过参照与附图一起后述的实施例而变得清楚。然而,本公开不限于下面公开的实施例,而是可以以各种不同的形式实现,提供这些实施例仅是为了使本公开更加完整,并且使本领域的普通技术人员充分了解本发明的范围。
将简单说明本说明书中使用的术语,并详细说明所公开的实施例。本说明书中使用的术语在考虑本发明中的功能的同时,尽可能选择了目前广泛使用的一般术语,但这些可能会根据相关领域技术人员的意图或判例、新技术的出现等有所不同。并且,在特定情况下,也有申请人任意选择的术语,在这种情况下,将在相应发明的说明部分详细记载其含义。因此,本公开所使用的术语并非为简单的术语的名称,而是应基于该术语所具有的含义和在本公开的整体范围内的内容进行定义。
本说明书中的单数表达包括复数表达,除非上下文明确规定它们是单数。此外,复数表达包括单数表达,除非上下文明确规定它们是复数。当在整个说明书中说某个部分包括某个构成要素时,除非另有说明,这意味着可以进一步包括其他构成要素而不排除其他构成要素。
并且,本说明书中使用的术语“模块”或“部”是指软件或硬件构成要素,并且“模块”或“部”执行某些作用。然而,“模块”或“部”并不意味着限于软件或硬件。“模块”或“部”可以被配置为驻留在可寻址存储介质中,并且可以被配置为运行一个以上的处理器。因此,作为一例,“模块”或“部”可以包括构成要素(诸如软件构成要素、面向对象的软件构成要素、类构成要素和任务构成要素)、进程(process)、函数、属性、过程(procedure)、子程序(subroutine)、程序代码段、驱动程序、固件、微代码、电路、数据、数据库、数据结构、表、数组(array)或变量中的至少一者。构成要素、“模块”或“部”中提供的功能可以被组合成更少数量的构成要素、“模块”或“部”,或者可以进一步分离为附加的构成要素、“模块”或“部”。
根据本公开的一实施例,“模块”或“部”可以由处理器和存储器来实现。“处理器”应当被广义地解释为包括通用处理器、中央处理单元(CPU)、微处理器、数字信号处理器(DSP)、控制器、微控制器、状态机等。在某些情况下,“处理器”还可以指专用集成电路(ASIC)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)等。“处理器”还可以指处理设备的组合,例如,数字信号处理器(DSP)和微处理器的组合、多个微处理器的组合、与DSP核心接合的一个以上的微处理器的组合或任意其他这样的构成的组合。并且,“存储器”应广义地解释为包括能够存储电子信息的任意电子构件。“存储器”可以指多种类型的处理器可读介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪存、磁性或光学数据存储装置、寄存器等。如果处理器能够从存储器读取信息,和/或将信息记录在存储器,则可以称该存储器处于与处理器进行电子通信状态。集成在处理器的存储器处于与处理器进行电子通信状态。
在本公开中,“系统”可以包括服务器装置和云装置中的至少一个装置,但不限于此。例如,系统可以由一个以上的服务器装置组成。作为另一例,系统可以由一个以上的云装置组成。作为又一例,系统可以由服务器装置和云装置一起配置而进行动作。
在本公开中,“多个A中的每一个”或“多个A分别”可以指多个A中包括的所有构成要素中的每一个,或者可以指多个A中包括的一些构成要素中的每一个。
在本公开中,“中间表示”可以指为了有效地执行程序而生成的,与程序具有相同含义的图表和/或与其相关的信息。一实施例中,中间表示可以包括一个以上的节点和一个以上的边(edge)。
在本公开中,“原地运算”可以表示在程序的运算期间输出数据与输入数据相同的运算。换言之,可以表示分配给输入数据的、存储在存储器中的值经运算之后,被输出数据的值代替的运算。
图1是示出根据本公开一实施例的信息处理系统110生成中间表示130的方法的示例的图。信息处理系统110可以从程序120提取信息并判断程序120中是否存在原地运算。并且,当程序120中存在原地运算时,信息处理系统110可以利用生成规则生成针对程序120的中间表示130,并将程序的数据、程序与中间表示之间的对应关系存储在数据库140中。
根据一实施例,信息处理系统110可以从程序120提取用于输入/输出的数据相关信息和运算相关信息。例如,信息处理系统110可以从程序120提取数据相关信息,诸如新变量或常量的生成、变量值或常量值的定义和更改、变量或常量的数据类型(data type)、变量或常量的大小等。并且,信息处理系统100可以提取运算相关信息,诸如正在执行的运算的种类、运算的输入/输出数据相关信息、运算的参数等。根据一实施例,程序120可以包括深度学习程序,数据可以包括张量类型的数据。信息处理系统110可以从深度学习程序中包括的张量类型的数据提取数据类型、每个维度的大小等相关信息。
根据一实施例,信息处理系统110可以从提取到的数据相关信息和提取到的运算相关信息判断是否存在原地运算。其中,原地运算可以表示分配给输入数据的、存储在存储器中的值经运算之后,被输出数据的值代替的运算。当程序120中存在原地运算时,信息处理系统110可以利用提取到的数据相关信息、提取到的运算相关信息和与原地运算相关联的生成规则来生成(和更新)中间表示130。中间表示130可以以包括节点(nodes)和边(edges)的图表的形式来表达。在以图表的形式表达的中间表示130中,从程序120提取到的数据和运算可以用节点表达,数据与运算之间的输入/输出关系可以用边表达。其中,与原地运算相关联的生成规则可以表示针对原地运算生成/更新新的输出数据节点使其等同于普通运算,而不是原地运算。
根据一实施例,信息处理系统110可以将从程序120提取到的用于输入/输出的数据、程序与中间表示中包括的数据之间的对应关系存储在数据库140中。其中,用于输入/输出的数据可以指程序的变量或张量。并且,程序的数据与中间表示中包括的数据之间的对应关系是指表示一个输入/输出数据中具有的针对另一个输入/输出数据的地址信息的指针(pointer)和/或针对更改输入/输出数据大小的原地运算的逆运算(inverse)。
另外,当程序中存在原地运算而生成(和更新)中间表示时,数据库140中可以存储和更新用于输入/输出的数据、程序数据与中间表示中包括的数据之间的对应关系。
通过这样的配置,当程序中包括原地运算时,可以防止在生成中间表示时由于出现循环结构而导致无法知道运算顺序的情况的发生。并且,由于没有循环结构,可以容易地适用程序优化技术,从而可以减少程序的内存使用量并可以快速保持程序的执行速度。
图2是示出根据本公开一实施例的信息处理系统110的内部配置的框图。信息处理系统110可以包括存储器210、处理器220、通信模块230和输入/输出接口240。如图2所示,信息处理系统110可以被配置为利用通信模块230通过网络收发信息和/或数据。
存储器210可以包括任意非暂时性计算机可读记录介质。根据一实施例,存储器210可以包括诸如随机存取存储器(RAM,random access memory)、只读存储器(ROM,readonly memory)、磁盘驱动器、固态驱动器(SSD,solid state drive)、闪存(flash memory)等的永久大容量存储装置(permanent mass storage device)。作为另一例,诸如ROM、SSD、闪存或磁盘驱动器之类的永久大容量存储装置作为与存储器分离的单独的永久性存储装置,可以包括在信息处理系统110。另外,存储器210中可以存储有操作系统和至少一个程序代码(例如,用于判断在信息处理系统110中安装并驱动的原地运算的存在和用于生成和更新中间表示等的代码)。
这些软件构成要素可以从与存储器210分离的计算机可读记录介质加载。这种单独的计算机可读记录介质可以包括可直接连接到信息处理系统110的记录介质,例如,可以包括软盘驱动器、磁盘、磁带、DVD/CD-ROM驱动器、存储卡等计算机可读记录介质。作为另一例,软件构成要素也可以通过通信模块230而不是计算机可读记录介质加载到存储器210中。例如,至少一个程序可以基于由开发者或分发应用安装文件的文件分发系统通过通信模块230提供的文件安装的计算机程序(例如,用于判断原地运算是否存在和用于生成和更新中间表示等的程序等)加载到存储器210中。
处理器220可以配置为通过执行基本算术、逻辑和输入/输出计算来处理计算机程序的命令。指令可以由存储器210或通信模块230提供给用户终端(未示出)或其他外部系统。例如,处理器220可以从程序中提取用于输入/输出的数据相关信息和运算相关信息,并且从提取到的数据相关信息和提取到的运算相关信息判断是否存在原地运算,当存在原地运算时,利用提取到的数据相关信息、提取到的运算相关信息和与原地运算相关联的生成规则来生成中间表示。
通信模块230可以提供用户终端(未示出)和信息处理系统110通过网络彼此通信的配置或功能,并且可以提供信息处理系统110与外部系统(例如,单独的云系统等)通信的配置或功能。作为一例,根据信息处理系统110的处理器220的控制提供的控制信号、指令、数据等可以经过通信模块230和网络,通过用户终端和/或外部系统的通信模块传输到用户终端和/或外部系统。例如,表示由计算装置生成的程序的中间表示可以被发送到外部系统(例如,执行程序的系统等)。
并且,信息处理系统110的输入/输出接口240可以是与连接到信息处理系统110或者可包括在信息处理系统110中的用于输入或输出的装置(未示出)的连接(interface)的单元。在图2中,输入/输出接口240被示为与处理器220分开配置的元件,但不限于此,输入/输出接口240可以被配置为包括在处理器220中。信息处理系统110可以包括比图2的构成要素更多的构成要素。然而,没有必要清楚地显示大部分现有技术的构成要素。
信息处理系统110的处理器220可以配置为管理、处理和/或存储从多个用户终端和/或多个外部系统接收的信息和/或数据。根据一实施例,处理器220可以从用户终端和/或外部系统接收包括程序的用于输入/输出的数据相关信息和运算相关信息的程序代码。在这种情况下,处理器提取接收到的代码中包括的用于输入/输出的数据相关信息和运算相关信息,并且判断从提取到的数据相关信息和提取到的运算相关信息判断是否存在原地运算,当存在原地运算时,利用提取到的数据相关信息、提取到的运算相关信息和与原地运算相关联的生成规则来生成中间表示。
图3是示出根据本公开一实施例的处理器220的内部配置的框图。如图所示,处理器220可以包括数据/运算提取部310、原地运算判断部320、中间表示生成部330和数据库管理部340。尽管图3中被示为单个处理器,但不限于此,可以由多个处理器配置。
根据一实施例,数据/运算提取部310可以从程序中提取用于输入/输出的数据相关信息和运算相关信息。例如,数据/运算提取部310可以从程序中提取数据相关信息,例如,新的变量或常量的生成、变量值或常量值的定义和更改、变量或常量的数据类型、变量或常量的大小等。并且,数据/运算提取部310可以提取运算相关信息,例如,正在执行的运算的种类、运算的输入/输出数据相关信息、运算的参数等。根据一实施例,程序可以包括深度学习程序,数据可以包括张量类型的数据。数据/运算提取部310可以从深度学习程序中包括的张量类型的数据提取数据类型、每个维度的大小等相关信息。
根据一实施例,原地运算判断部320可以从输入/输出数据相关信息和运算相关信息判断是否存在原地运算。其中,原地运算可以表示分配给输入数据的、存储在存储器中的值经运算之后,被输出数据的值代替的运算。例如,在作为深度学习框架的PyTorch的情况下,原地运算可以包括不更改张量的形状(或大小)的原地运算(例如,add_、mul_等)、更改张量的形状(或大小)的原地运算(例如,view等),但不限于此。
根据一实施例,当存在原地运算时,中间表示生成部330可以利用提取到的数据相关信息、提取到的运算相关信息和与原地运算相关联的生成规则来生成/更新中间表示。中间表示可以以图表的形式表达,该图表包括表示数据、运算的节点、表示数据与运算之间的输入/输出关系的边。其中,与原地运算相关联的生成规则可以表示针对原地运算生成/更新新的输出数据节点使其等同于普通运算,而不是原地运算。
根据一实施例,中间表示生成部330可以通过生成与原地运算的输出数据对应的中间表示的运算的输出数据来生成中间表示。在这种情况下,中间表示的运算的输出数据的数据名可以与原地运算的输入数据的数据名不同。例如,当原地运算具有诸如“A=A+B”的形式时,中间表示生成部330可以将输出数据“A”以具有与输入数据“A”不同数据名的输出数据“A2”来生成中间表示。
根据一实施例,当提取到的原地运算包括第一原地运算和其后的第二原地运算时,中间表示生成部330可以通过生成中间表示的运算的输出数据来生成中间表示,其中,所述中间表示的运算的输出数据与第一原地运算的输出数据和第二原地运算的输出数据对应。在这种情况下,第一原地运算的输入数据的数据名、第一原地运算的输出数据的数据名和第二原地运算的输出数据的数据名可以互不相同。例如,当从程序中提取第一原地运算(例如,“C=A.add_(B)”)和其后的第二原地运算(例如,“D=C.add_(B)”)时,中间表示生成部330可以通过分别生成与作为第一原地运算的输出数据的“C”和作为第二原地运算的输出数据的“D”对应的中间表示的运算的输出数据“C”和“D”来生成中间表示。
根据一实施例,当作为原地运算的输入数据的第一大小与原地运算的输出数据的第二大小不同的原地运算的后续运算,存在利用原地运算的输入数据的第一大小的运算时,中间表示生成部330可以利用能够将原地运算的输入数据的第二大小恢复到第一大小的运算(即逆运算)来生成中间表示。例如,当作为输入数据“A”的第一大小(例如,2x3)与输出数据“D”的第二大小(例如,3x2)不同的原地运算(例如,“D=A.view(3,2)”)的后续运算,存在利用原地运算的输入数据的第一大小的运算(例如,输入数据“B”为第一大小(2x3),“F=A.add_(B)”)时,中间表示生成部330可以利用逆运算生成中间表示。
根据一实施例,数据库管理部340可以将提取到的数据相关信息、中间表示中包括的数据之间的对应关系存储在数据库中。提取到的数据相关信息可以包括与数据的名称(例如,变量名或张量名)或数据的类型以及数据的大小相关的信息等。并且,程序与中间表示中包括的数据之间的对应关系可以包括数据中包括的指针相关信息。并且,为了针对更改输入/输出数据大小的原地运算执行逆运算,可以包括输入/输出数据的先前大小相关信息。
根据一实施例,数据库管理部340可以通过将原地运算的输入数据的指针更改为指向与原地运算的输出数据对应的中间表示的运算的输出数据来更新数据库。例如,当原地运算具有诸如“A=A+B”的形式时,根据原地运算的执行结果,数据库管理部340可以通过将指向中间表示的运算的输入数据“A”的指针更改为指向中间表示的运算的输出数据“A2”来更新数据库。
根据一实施例,当提取到的原地运算包括第一原地运算和其后的第二原地运算时,数据库管理部340可以通过将第一原地运算的输入数据的指针更改为指向与第二原地运算的输出数据对应的中间表示的运算的输出数据来更新数据库。例如,当提取到的原地运算包括第一原地运算(例如,“C=A.add_(B)”)和其后的第二原地运算(例如,“D=C.add_(B)”)时,数据库管理部340可以根据第二原地运算的执行结果,通过将第一原地运算的输入数据“A”的指针更改为指向中间表示的运算的输出数据“D”来更新数据库。
根据一实施例,当原地运算的输入数据的第一大小与原地运算的输出数据的第二大小不同时,数据库管理部340可以通过将原地运算的输入数据的指针更改为指向与原地运算的输出数据对应的中间表示的运算的输出数据来更新数据库。在这种情况下,数据库管理部340可以通过将原地运算的输入数据与能够恢复到第一大小的运算(即,逆运算)相关信息关联起来并进行存储。例如,当输入数据“A”的第一大小(例如,2x3)与输出数据“D”的第二大小(例如,3x2)不同时,数据库管理部340可以根据第二原地运算执行结果,通过将第一原地运算的输入数据“A”的指针更改为指向中间表示的运算的输出数据“D”来更新数据库。在这种情况下,数据库管理部340可以将原地运算的输入数据“A”与能够恢复到第一大小(例如,2x3)的运算相关信息关联起来并将其存储在数据库中。
根据一实施例,当作为原地运算的输入数据的第一大小与原地运算的输出数据的第二大小不同的原地运算的后续运算,存在利用原地运算的输入数据的第一大小的运算时,数据库管理部340通过使原地运算的输入数据和输出数据的各自的指针指向与后续原地运算的输出数据对应的中间表示的运算的输出数据来将原地运算的输出数据的第二大小更改为所述第一大小,从而可以更新数据库。在这种情况下,数据库管理部340可以通过将原地运算的输出数据与能够恢复到第二大小的信息关联起来并进行存储。例如,当作为输入数据“A”的第一大小(例如,2x3)与输出数据“D”的第二大小(例如,3x2)不同的原地运算(例如,“D=A.view(3,2)”)的后续运算,存在利用原地运算的输入数据的第一大小的运算(例如,输入数据“B”为第一大小(2x3),“F=A.add_(B)”)时,可以通过将原地运算的输入数据“A”和原地运算的输出数据“D”的各自的指针更改为指向与后续原地运算的输出数据“F”对应的中间表示的运算的输出数据来更新数据库。在这种情况下,数据库管理部340可以将原地运算的输出数据与能够恢复到第二大小的信息(例如,view(2,3))关联起来并进行存储。
图3中所示的处理器220的内部配置仅是示例,并且在一些实施例中,可以另外包括除了示出的内部配置之外的其他配置,也可以省略一些配置,并且可以通过其他配置或外部系统来执行一些过程。并且,图3中按功能分开描述了处理器220的内部配置,但这并不一定意味着内部配置在物理上是分开的。
图4是示出根据本公开一实施例的生成中间表示的方法400的示例的流程图。方法400的每个步骤可以由至少一个处理器执行。根据一实施例,方法400可以由处理器从程序中提取用于输入/输出的数据相关信息和运算相关信息来开始(步骤S410)。根据一实施例,程序可以包括深度学习程序,并且程序的数据可以包括张量类型的数据。
之后,处理器可以从提取到的数据相关信息和提取到的运算相关信息判断是否存在原地运算(步骤S420)。其中,原地运算可以表示分配给输入数据的、存储在存储器中的值经运算之后,被输出数据的值代替的运算。例如,在作为深度学习框架的PyTorch的情况下,原地运算可以包括不更改张量的形状(或大小)的原地运算(例如,add_、mul_等)、更改张量的形状(或大小)的原地运算(例如,view等),但不限于此。
当存在原地运算时,处理器可以利用提取到的数据相关信息、提取到的运算相关信息和与原地运算相关联的生成规则来生成中间表示(步骤S430)。另外,处理器可以将提取到的用于输入/输出的数据、中间表示中包括的数据之间的对应关系存储在数据库中。
根据一实施例,处理器可以通过生成与原地运算的输出数据对应的中间表示的运算的输出数据来生成中间表示。在这种情况下,中间表示的运算的输出数据的数据名可以与原地运算的输入数据的数据名不同。另外,处理器可以通过将原地运算的输入数据的指针更改为指向与原地运算的输出数据对应的中间表示的运算的输出数据来更新数据库。
根据一实施例,当原地运算包括第一原地运算和继第一原地运算之后的第二原地运算时,处理器可以通过生成与第一原地运算的输出数据和与第二原地运算的输出数据对应的中间表示的运算的输出数据来生成中间表示。在这种情况下,第一原地运算的输入数据的数据名、第一原地运算的输出数据的数据名和第二原地运算的输出数据的数据名可以互不相同。另外,处理器可以通过将第一原地运算的输入数据的指针更改为指向与第二原地运算的输出数据对应的中间表示的运算的输出数据来更新数据库。
根据一实施例,当原地运算的输入数据的第一大小与原地运算的输出数据的第二大小不同时,处理器可以将原地运算的输入数据的指针更改为指向中间表示的运算的输出数据来更新数据库。在这种情况下,处理器可以通过将原地运算的输入数据与能够恢复到第一大小的运算相关信息关联起来并将其存储在数据库中。
根据一实施例,当作为原地运算的输入数据的第一大小与原地运算的输出数据的第二大小不同的原地运算的后续运算,存在利用原地运算的输入数据的第一大小的运算时,处理器可以利用能够将原地运算的输入数据的第二大小恢复到第一大小的运算来生成中间表示。另外,当原地运算的后续运算为后续原地运算时,处理器可以通过使原地运算的输入数据和原地运算的输出数据的各自的指针指向与后续原地运算的输出数据对应的中间表示的运算的输出数据来将原地运算的输出数据的第二大小更改为第一大小。在这种情况下,可以通过将原地运算的输出数据与能够恢复到第二大小的信息关联起来并进行存储。
图4所示的流程图和以上描述仅是示例性的,并且在一些实施例中可以不同地实现。例如,一个以上的步骤可以被省略或由其他配置来实施,每个步骤的顺序可以改变,或者一个以上的步骤可以同时或重叠执行,或者一个以上的步骤可以重复执行多次。
图5是示出根据本公开一实施例生成的中间表示510和存储有数据的数据库530的示例的图。根据一实施例,处理器可以从程序中提取用于输入/输出的数据相关信息和运算相关信息,并利用提取到的数据相关信息、提取到的运算相关信息、与原地运算相关联的生成规则来生成中间表示510。例如,如图所示,当程序中存在一般运算“C=A+B”时,处理器可以基于程序的输入数据“A”、“B”和输出数据“C”来生成包括输入数据节点“A”512、输入数据节点“B”514、输出数据节点“C”520和运算符节点“+”518的中间表示510。并且,中间表示510可以利用边(例如,输入数据“A”与运算符节点“+”之间的边516)来表达输入/输出数据节点512、514、520与运算符518之间的关系。
根据一实施例,处理器可以将提取到的用于输入/输出的数据、中间表示中包括的数据之间的对应关系存储在数据库530中。其中,中间表示中包括的数据之间的对应关系可以表示程序的数据与中间表示中包括的数据节点之间的对应关系(例如,数据“A”的对应关系454)。并且,程序的输入数据与中间表示中包括的输入数据节点之间的对应关系相关信息454可以存储在数据库中。
图6是示出根据本公开一实施例的针对程序600生成的中间表示的示例的图。程序中包括的运算中的部分运算可以包括原地运算。当在中间表示图表中表达原地运算时,会出现循环结构。当出现循环结构时,算法会变得复杂,存在难以适用优化的问题。图6示出针对包括有原地运算602的程序600生成的中间表示出现循环结构的第一状态610以及由于与原地运算相关联的生成规则而移除循环结构的第二状态620的示例。
当程序600中包括诸如“A=A*D”的原地运算602时,第一状态610表示出现循环结构612的中间表示的示例。即,数据节点“A”614和数据节点“D”作为输入数据输入到运算符中,然后输入到数据节点“A”614中,从而在数据节点“A”614与运算符之间出现循环结构。
第二状态620表示根据与原地运算相关联的生成规则生成的中间表示的示例。例如,处理器可以通过生成与原地运算的输出数据对应的中间表示的运算的输出数据624来生成针对原地运算的中间表示622。即,如图所示,处理器可以生成与程序600中包括的原地运算602的输出数据“A”对应的中间表示的运算的输出数据“A2”624。在这种情况下,可以以使中间表示中的输出数据的数据名(例如,“A2”)和程序600中的原地运算的输入数据的数据名(例如,“A”)不同的方式生成。通过这样的方式,输入数据“A”的数据值输入到中间表示的运算的输入数据节点“A”中,并且输出数据“A”的数据值输入到中间表示的运算的输出数据节点“A2”624中,从而不出现循环结构,因此可以防止运算顺序的混乱。
图7是示出根据本公开一实施例的针对程序700生成中间表示,并且将程序700与中间表示的对应关系存储在数据库中的过程的示例的图。根据一实施例,信息处理系统可以利用从包括有原地运算的程序700中提取到的数据和与原地运算相关联的生成规则来生成中间表示,并将提取到的数据、中间表示之间的对应关系存储在数据库中。
作为具体示例,经过第一状态710、第二状态720、第三状态730可生成针对程序700的中间表示。第一状态710表示基于程序700中包括的用于生成数据的运算702、704来生成程序700的中间表示,并且将程序700与中间表示的对应关系存储在数据库中的状态的示例。例如,如图所示,信息处理系统可以提取从程序700的第一运算702(例如,“A=torch.Tensor”)和第二运算704(例如,“B=torch.Tensor”)新生成的张量A和张量B相关信息。之后,如图所示,将与张量A和张量B对应的数据节点(例如,“A”和“B”)添加到中间表示,并且将程序700的张量A和张量B相关信息712、714以及有关张量A和张量B分别对应于中间表示的数据节点A和数据节点B的信息716、718存储在数据库中。
第二状态720表示基于程序700中包括的作为第一原地运算的第三运算706生成程序700的中间表示,并且程序700与中间表示的对应关系更新到数据库中的状态的示例。例如,如图所示,信息处理系统可以通过生成与从程序700中提取的作为第一原地运算的第三运算706(例如,“C=A.add_(B)”)的输出数据(例如,张量C)对应的,中间表示的运算的输出数据(例如,数据节点C 728)来生成中间表示。之后,信息处理系统可以将作为第一原地运算的第三运算706的输入数据(例如,张量A)的指针更改为指向与第一原地运算的输出数据(例如,张量C)对应的中间表示的运算的输出数据(例如,数据节点C728)。即,信息处理系统可以用有关程序700的张量A与中间表示的数据节点C对应的信息726来更新数据库中存储的对应关系。第二状态720被示为省略了有关张量B和张量C分别对应于中间表示的数据节点B和数据节点C的信息,但这只是为了方便说明,并且数据库中的每个张量相关信息可以包括有关对应于中间表示的特定数据节点的信息。
第三状态730表示基于程序700中包括的作为第二原地运算的第四运算708来生成程序700的中间表示,并且程序700与中间表示的对应关系更新到数据库中的状态的示例。例如,如图所示,信息处理系统可以通过生成中间表示的运算的输出数据(例如,数据节点D734)来生成中间表示,其中,所述中间表示的运算的输出数据与从程序700中提取到的作为第二原地运算的第四运算708(例如,“D=C.add_(B)”)的输出数据(例如,张量D)对应。之后,信息处理系统可以将作为第一原地运算的第三运算706的输入数据(例如,张量A)的指针更改为指向与第二原地运算的输出数据(例如,张量D)对应的中间表示的运算的输出数据(例如,数据节点D)。并且,信息处理系统可以将作为第二原地运算的第四运算708的输入数据(例如,张量C)的指针更改为指向与第二原地运算的输出数据(例如,张量D)对应的中间表示的运算的输出数据(例如,数据节点D)。即,信息处理系统可以用有关程序700的张量A和张量C对应于中间表示的数据节点D的信息732、734来更新数据库中存储的对应关系。第三状态730被示为省略了有关张量B和张量D分别对应于中间表示的数据节点B和数据节点D的信息,但这只是为了方便说明,并且数据库中的每个张量相关信息可以包括有关对应于中间表示的特定数据节点的信息。
图8是示出根据本公开一实施例的针对包括更改数据大小的原地运算的程序800的中间表示,并且将程序800与中间表示的对应关系存储在数据库中的状态的示例的图。根据一实施例,当程序800的原地运算的输入数据的大小与输出数据的大小不同时,信息处理系统可以通过将原地运算的输入数据的指针更改为指向与原地运算的输出数据对应的中间表示的运算的输出数据来更新数据库。
第一状态810表示基于程序800中包括的用于更改数据大小的原地运算802来生成程序800的中间表示,并且以使原地运算的输入数据的指针指向与原地运算的输出数据对应的中间表示的运算的输出数据的方式更新到数据库中的状态的示例。例如,如图所示,信息处理系统可以通过提取用于将程序800的张量A的第一大小(例如,2x3)更改为第二大小(例如,3x2)的原地运算802(例如,“D=A.view(3,2)”)来生成中间表示,并且通过将原地运算的输入数据的指针更改为指向与原地运算的输出数据对应的中间表示的运算的输出数据(例如,数据节点D(3,2))来更新数据库。即,信息处理系统可以用有关程序800的张量A对应于中间表示的数据节点D(3,2)的信息812来更新数据库中存储的对应关系。并且,信息处理系统可以将原地运算的输入数据(例如,张量A)与能够恢复到第一大小的运算相关信息814(例如,“A view(2,3)”)关联起来并进行存储。
图8中,数据库和中间表示中被示为省略了张量B和张量F,但这是为了方便说明。并且,图8中,被示为省略了有关张量C、张量D和张量E分别对应于中间表示的数据节点C、数据节点D和数据节点E的信息,但这只是为了方便说明,数据库中的每个张量相关信息可以包括有关对应于中间表示的特定数据节点的信息。
图9是示出根据本公开一实施例的生成针对包括更改两个以上数据大小的原地运算的程序800的中间表示,并且将程序800与中间表示的对应关系存储在数据库中的状态的示例的图。根据一实施例,当作为程序800的原地运算的后续运算,存在利用原地运算的输入数据的第一大小的运算时,信息处理系统可以利用将原地运算的输入数据的第二大小能够恢复到第一大小的运算来生成中间表示。并且,当原地运算的后续运算为后续原地运算时,信息处理系统可以通过使原地运算的输入数据和原地运算的输出数据的各自的指针指向与后续原地运算的输出数据对应的中间表示的运算的输出数据来将原地运算的输出数据的第二大小更改为第一大小。
作为具体示例,针对包括经过第一状态910和第二状态920更改数据大小的原地运算的程序800生成中间表示,并且可以更新程序800与中间表示的对应关系。第一状态910表示当作为用于更改输入数据大小的第三原地运算802的后续运算,存在利用输入数据的原始大小的第四原地运算804时,信息处理系统利用逆运算来生成中间表示的状态的示例。例如,如图所示,当作为用于将程序800的张量A的第一大小(例如,2x3)更改为第二大小(例如,3x2)的第三原地运算802(例如,“D=A.view(3,2)”)的后续运算,存在利用张量A的第一大小(例如,2x3)的第四原地运算804(例如,“F=A.add_(B)”)时,信息处理系统可以利用能够将张量A的第二大小恢复到第一大小的运算914(例如,“D2=D.view(2,3)”)来生成中间表示。第一状态910被示为数据库和中间表示中省略了张量C和张量E,但这是为了方便说明。并且,第一状态910被示为省略了有关张量B、张量D和张量F分别对应于中间表示的数据节点B、数据节点D和数据节点F的信息,但这只是为了方便说明,并且数据库中的每个张量相关信息可以包括有关对应于中间表示的特定数据节点的信息。
第二状态920表示当执行第四原地运算804时,信息处理系统更新第三原地运算802的输入/输出数据与中间表示的对应关系的状态的示例。例如,当执行第四原地运算804时,信息处理系统可以通过使第三原地运算802的输入数据(例如,张量A)和输出数据(例如,张量D)各自的指针指向与第四原地运算804的输出数据对应的中间表示的运算的输出数据928(例如,数据节点F(2,3))来将第三原地运算802的输出数据(例如,数据节点D(3,2))的第二大小更改为第一大小,从而更新数据库。即,信息处理系统可以用有关程序800的张量A和张量D对应于中间表示的数据节点F(2,3)的信息(924、926)来更新存储在数据库中的对应关系。并且,当执行第四原地运算804时,信息处理系统可以将第三原地运算的输出数据(例如,张量D)与能够恢复到第二大小的运算相关信息922(例如,“D view(3,2)”)关联起来并进行存储。由此,当存在利用第二大小的第五原地运算时,可以将能够恢复到第二大小的运算相关信息利用在第五原地运算中。第二状态920被示为数据库和中间表示中省略了张量C和张量E,但这是为了方便说明。并且,第二状态920被示为省略了有关张量B和张量F分别对应于中间表示的数据节点B和数据节点F的信息,但这只是为了方便说明,并且数据库中的每个张量相关信息可以包括有关对应于中间表示的特定数据节点的信息。
上述方法为了在计算机上执行而可以被提供为存储在计算机可读记录介质中。介质可以连续地存储计算机可执行程序,或者也可以临时存储以供执行或下载。并且,介质可以是单个或多个硬件组合形式的多种记录装置或存储装置,不限于直接连接到某个计算机系统的介质,也可以是分布在网络上的。介质的示例包括磁介质(例如,硬盘、软盘和磁带)、光记录介质(例如,CD-ROM和DVD)、磁光介质(magneto-optical medium)(例如,软式光盘(floptical disk))以及被配置为存储程序指令的ROM、RAM、闪存等。并且,其他介质的示例可以包括分发应用程序的应用程序商店或者提供或分发各种其他软件的站点或服务器管理的记录介质或存储介质。
本公开的方法、动作或技术也可以通过各种手段来实现。例如,这些技术可以以硬件、固件、软件或它们的组合来实现。本领域技术人员将理解,结合本文的公开描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种互换,上文已大体上根据其功能描述了各种示例性组件、块、模块、电路和步骤。此类功能是否实现为硬件或软件取决于特定应用和赋予整个系统的设计要求。普通技术人员可以针对每个特定应用以不同的方式实现所描述的功能,但是这样的实现不应被解释为背离本公开的范围。
在硬件实现中,用于执行技术的处理单元可以在一个以上的ASIC、DSP、数字信号处理器件(digital signal processing devices,DSPD)、可编程逻辑器件(programmablelogic devices,PLD)、现场可编程门阵列(field programmable gate arrays,FPGA)、处理器、控制器、微控制器、微处理器、电子设备、被设计为执行本公开中描述的功能的其他电子单元、计算机或它们组合内实现。
因此,结合本公开描述的各种示例性逻辑块、模块和电路可以以被设计为执行通用处理器、DSP、ASIC、FPGA或其他可编程逻辑器件、离散门或晶体管逻辑、离散硬件组件或被设计成执行本文描述的功能的任意组合来实现或执行。通用处理器也可以是微处理器,可替代地,处理器也可以是任意常规处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如DSP和微处理器、多个微处理器、与DSP核结合的一个以上的微处理器、或任意其他配置的组合。
在固件和/或软件实现中,技术还可以被实现为存储在计算机可读介质上的,例如,随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、非易失性随机存取存储器(non-volatile random access memory,NVRAM)、可编程只读存储器(programmable read-only memory,PROM)、可擦除可编程只读存储器(erasableprogrammable read-only memory,EPROM),可编程只读存储器(electrically erasablePROM,EEPROM)、闪存、光盘(compact disc,CD)、磁性或光学数据存储设备等上的指令。指令还可以由一个以上的处理器执行,并且可以使处理器执行本公开中所描述的功能的特定方面。
尽管上述实施例被描述为在一个以上的独立计算机系统中利用当前公开的主题的各方面,但本公开不限于此,可以结合任意计算环境来实现,例如网络或分布式计算环境。此外,本公开的主题的各方面可以在多个处理芯片或装置中实现,存储器(storage)还可以跨多个装置类似地受到影响。这些装置还可以包括PC、网络服务器和便携式装置。
在本说明书中,虽然与一部分实施例相关联地说明了本公开,但可以在不超出本公开所属技术领域的普通技术人员可理解的本公开范围的范围内实现多样的变形及变更。并且,这样的变形及变更应视为属于本说明书所附的权利要求书范围内。
Claims (11)
1.一种生成中间表示的方法,其为针对包括原地运算的程序生成中间表示的方法,所述方法由至少一个处理器执行,其中,
所述方法包括:
从所述程序中提取用于输入/输出的数据相关信息和运算相关信息的步骤;
从提取到的所述数据相关信息和提取到的所述运算相关信息判断是否存在原地运算的步骤;以及
当存在所述原地运算时,利用提取到的所述数据相关信息、提取到的所述运算相关信息和与所述原地运算相关联的生成规则来生成中间表示的步骤,
所述原地的输入数据是被经原地运算而生成的输出数据代替的数据。
2.根据权利要求1所述的生成中间表示的方法,其中,
所述生成中间表示的方法还包括:
将提取到的所述用于输入/输出的数据、所述中间表示中包括的数据之间的对应关系存储在数据库中的步骤。
3.根据权利要求2所述的生成中间表示的方法,其中,
所述生成中间表示的步骤包括:
通过生成所述中间表示的运算的输出数据来生成所述中间表示的步骤,其中,所述中间表示的运算的输出数据与所述原地运算的输出数据对应,
所述中间表示的运算的输出数据的数据名与所述原地运算的输入数据的数据名不同。
4.根据权利要求3所述的生成中间表示的方法,其中,
所述存储在数据库中的步骤包括:
通过将所述原地运算的输入数据的指针更改为指向与所述原地运算的输出数据对应的所述中间表示的运算的输出数据来更新所述数据库中的步骤。
5.根据权利要求2所述的生成中间表示的方法,其中,
所述原地运算包括第一原地运算和继第一原地运算之后的第二原地运算,
所述生成中间表示的步骤包括:
通过生成所述中间表示的运算的输出数据来生成所述中间表示的步骤,其中,所述中间表示的运算的输出数据与所述第一原地运算的输出数据和所述与第二原地运算的输出数据对应,
所述第一原地运算的输入数据的数据名、所述第一原地运算的输出数据的数据名和所述第二原地运算的输出数据的数据名互不相同。
6.根据权利要求5所述的生成中间表示的方法,其中,
所述存储在数据库中的步骤包括:
通过将所述第一原地运算的输入数据的指针更改为指向所述与第二原地运算的输出数据对应的所述中间表示的运算的输出数据来更新所述数据库中的步骤。
7.根据权利要求2所述的生成中间表示的方法,其中,
存储在所述数据库中的步骤包括:
当所述原地运算的输入数据的第一大小与所述原地运算的输出数据的第二大小不同时,通过将所述原地运算的输入数据的指针更改为指向与所述原地运算的输出数据对应的所述中间表示的运算的输出数据来更新所述数据库的步骤;以及
将所述原地运算的输入数据与能够恢复到所述第一大小的运算相关信息关联起来并进行存储的步骤。
8.根据权利要求7所述的生成中间表示的方法,其中,
生成所述中间表示的步骤包括:
当作为所述原地运算的后续运算,存在利用所述原地运算的输入数据的第一大小的运算时,利用能够将所述原地运算的输入数据的第二大小恢复到所述第一大小的运算来生成所述中间表示的步骤。
9.根据权利要求8所述的生成中间表示的方法,其中,
存储在所述数据库中的步骤包括:
当所述原地运算的后续运算为后续原地运算时,通过使所述原地运算的输入数据和所述原地运算的输出数据的各自的指针指向与所述后续原地运算的输出数据对应的所述中间表示的运算的输出数据来将所述原地运算的输出数据的第二大小更改为所述第一大小的步骤;以及
将所述原地运算的输出数据与能够恢复到所述第二大小的信息关联起来并进行存储的步骤。
10.一种计算机可读非暂时性记录介质,其中,记录有用于在计算机执行根据权利要求1所述的针对包括原地运算的程序生成中间表示的方法的指令。
11.一种信息处理系统,其中,
所述信息处理系统包括:
存储器;以及
至少一个处理器,与所述存储器连接,并且被配置为执行所述存储器中包括的计算机可读的至少一个程序,
所述至少一个程序包括用于执行如下操作的指令:
从所述程序中提取用于输入/输出的数据相关信息和运算相关信息;
从提取到的所述数据相关信息和提取到的所述运算相关信息判断是否存在原地运算;以及
当存在所述原地运算时,利用提取到的所述数据相关信息、提取到的所述运算相关信息和与所述原地运算相关联的生成规则来生成中间表示,
所述原地的输入数据是被经原地运算而生成的输出数据代替的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0077963 | 2021-06-16 | ||
KR20210077963 | 2021-06-16 | ||
PCT/KR2022/008505 WO2022265410A1 (ko) | 2021-06-16 | 2022-06-15 | 중간표현을 생성하는 방법 및 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117581237A true CN117581237A (zh) | 2024-02-20 |
Family
ID=84233425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280043438.0A Pending CN117581237A (zh) | 2021-06-16 | 2022-06-15 | 生成中间表示的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20240126790A1 (zh) |
EP (1) | EP4357982A1 (zh) |
JP (1) | JP2024523400A (zh) |
KR (2) | KR102467622B1 (zh) |
CN (1) | CN117581237A (zh) |
WO (1) | WO2022265410A1 (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2411990B (en) * | 2003-05-02 | 2005-11-09 | Transitive Ltd | Improved architecture for generating intermediate representations for program code conversion |
WO2021052391A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种构建中间表达的方法、编译器和服务器 |
-
2022
- 2022-06-15 WO PCT/KR2022/008505 patent/WO2022265410A1/ko active Application Filing
- 2022-06-15 JP JP2023577900A patent/JP2024523400A/ja active Pending
- 2022-06-15 EP EP22825333.2A patent/EP4357982A1/en active Pending
- 2022-06-15 CN CN202280043438.0A patent/CN117581237A/zh active Pending
- 2022-06-15 KR KR1020220072637A patent/KR102467622B1/ko active IP Right Grant
- 2022-11-08 KR KR1020220147513A patent/KR20220168583A/ko active IP Right Grant
-
2023
- 2023-12-12 US US18/537,683 patent/US20240126790A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240126790A1 (en) | 2024-04-18 |
JP2024523400A (ja) | 2024-06-28 |
KR20220168583A (ko) | 2022-12-23 |
WO2022265410A1 (ko) | 2022-12-22 |
EP4357982A1 (en) | 2024-04-24 |
KR102467622B1 (ko) | 2022-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210255847A1 (en) | Model-based differencing to selectively generate and deploy images in a target computing environment | |
US10412195B2 (en) | Risk-aware service management stack transformation during workload migration | |
US11226889B2 (en) | Regression prediction in software development | |
US12118339B2 (en) | Image file obtaining method and apparatus | |
US11399071B2 (en) | Program operation system and program operation method | |
US11593511B2 (en) | Dynamically identifying and redacting data from diagnostic operations via runtime monitoring of data sources | |
CN111880803B (zh) | 一种应用于多平台的软件构建方法及装置 | |
CN117581237A (zh) | 生成中间表示的方法和系统 | |
CN109582347B (zh) | 一种获取前端代码的方法及装置 | |
CN111861100A (zh) | 一种基于流程评分的工单处理方法及装置 | |
US10025838B2 (en) | Extract transform load input suggestion | |
van Dijk et al. | Multi-core symbolic bisimulation minimisation | |
CN116361153A (zh) | 固件代码的测试方法、装置、电子设备、存储介质 | |
CN112948480B (zh) | 数据抽取方法、装置、电子设备及存储介质 | |
US11550571B2 (en) | Generation of equivalent microservices to replace existing object-oriented application | |
CN115599401A (zh) | 自定义模型的发布方法、装置、设备及介质 | |
KR102457153B1 (ko) | 프로그램에 대한 중간 표현을 관리하는 방법 및 시스템 | |
US8046750B2 (en) | Disco: a simplified distributed computing library | |
US20240118878A1 (en) | Method and system for determining optimization applicability on intermediate representation from program | |
US10311392B2 (en) | Just in time compilation (JIT) for business process execution | |
EP4109290B1 (en) | A method and apparatus for validation of modifications in a database | |
KR102732109B1 (ko) | 가속기에서 실행되는 프로그램에 대한 중간표현을 생성하는 방법 및 시스템 | |
US20240152371A1 (en) | Dynamic re-execution of parts of a containerized application pipeline | |
CN116431194A (zh) | 持续集成任务的构建方法、装置、设备以及存储介质 | |
US20210109802A1 (en) | Dynamically Analyzing Diagnostic Operations Data Via Machine Learning Techniques |
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 |