FRAMEWORK FOR USER-DIRECTED PROFILE-DRIVEN OPTIMIZATIONS

    公开(公告)号:US20180107464A1

    公开(公告)日:2018-04-19

    申请号:US15701296

    申请日:2017-09-11

    Applicant: Google Inc.

    CPC classification number: G06F8/443 G06F8/4434 G06F8/4441

    Abstract: A method for using profiling to obtain application-specific, preferred parameter values for an application is disclosed. First, a parameter for which to obtain an application-specific value is identified. Code is then augmented for application-specific profiling of the parameter. The parameter is profiled and profile data is collected. The profile data is then analyzed to determine the application's preferred parameter value for the profile parameter.

    Framework for user-directed profile-driven optimizations

    公开(公告)号:US09760351B2

    公开(公告)日:2017-09-12

    申请号:US13855557

    申请日:2013-04-02

    Applicant: GOOGLE INC.

    CPC classification number: G06F8/443 G06F8/4434 G06F8/4441

    Abstract: A method for using profiling to obtain application-specific, preferred parameter values for an application is disclosed. First, a parameter for which to obtain an application-specific value is identified. Code is then augmented for application-specific profiling of the parameter. The parameter is profiled and profile data is collected. The profile data is then analyzed to determine the application's preferred parameter value for the profile parameter.

    Framework for user-directed profile-driven optimizations

    公开(公告)号:US10365903B2

    公开(公告)日:2019-07-30

    申请号:US15701296

    申请日:2017-09-11

    Applicant: Google Inc.

    Abstract: A method for using profiling to obtain application-specific, preferred parameter values for an application is disclosed. First, a parameter for which to obtain an application-specific value is identified. Code is then augmented for application-specific profiling of the parameter. The parameter is profiled and profile data is collected. The profile data is then analyzed to determine the application's preferred parameter value for the profile parameter.

    Continuous profiling for automatic feedback directed optimization
    4.
    发明授权
    Continuous profiling for automatic feedback directed optimization 有权
    连续分析自动反馈定向优化

    公开(公告)号:US09348566B1

    公开(公告)日:2016-05-24

    申请号:US14146287

    申请日:2014-01-02

    Applicant: GOOGLE INC.

    CPC classification number: G06F8/443 G06F11/34 G06F11/3636

    Abstract: A system and method for improving the performance of all applications are disclosed. Production profile data may be collected about each application while the application is executing. The production profile data may be converted into symbolized profiles and stored in a database. The symbolized profiles may be aggregated into a single aggregated profile. This aggregated profile may be used as a compilation input when compiling new versions of an application's binary to improve the application's performance for observed application behavior.

    Abstract translation: 公开了一种用于提高所有应用的性能的系统和方法。 在执行应用程序时可以收集关于每个应用程序的生产简档数据。 生产简档数据可以被转换成符号化简档并存储在数据库中。 符号化配置文件可以聚合成单个聚合配置文件。 当编译应用程序的二进制文件的新版本时,可以将此聚合的配置文件用作编译输入,以提高应用程序对观察到的应用程序行为的性能。

    Fine-grained demand driven IPO infrastructure

    公开(公告)号:US09841959B2

    公开(公告)日:2017-12-12

    申请号:US14634401

    申请日:2015-02-27

    Applicant: GOOGLE INC.

    CPC classification number: G06F8/443 G06F8/4443 G06F8/54

    Abstract: Provided are methods and systems for inter-procedural optimization (IPO). A new IPO architecture (referred to as “ThinLTO”) is designed to address the weaknesses and limitations of existing IPO approaches, such as traditional Link Time Optimization (LTO) and Lightweight Inter-Procedural Optimization (LIPO), and become a new link-time-optimization standard. With ThinLTO, demand-driven and summary-based fine grain importing maximizes the potential of Cross-Module Optimization (CMO), which enables as much useful CMO as possible ThinLTO also provides for global indexing, which enables fast function importing; parallelizes some performance-critical but expensive inter-procedural analyses and transformations; utilizes demand-driven, lazy importing of debug information that minimizes memory consumption for the debug build; and allows easy integration of third-party distributed build systems. In addition, ThinLTO may also be implemented using an IPO server, thereby removing the need for the serial step.

    Feedback-directed inter-procedural optimization
    6.
    发明授权
    Feedback-directed inter-procedural optimization 有权
    反馈导向的过程间优化

    公开(公告)号:US08806463B1

    公开(公告)日:2014-08-12

    申请号:US14275338

    申请日:2014-05-12

    Applicant: Google Inc.

    CPC classification number: G06F8/30 G06F8/443 G06F8/4443

    Abstract: A method includes generating a first executable program module based on source code modules and collecting profile information for the source code modules by executing the first executable program module. The profile information includes information pertaining to invocation of procedures in the first executable program module. The method further includes determining module grouping information for the source code modules based on procedure invocation patterns in the profile information and according to one or more inter-procedural optimization (IPO) heuristics. The method includes performing IPO based on the module grouping information to generate object code modules and generating a second executable program module based on the plurality of object code modules.

    Abstract translation: 一种方法包括:通过执行第一可执行程序模块,基于源代码模块生成第一可执行程序模块并收集源代码模块的简档信息。 简档信息包括关于调用第一可执行程序模块中的过程的信息。 该方法还包括基于简档信息中的过程调用模式并根据一个或多个过程间优化(IPO)启发式来确定源代码模块的模块分组信息。 该方法包括基于模块分组信息执行IPO以生成目标代码模块,并且基于多个目标代码模块生成第二可执行程序模块。

    Methods to eliminate extra memory loads while accessing global variables in position independent code
    7.
    发明授权
    Methods to eliminate extra memory loads while accessing global variables in position independent code 有权
    消除额外的内存负载同时访问位置无关代码的全局变量的方法

    公开(公告)号:US09213531B2

    公开(公告)日:2015-12-15

    申请号:US14267705

    申请日:2014-05-01

    Applicant: Google Inc.

    CPC classification number: G06F8/4434 G06F8/4441 G06F8/447

    Abstract: Methods for reducing memory loads for accessing global variables (globals) when creating executables for position independent (PI) code are disclosed. A first method includes compiling PI code, identifying globals, and determining whether globals are defined in the executable. If a global is not defined in the executable, a definition is created in the executable. A second method includes receiving a list of defined globals from instrumented PI code binary and comparing the list with globals in the PI code. Memory loads are created for globals that are unlisted. A third method includes compiling PI code with special relocations for globals and determining whether globals are defined in the executable. If the global is defined in the executable, the special relocation is replaced with a direct load of the global. If not, the special relocation is replaced with a two-instruction sequence that loads the global's address and then the global's value.

    Abstract translation: 披露了在创建位置无关(PI)代码的可执行文件时减少用于访问全局变量(全局变量)的内存负载的方法。 第一种方法包括编译PI代码,识别全局变量,并确定是否在可执行文件中定义全局变量。 如果在可执行文件中未定义全局,则在可执行文件中创建一个定义。 第二种方法包括从仪器化PI代码二进制中接收定义的全局变量列表,并将该列表与PI代码中的全局变量进行比较。 为未列出的全局变量创建内存加载。 第三种方法包括使用全局变量的特殊重新定位来编译PI代码,并确定是否在可执行文件中定义全局变量。 如果在可执行文件中定义了全局,那么特殊重定位将被替换为全局的直接加载。 如果没有,则特殊重定位将替换为加载全局地址,然后加载全局值的双指令序列。

    Multiversioned functions
    8.
    发明授权
    Multiversioned functions 有权
    多功能功能

    公开(公告)号:US09081587B1

    公开(公告)日:2015-07-14

    申请号:US13775984

    申请日:2013-02-25

    Applicant: GOOGLE INC.

    CPC classification number: G06F8/443 G06F8/41 G06F8/433 G06F8/44 G06F8/4441

    Abstract: Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for receiving source code that contains a hot function that calls a multiversioned function, where a function definition of the multiversioned function specifies a first version and an alternative second version, and generating compiled code that includes a first and a second clone of the hot function, and a first and a second version of the multiversioned function. In the compiled code, the first clone of the hot function includes a direct call to the first version of the multiversioned function, and the second clone of the hot function includes a direct call to the second version of the multiversioned function.

    Abstract translation: 方法,系统和装置,包括在计算机存储介质上编码的计算机程序,用于接收包含调用多版本功能的热功能的源代码,其中多功能功能的功能定义指定第一版本和替代的第二版本, 以及生成包括热功能的第一和第二克隆的编译代码以及多版本功能的第一和第二版本。 在编译的代码中,热功能的第一个克隆包括直接调用多版本功能的第一个版本,热功能的第二个克隆包括直接调用多版本功能的第二个版本。

    Using an inline stack to improve performance of an applications binary
    9.
    发明授权
    Using an inline stack to improve performance of an applications binary 有权
    使用内联堆栈来提高应用程序二进制文件的性能

    公开(公告)号:US09009691B1

    公开(公告)日:2015-04-14

    申请号:US13940987

    申请日:2013-07-12

    Applicant: Google Inc.

    CPC classification number: G06F8/4443

    Abstract: A system and method for using inline stacks to improve the performance of application binaries is included. While executing a first application binary, profile data may be collected about the application that includes which callee functions are called from the application's callsites and the number of times each inline stack is executed. A context summary map may be created from the collected profile data which shows a summary of the total execution count of all instructions in the callee function for each callsite inlined in the application's normal binary. Using the context summary map, each function callsite's execution count may be compared with a predetermined threshold to determine if the function should be inlined. Then the application's profile may be annotated and a second application binary, an optimized binary, may be generated using the annotated profile.

    Abstract translation: 包括使用内联堆栈来提高应用程序二进制文件性能的系统和方法。 在执行第一个应用程序二进制文件时,可以收集关于应用程序的简档数据,该应用程序包括从应用程序调用中调用哪个被调用程序函数以及执行每个内联栈的次数。 可以从收集的简档数据创建上下文摘要图,其中显示了应用程序正常二进制文中内联的每个调用现场的被调用者函数中所有指令的总执行次数的摘要。 使用上下文摘要图,可以将每个函数调用站点的执行计数与预定阈值进行比较,以确定函数是否应该被内联。 然后可以注释应用程序的配置文件,并且可以使用注释的配置文件生成第二个应用程序二进制文件,即优化的二进制文件。

Patent Agency Ranking