CN112596789A - 信息处理方法和非暂态计算机可读存储介质 - Google Patents
信息处理方法和非暂态计算机可读存储介质 Download PDFInfo
- Publication number
- CN112596789A CN112596789A CN202010954073.XA CN202010954073A CN112596789A CN 112596789 A CN112596789 A CN 112596789A CN 202010954073 A CN202010954073 A CN 202010954073A CN 112596789 A CN112596789 A CN 112596789A
- Authority
- CN
- China
- Prior art keywords
- program
- combination
- program codes
- executions
- assignment
- 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
- 230000010365 information processing Effects 0.000 title claims abstract description 40
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims description 50
- 230000006870 function Effects 0.000 claims description 24
- 238000004458 analytical method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000000605 extraction Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012854 evaluation process Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000035772 mutation Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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
- G06F8/4441—Reducing the execution time required by the program code
-
- 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/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及信息处理方法和非暂态计算机可读存储介质。一种由计算机执行的信息处理方法,该信息处理方法包括:执行目标程序以获取多个程序代码中的每一个的执行次数;基于所获取的执行次数,从具有较高执行次数的与赋值语句相关的程序代码中选择与多个赋值语句相关的程序代码的组合;当对目标程序进行改变以使得针对包括在所选择的组合中的与所述多个赋值语句相关的程序代码中的每一个执行使用SIMD操作功能的并行处理时,执行经改变的目标程序以计算执行精确度和操作时间;以及搜索组合,以使得所计算的执行精确度和操作时间满足预定条件。
Description
技术领域
本文中论述的实施方式涉及信息处理方法和其中存储有优化程序的计算机可读记录介质。
背景技术
在相关技术中,使用单指令多数据(SIMD)操作功能的并行处理被称为用于优化程序的一种优化技术。根据优化技术,可以通过降低程序的执行精确度来减少操作时间。
相关技术的示例包括日本公开特许公报第2016-40691号。
发明内容
[技术问题]
然而,在以上描述的优化技术的情况下,除非适当地选择要降低其执行精确度的目标,否则可能无法在操作时间的减少方面获得足够的效果。
实施方式的一个方面的目的在于:在使用SIMD操作功能的并行处理中适当地选择要降低其执行精确度的目标。
[问题的解决方案]
根据实施方式的一方面,一种由计算机执行的信息处理方法,该信息处理方法包括:执行目标程序以获取多个程序代码中的每一个的执行次数;基于所获取的执行次数,从具有较高执行次数的与赋值语句相关的程序代码中选择与多个赋值语句相关的程序代码的组合;当对目标程序进行改变以使得针对包括在所选择的组合中的与所述多个赋值语句相关的程序代码中的每一个执行使用SIMD操作功能的并行处理时,执行经改变的目标程序以计算执行精确度和操作时间;以及搜索组合,以使得所计算的执行精确度和操作时间满足预定条件。
附图说明
图1是示出信息处理设备的硬件配置的示例的图;
图2是用于说明使用SIMD操作功能的并行处理的概要的图;
图3是示出程序优化处理的流程的流程图;
图4是示出编译处理的流程的流程图;
图5是示出概况(profile)信息分析处理的流程的流程图;
图6是示出概况信息的示例的图;
图7是示出候选提取的示例的图;
图8是示出评估处理的流程的流程图;
图9是示出组合搜索处理的流程的流程图;以及
图10是示出基于交叉和变异的选择/未选择确定处理的具体示例的图。
[本发明的有益效果]
一方面,可以在使用SIMD操作功能的并行处理中适当地选择要降低其执行精确度的目标。
具体实施方式
在下文中,将参照附图描述实施方式。在本说明书和附图中,向具有基本上相同功能配置的部件给出了相同的附图标记,并且省略了重复的描述。
[第一实施方式]
<信息处理设备的硬件配置>
首先,将描述通过执行优化程序来优化目标程序的信息处理设备的硬件配置。在第一实施方式中,术语“优化”指的是通过在目标程序中适当地选择要降低其执行精确度的程序代码来实现使用SIMD操作功能的并行处理中的操作时间的减少。
图1是示出信息处理设备的硬件配置的示例的图。如图1所示,信息处理设备100包括中央处理单元(CPU)110、只读存储器(ROM)120以及随机存取存储器(RAM)130。CPU 110、ROM 120和RAM 130形成所谓的计算机。
信息处理设备100包括接口(I/F)装置140、辅助存储装置150、操作装置160和显示装置170。信息处理设备100的每个硬件经由总线180彼此耦接。
CPU 110是执行安装在辅助存储装置150中的各种程序(例如,优化程序、原始程序(要优化的目标程序)和调优程序(经优化的程序))的操作装置。CPU 110具有SIMD操作功能,并且通过并行处理执行包括在调优程序中的程序代码(在原始程序中适当地选择并且经转换的程序代码)的一部分。
ROM 120是非易失性存储器,并且是存储如下程序的主存储装置:所述程序对于CPU 110执行存储在辅助存储装置150中的各种程序而言是期望的。
RAM 130是易失性存储器,并且是提供工作区域的主存储装置,其中,当CPU 110执行安装在辅助存储装置150中的各种程序时,在该工作区域中加载所述各种程序。
I/F装置140是用于耦接至网络(未示出)的通信装置。
辅助存储装置150是存储各种程序、当CPU 110执行各种程序时使用的信息、通过执行生成的信息等的辅助存储装置。如图1所示,在根据第一实施方式的信息处理设备100的情况下,优化程序151、程序分析转换代码152、原始程序153和调优程序154存储在辅助存储装置150中。
优化程序151由CPU 110执行,以通过使用程序分析转换代码152来转换要优化的目标程序(原始程序153)的程序代码的一部分,从而生成调优程序154。
操作装置160是由信息处理设备100的用户使用的用于当由CPU 110执行优化程序151时向信息处理设备100输入各种指令的输入装置。显示装置170是用于向用户显示当由CPU 110执行优化程序151时信息处理设备100的内部状态的输出装置。
<使用SIMD操作功能的并行处理的概要>
接下来,将描述使用CPU 110的SIMD操作功能的并行处理的概要。图2是用于说明使用SIMD操作功能的并行处理的概要的图。如图2所示,当信息处理设备100的CPU 110具有128位的SIMD操作功能时,在双精度(D)运算中,以每个处理64位的两个并行处理来执行要运算的数据(参考附图标记210)。另一方面,在单精度(S)运算中,以每个处理32位的四个并行处理来执行要运算的数据(参考附图标记220)。
如以上所描述的,在SIMD操作功能中,要运算的数据的位数减少(执行精确度降低(例如,从64位降低至32位)),并且并行处理的数量增加(例如,从两个并行处理增加至四个并行处理),从而增加了由一条指令执行的处理的数量,并且减少了操作时间。
<程序优化处理的流程>
接下来,将描述用于优化目标程序(原始程序153)的程序优化处理的流程。图3是示出程序优化处理的流程的流程图。CPU 110执行优化程序151以执行包括在图3所示的程序优化处理中的每个处理。
在步骤S301中,CPU 110执行优化程序151以执行编译处理。例如,CPU 110执行优化程序151以从辅助存储装置150读取要优化的目标程序(原始程序153),并且对所读取的原始程序153执行编译处理(详细情况将在后面描述)。因此,生成可执行二进制代码310。
在步骤S302中,CPU 110执行优化程序151以执行可执行二进制代码310。例如,CPU110执行优化程序151以执行接收来自用户的执行开始指令的处理,并且当接收到执行开始指令时,CPU 110执行可执行二进制代码310,从而生成概况信息。
在步骤S303中,CPU 110执行优化程序151以执行概况信息分析处理。例如,CPU110执行优化程序151以获取在步骤S302中生成的概况信息,从而分析所获取的概况信息。概况信息包括原始程序153的每个程序代码的执行次数,并且CPU 110分析概况信息以提取具有较高执行次数的与赋值语句相关的程序代码320。
在第一实施方式中,具有较高执行次数的与赋值语句相关的程序代码320是要经历使用SIMD操作功能的通过单精度运算的并行处理的“候选”。在第一实施方式中,通过从候选中选择适当的组合来减少操作时间。
在步骤S304中,CPU 110执行优化程序151以从候选中选择与多个随机赋值语句相关的程序代码的组合。
在步骤S305中,CPU 110执行优化程序151以指定原始程序153中包括的程序代码中的所选择的组合中包括的与赋值语句相关的程序代码。CPU 110执行优化程序151以转换所指定的程序代码并且生成调优程序154。因此,所生成的调优程序154中的经转换的程序代码经历使用SIMD操作功能的通过单精度运算的并行处理。程序分析转换代码152用于转换。
例如,对于原始程序153中指定的与赋值语句相关的程序代码,例如,通过使用程序分析转换代码152,执行以下处理:将用于执行双精度运算的三角函数(sin、cos等)转换成用于执行单精度运算的三角函数的处理;将变量的定义从双精度运算转换成单精度运算的处理;以及将数值从双精度运算符号转换成单精度运算符号的处理。
关于在原始程序153中指定的与赋值语句相关的程序代码,执行定义所述程序代码是针对其执行使用SIMD操作功能的通过单精度运算的并行处理的程序代码的处理。
注意,定义所述程序代码是针对其执行使用SIMD操作功能的通过单精度运算的并行处理的程序代码的处理被人工地执行(例如,假定该程序代码由用户通过明确描述“code.c”来定义)。然而,当执行稍后描述的编译处理时,可以通过例如确定并定义针对其执行并行处理的程序代码来自动执行该处理。
在步骤S306中,CPU 110执行优化程序151以执行编译处理。例如,CPU 110执行优化程序151以对在步骤S305中生成的调优程序154执行编译处理。因此,生成可执行二进制代码330。
在步骤S307中,CPU 110执行优化程序151以执行可执行二进制代码330。例如,CPU110执行优化程序151以执行从用户接收执行开始指令的处理,并且当接收到执行开始指令时,CPU 110执行可执行二进制代码330。
在步骤S308中,CPU 110执行优化程序151以执行评估处理。例如,CPU 110执行优化程序151以计算当执行可执行二进制代码330时的执行性能(操作时间)和执行精确度(细节将在后面描述)。
在步骤S309中,CPU 110执行优化程序151以确定所计算的执行性能(操作时间)和执行精确度是否满足预定条件。当在步骤S309中确定所计算的执行性能(操作时间)和执行精确度不满足预定条件时,确定目标程序(原始程序153)未优化(在步骤S309中确定为“否”)。
在步骤S310中,CPU 110执行优化程序151以执行组合搜索处理。例如,CPU 110执行优化程序151以从候选中搜索适当的组合(执行性能(操作时间)和执行精确度满足预定条件的组合)。
当试图选择候选中包括的程序代码的所有组合时,要选择的组合的数量变得巨大。因此,在第一实施方式中,执行演化(evolutionary)计算以减少对候选中包括的程序代码中的适当组合的搜索的次数(细节将在后面描述)。
当在步骤S310中基于演化计算选择了组合时,处理返回至步骤S305。因此,在步骤S305中,指定原始程序153中包括的程序代码中的在步骤S310中选择的组合中包括的与赋值语句相关的程序代码,并且执行所指定的程序代码的转换。
重复步骤S310中的组合搜索处理,直到在步骤S309中确定所计算的执行性能(操作时间)和执行精确度满足预定条件。
另一方面,当在步骤S309中确定所计算的执行性能(操作时间)和执行精确度满足预定条件时,确定目标程序(原始程序153)已优化(在步骤S309中确定为“是”)。
在步骤S311中,CPU 110执行优化程序151以输出作为经优化的程序的调优程序154。
<程序优化处理中包括的每个处理的细节>
接下来,将描述程序优化处理(图3)中包括的每个处理(此处,编译处理(步骤S301)、概况信息分析处理(步骤S303)、评估处理(步骤S308)和组合搜索处理(步骤S310))的细节。
(1)编译处理的细节
首先,将详细描述编译处理(步骤S301)。图4是示出编译处理的流程的流程图。
在步骤S401中,CPU 110执行优化程序151以从辅助存储装置150读取原始程序153。
在步骤S402中,CPU 110执行优化程序151以对所读取的原始程序153执行语法分析。
在步骤S403中,CPU 110执行优化程序151以基于原始程序153生成目标代码(可执行二进制代码310)。
在步骤S404中,CPU 110执行优化程序151以将可执行二进制代码310存储在辅助存储装置150中,并且处理返回至图3中的步骤S302。
(2)概况信息分析处理的细节
接下来,将详细描述概况信息分析处理(步骤S303)。
(2-1)概况信息分析处理的流程
首先,将描述概况信息分析处理的流程。图5是示出概况信息分析处理的流程的流程图。
在步骤S501中,CPU 110执行优化程序151以获取概况信息。
在步骤S502中,CPU 110执行优化程序151,以针对每个控制流获取概况信息,并且获取每个程序代码的执行次数。
在步骤S503中,CPU 110执行优化程序151,以从所获取的每个程序代码的执行次数中获取与赋值语句相关的程序代码的执行次数。
在步骤S504中,CPU 110执行优化程序151,以根据执行次数对与赋值语句相关的程序代码进行排序。
在步骤S505中,CPU 110执行优化程序151,以提取具有较高执行次数的与赋值语句相关的程序代码320作为候选,并且处理返回至图3中的步骤S304。
(2-2)概况信息的具体示例
接下来,将描述在概况信息分析处理(步骤S303)中获取的概况信息的具体示例。图6是示出概况信息的示例的图。
如图6所示,在概况信息分析处理中获取的概况信息600包括每个程序代码的执行次数。图6的概况信息600指示:通过执行可执行二进制代码310,程序代码601被执行2619152次。类似地,图6的概况信息600指示:通过执行可执行二进制代码310,程序代码602被执行2598227次。
程序代码601至程序代码605是与赋值语句相关的程序代码。因此,程序代码601至程序代码605中的每一个中包括的赋值语句被执行了程序代码601至程序代码605中的每一个被执行的次数。
例如,程序代码601包括“int i=1”和“i++”作为赋值语句。如以上所描述的,由于程序代码601的执行次数为2619152,因此赋值语句“int i=1”和“i++”被执行了2619152次。
(2-3)候选提取的示例
接下来,将描述候选提取的示例。图7是示出候选提取的示例的图。如图7所示,作为与赋值语句相关的程序代码的程序代码601至程序代码605中的每一个的执行次数如下:程序代码601:2619152次;程序代码602:2598227次;程序代码603:1659425次;程序代码604:2598227次;以及程序代码605:5154604次。因此,当按执行次数的降序对程序代码进行排序时,程序代码被按605→601→602→604→603的次序排序。
在图7的示例中,提取程序代码605、程序代码601、程序代码602和程序代码604作为具有较高执行次数的与赋值语句相关的程序代码320。
(3)评估处理的细节
接下来,将详细描述评估处理(步骤S308)。图8是示出评估处理的流程的流程图。
在步骤S801中,CPU 110执行优化程序151,以计算作为执行性能的当执行可执行二进制代码330时的操作时间。
在步骤S802中,CPU 110执行优化程序151,以获取当执行可执行二进制代码330时的执行结果。CPU 110执行优化程序151以计算当执行可执行二进制代码310时的执行结果与当执行可执行二进制代码330时的执行结果之间的差(执行精确度),并且处理返回至图3中的步骤S309。
(4)组合搜索处理的细节
接下来,将详细描述组合搜索处理(步骤S310)。
(4-1)组合搜索处理的流程
首先,将描述组合搜索处理的流程。图9是示出组合搜索处理的流程的流程图。
在步骤S901中,CPU 110执行优化程序151,以基于评估处理的结果(执行性能(操作时间)和执行精确度)来指定与赋值语句相关的具有低执行性能(长操作时间)和低执行精确度的程序代码。CPU 110执行优化程序151,以从候选(具有较高执行次数的与赋值语句相关的程序代码320)中排除所指定的与赋值语句相关的程序代码。
在步骤S902中,CPU 110执行优化程序151,以在从当前候选中选择与赋值语句相关的程序代码时,基于交叉和变异来确定选择/未选择。
在步骤S903中,CPU 110执行优化程序151以新输出所选择的与赋值语句相关的程序代码的组合,并且处理返回至图3中的步骤S305。
(4-2)交叉和变异的具体示例
接下来,将描述基于交叉和变异的选择/未选择确定处理的具体示例。图10是示出基于交叉和变异的选择/未选择确定处理的具体示例的图。在图10中,各矩形表示候选中包括的与各赋值语句相关的程序代码。每个矩形中包括的数值表示是否选择了与各赋值语句相关的程序代码。例如,“0”表示未选择,并且“1”表示选择。
在图10中,为了简化说明,假设候选包括与15个赋值语句相关的程序代码。
其中,图10的(a)示出了其中基于交叉来确定候选中包括的关于15个赋值语句的程序代码的选择/未选择的状态。
附图标记1001指示从候选中选择的与七个赋值语句相关的程序代码的组合的示例。例如,在附图标记1001的情况下,从候选中选择了与第二赋值语句、第三赋值语句、第五赋值语句、第七赋值语句、第十赋值语句、第十一赋值语句和第十四赋值语句相关的程序代码的组合。
另一方面,附图标记1011指示从候选中选择的与六个赋值语句相关的程序代码的组合的示例。例如,在附图标记1011的情况下,从候选中选择了与第一赋值语句、第四赋值语句、第七赋值语句、第十二赋值语句、第十三赋值语句和第十五赋值语句相关的程序代码的组合。
在交叉(crossover)处理中,通过部分地改变通过附图标记1001指示的组合的选择/未选择并且部分地改变通过附图标记1011指示的组合的选择/未选择来选择新的组合(附图标记1002和附图标记1012)。
另一方面,图10的(b)示出了其中基于变异来确定候选中包括的关于15个赋值语句的程序代码的选择/未选择的状态。如图10的(b)所示,在变异处理中,通过针对通过附图标记1001指示的组合中的一部分将选择改变成未选择(或者将未选择改变成选择)来选择新组合(附图标记1003)。
如根据以上描述清楚的是,在信息处理设备100中,通过执行作为要优化的目标程序的原始程序来获取每个程序代码的执行次数。在信息处理设备100中,从具有较高执行次数的与赋值语句相关的程序代码中选择要经历单精度运算的与多个赋值语句相关的程序代码的组合。
在信息处理设备100中,当对原始程序进行转换以使得针对所选择的组合执行使用SIMD操作功能的并行处理时,执行所生成的调优程序并且计算执行精确度和操作时间。
另外,在信息处理设备100中,搜索组合使得所计算的执行精确度和操作时间满足预定条件。
因此,根据信息处理设备100,可以在使用SIMD操作功能的并行处理中适当地选择要降低其执行精确度的目标。
[第二实施方式]
在第一实施方式中,未描述用于提取具有较高执行次数的与赋值语句相关的程序代码320的提取方法的细节,但是可以将可选的提取方法应用于该提取方法。例如,可以提取具有前N(或前M%)个执行次数的与赋值语句相关的程序代码,或者可以提取具有等于或大于预定阈值的执行次数的与赋值语句相关的程序代码。
所公开的技术可以具有在以下附记中陈述的形式。
(附记1)
一种由计算机执行的信息处理方法,该信息处理方法包括:执行目标程序以获取每个程序代码的执行次数;
从具有较高执行次数的与赋值语句相关的程序代码中选择与多个赋值语句相关的程序代码的组合;
当对目标程序进行改变以使得针对包括在所选择的组合中的与所述多个赋值语句相关的程序代码中的每一个执行使用SIMD操作功能的并行处理时,执行经改变的目标程序以计算执行精确度和操作时间;以及
搜索组合,以使得所计算的执行精确度和操作时间满足预定条件。
(附记2)
根据附记1的信息处理方法,其中,通过对具有较高执行次数的与赋值语句相关的程序代码执行演化计算来搜索组合。
(附记3)
根据附记2的信息处理方法,其中,当从具有较高执行次数的与赋值语句相关的程序代码中选择了与多个赋值语句相关的程序代码的第一组合以及从具有较高执行次数的与赋值语句相关的程序代码中选择了与多个赋值语句相关的程序代码的第二组合时,通过将第一组合和第二组合进行交叉来新选择组合。
(附记4)
根据附记2的信息处理方法,其中,当从具有较高执行次数的与赋值语句相关的程序代码中选择了与多个赋值语句相关的程序代码的组合时,通过将组合的一部分从选择改变成未选择,或者将组合的一部分从未选择改变成选择,来新选择组合。
(附记5)
根据附记1的信息处理方法,其中,从具有较高执行次数的与赋值语句相关的程序代码中排除与赋值语句相关的如下程序代码:所述程序代码在具有较高执行次数的与赋值语句相关的程序代码中执行精确度低且操作时间长。
(附记6)
一种优化程序,用于使计算机执行处理,该处理包括:执行目标程序以获取每个程序代码的执行次数;
从具有较高执行次数的与赋值语句相关的程序代码中选择与多个赋值语句相关的程序代码的组合;
当对目标程序进行改变以使得针对包括在所选择的组合中的与所述多个赋值语句相关的程序代码中的每一个执行使用SIMD操作功能的并行处理时,执行经改变的目标程序以计算执行精确度和操作时间;以及
搜索组合,以使得所计算的执行精确度和操作时间满足预定条件。
以上描述的实施方式不限于本文中示出的配置,例如以上实施方式中描述的配置与其他元素的组合。可以在不脱离实施方式的要旨的情况下修改这些配置并且可以根据其应用模式来适当地设置这些配置。
Claims (10)
1.一种由计算机执行的信息处理方法,所述信息处理方法包括:
执行目标程序以获取多个程序代码中的每一个的执行次数;
基于所获取的执行次数,从具有较高执行次数的与赋值语句相关的程序代码中选择与多个赋值语句相关的程序代码的组合;
当对所述目标程序进行改变以使得针对包括在所选择的组合中的与所述多个赋值语句相关的程序代码中的每一个执行使用SIMD操作功能的并行处理时,执行经改变的目标程序以计算执行精确度和操作时间;以及
搜索所述组合,以使得所计算的执行精确度和操作时间满足预定条件。
2.根据权利要求1所述的信息处理方法,所述信息处理方法还包括:通过对具有所述较高执行次数的与所述赋值语句相关的程序代码执行演化计算来搜索所述组合。
3.根据权利要求2所述的信息处理方法,所述信息处理方法还包括:当从具有所述较高执行次数的与所述赋值语句相关的程序代码中选择了与所述多个赋值语句相关的所述程序代码的第一组合,并且从具有所述较高执行次数的与所述赋值语句相关的程序代码中选择了与所述多个赋值语句相关的所述程序代码的第二组合时,通过将所述第一组合和所述第二组合进行交叉来新搜索所述组合。
4.根据权利要求2所述的信息处理方法,所述信息处理方法还包括:当从具有所述较高执行次数的与所述赋值语句相关的程序代码中选择了与所述多个赋值语句相关的所述程序代码的所述组合时,通过将所述组合的一部分从选择改变成未选择或者将所述组合的一部分从未选择改变成选择,来新选择所述组合。
5.根据权利要求1所述的信息处理方法,
其中,从具有所述较高执行次数的与所述赋值语句相关的程序代码中排除与赋值语句相关的如下程序代码:所述程序代码在具有所述较高执行次数的与所述赋值语句相关的程序代码中执行精确度低且操作时间长。
6.一种非暂态计算机可读存储介质,其存储使计算机执行处理的程序,所述处理包括:
执行目标程序以获取多个程序代码中的每一个的执行次数;
基于所获取的执行次数,从具有较高执行次数的与赋值语句相关的程序代码中选择与多个赋值语句相关的程序代码的组合;
当对所述目标程序进行改变以使得针对包括在所选择的组合中的与所述多个赋值语句相关的程序代码中的每一个执行使用SIMD操作功能的并行处理时,执行经改变的目标程序以计算执行精确度和操作时间;以及
搜索所述组合,以使得所计算的执行精确度和操作时间满足预定条件。
7.根据权利要求6所述的非暂态计算机可读存储介质,所述处理还包括:通过对具有所述较高执行次数的与所述赋值语句相关的程序代码执行演化计算来搜索所述组合。
8.根据权利要求7所述的非暂态计算机可读存储介质,所述处理还包括:当从具有所述较高执行次数的与所述赋值语句相关的程序代码中选择了与所述多个赋值语句相关的所述程序代码的第一组合,并且从具有所述较高执行次数的与所述赋值语句相关的程序代码中选择了与所述多个赋值语句相关的所述程序代码的第二组合时,通过将所述第一组合和所述第二组合进行交叉来新搜索所述组合。
9.根据权利要求7所述的非暂态计算机可读存储介质,所述处理还包括:当从具有所述较高执行次数的与所述赋值语句相关的程序代码中选择了与所述多个赋值语句相关的所述程序代码的所述组合时,通过将所述组合的一部分从选择改变成未选择或者将所述组合的一部分从未选择改变成选择,来新选择所述组合。
10.根据权利要求9所述的非暂态计算机可读存储介质,其中,从具有所述较高执行次数的与所述赋值语句相关的程序代码中排除与赋值语句相关的如下程序代码:所述程序代码在具有所述较高执行次数的与所述赋值语句相关的程序代码中执行精确度低且操作时间长。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019-168077 | 2019-09-17 | ||
JP2019168077A JP7263994B2 (ja) | 2019-09-17 | 2019-09-17 | 情報処理方法及び最適化プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112596789A true CN112596789A (zh) | 2021-04-02 |
Family
ID=72355872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010954073.XA Pending CN112596789A (zh) | 2019-09-17 | 2020-09-11 | 信息处理方法和非暂态计算机可读存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11169814B2 (zh) |
EP (1) | EP3796156A1 (zh) |
JP (1) | JP7263994B2 (zh) |
CN (1) | CN112596789A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003202991A (ja) * | 2002-01-08 | 2003-07-18 | Sony Corp | プログラム処理装置及びプログラム処理方法、記憶媒体、並びにコンピュータ・プログラム |
CN101452394A (zh) * | 2007-11-28 | 2009-06-10 | 无锡江南计算技术研究所 | 编译方法和编译器 |
US20090276766A1 (en) * | 2008-05-01 | 2009-11-05 | Yonghong Song | Runtime profitability control for speculative automatic parallelization |
CN103246541A (zh) * | 2013-04-27 | 2013-08-14 | 中国人民解放军信息工程大学 | 自动并行化多级并行代价评估方法 |
US20130262835A1 (en) * | 2012-03-29 | 2013-10-03 | Fujitsu Limited | Code generation method and information processing apparatus |
US20160188242A1 (en) * | 2014-12-29 | 2016-06-30 | International Business Machines Corporation | Computer instructions for limiting access violation reporting when accessing strings and similar data structures |
CN108959179A (zh) * | 2017-05-25 | 2018-12-07 | 三星电子株式会社 | 向量处理器的序列对齐方法 |
CN109840090A (zh) * | 2017-11-29 | 2019-06-04 | 英特尔公司 | 用于缓解高频执行路径中的高等待时间指令的技术 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274972A1 (en) * | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
JP2013242604A (ja) | 2010-09-10 | 2013-12-05 | Fixstars Multi Core Labo Corp | 実行モジュール最適化装置、実行モジュール最適化方法、およびプログラム |
US9229524B2 (en) * | 2012-06-27 | 2016-01-05 | Intel Corporation | Performing local power gating in a processor |
JP6331865B2 (ja) * | 2014-08-13 | 2018-05-30 | 富士通株式会社 | プログラム最適化方法,プログラム最適化プログラム及びプログラム最適化装置 |
US9274771B1 (en) | 2014-09-22 | 2016-03-01 | Oracle International Corporation | Automated adaptive compiler optimization |
EP3208712B1 (en) * | 2016-02-22 | 2020-02-19 | Karlsruher Institut für Technologie | Computer system and method for parallel program code optimization and deployment |
WO2018163304A1 (ja) | 2017-03-07 | 2018-09-13 | 三菱電機株式会社 | ソースコード改善装置、ソースコード改善方法及びソースコード改善プログラム |
-
2019
- 2019-09-17 JP JP2019168077A patent/JP7263994B2/ja active Active
-
2020
- 2020-09-02 US US17/009,833 patent/US11169814B2/en active Active
- 2020-09-03 EP EP20194305.7A patent/EP3796156A1/en active Pending
- 2020-09-11 CN CN202010954073.XA patent/CN112596789A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003202991A (ja) * | 2002-01-08 | 2003-07-18 | Sony Corp | プログラム処理装置及びプログラム処理方法、記憶媒体、並びにコンピュータ・プログラム |
CN101452394A (zh) * | 2007-11-28 | 2009-06-10 | 无锡江南计算技术研究所 | 编译方法和编译器 |
US20090276766A1 (en) * | 2008-05-01 | 2009-11-05 | Yonghong Song | Runtime profitability control for speculative automatic parallelization |
US20130262835A1 (en) * | 2012-03-29 | 2013-10-03 | Fujitsu Limited | Code generation method and information processing apparatus |
CN103246541A (zh) * | 2013-04-27 | 2013-08-14 | 中国人民解放军信息工程大学 | 自动并行化多级并行代价评估方法 |
US20160188242A1 (en) * | 2014-12-29 | 2016-06-30 | International Business Machines Corporation | Computer instructions for limiting access violation reporting when accessing strings and similar data structures |
CN108959179A (zh) * | 2017-05-25 | 2018-12-07 | 三星电子株式会社 | 向量处理器的序列对齐方法 |
CN109840090A (zh) * | 2017-11-29 | 2019-06-04 | 英特尔公司 | 用于缓解高频执行路径中的高等待时间指令的技术 |
Non-Patent Citations (1)
Title |
---|
SHIXIONG XU等: "Bitslice Vectors: A Software Approach to Customizable Data Precision on Processors with SIMD Extensions", 《2017 46TH INTERNATIONAL CONFERENCE ON PARALLEL PROCESSING (ICPP)》, pages 442 - 451 * |
Also Published As
Publication number | Publication date |
---|---|
US11169814B2 (en) | 2021-11-09 |
US20210081210A1 (en) | 2021-03-18 |
EP3796156A1 (en) | 2021-03-24 |
JP7263994B2 (ja) | 2023-04-25 |
JP2021047480A (ja) | 2021-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108717470B (zh) | 一种具有高准确度的代码片段推荐方法 | |
US20170228309A1 (en) | System and method for equivalence class analysis-based automated requirements-based test case generation | |
US9081586B2 (en) | Systems and methods for customizing optimization/transformation/ processing strategies | |
CN105224452B (zh) | 一种针对科学计算程序静态分析性能的预测代价优化方法 | |
US8595711B2 (en) | Function-level compiler processing optimization | |
EP2963547A1 (en) | Compiling device, compiling method, and storage medium storing compiler program | |
CN114492737B (zh) | 数据处理方法、装置及电子设备、存储介质及程序产品 | |
US5712791A (en) | Method and apparatus for designing a circuit by analyzing selected artificial hardware dependencies inserted into a dynamic dependency graph | |
US10990073B2 (en) | Program editing device, program editing method, and computer readable medium | |
US8935512B2 (en) | Instruction operation code generation system | |
CN116991711A (zh) | 一种测试用例的生成方法、装置、终端设备及存储介质 | |
US20160335175A1 (en) | Determining valid inputs for an unknown binary program | |
KR20190112524A (ko) | 아키텍처에 무관한 프로그램 함수 유사도 측정 방법 | |
CN112596789A (zh) | 信息处理方法和非暂态计算机可读存储介质 | |
Blackmore et al. | A logic programming approach to predict effective compiler settings for embedded software | |
US9619362B2 (en) | Event sequence construction of event-driven software by combinational computations | |
US9141357B2 (en) | Computer-readable recording medium, compiling method, and information processing apparatus | |
CN107180193B (zh) | 一种将程序代码转换成数据约束的方法和装置 | |
CN111290946B (zh) | 基于原子状态函数的浮点数误差检测方法和装置 | |
US20220172115A1 (en) | Parameter tuning apparatus, parameter tuning method, computer program and recording medium | |
US9606779B2 (en) | Data processing system and data simulation method in the system | |
KR20220046038A (ko) | Ai 연산 프로세서 가속 성능 평가 인터페이스 시스템 및 그 방법 | |
CN101571814B (zh) | 基于消息传递接口的设备的通信行为信息提取方法及系统 | |
CN115185502B (zh) | 基于规则的数据处理工作流定义方法、装置、终端及介质 | |
US20070113220A1 (en) | Program translation method and notifying instruction inserting method |
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 |