G06F8/4434

ON-DEMAND LOADING OF DYNAMIC SCRIPTING LANGUAGE CODE FOR REDUCED MEMORY USAGE
20230117105 · 2023-04-20 · ·

A computer-implemented method and system for reducing the amount of memory space required to store applications written in dynamic scripting languages loads a program module into memory and removes a category of program code, such as debug information or function definitions, from the program module. The method and system also receives a request for debug information, or a function call or query, and determines whether or not the corresponding program code is in memory. If not, then the location in storage is identified where the program module is stored, and another copy containing the corresponding program code is loaded into memory. The corresponding program code is located and copied into the program module in memory, and a response is provided to the request.

Method of using multidimensional blockification to optimize computer program and device thereof

Disclosed embodiments relate to a method and device for optimizing compilation of source code. The proposed method receives a first intermediate representation code of a source code and analyses each basic block instruction of the plurality of basic block instructions contained in the first intermediate representation code for blockification. In order to blockify the identical instructions, the one or more groups of basic block instructions are assessed for eligibility of blockification. Upon determining as eligible, the group of basic block instructions are blockified using one of one dimensional SIMD vectorization and two-dimensional SIMD vectorization. The method further generates a second intermediate representation of the source code which is translated to executable target code with more efficient processing capacity.

User interface resource file optimization
11645058 · 2023-05-09 · ·

Technologies described herein reduce the size of a software application. In some embodiments, the size of one or more resource files of an application are reduced. Resource files include key/value pairs that define elements of the application. In some embodiments, the application's source code is analyzed to determine if an entry in a resource file may be removed. For instance, initialization functions in the application's source code may be analyzed to determine if a value loaded from a resource file is replaced before being used. For example, a button with a color property may be defined as grey by a resource, but later set to orange in an initialization function. In this case, the resource entry defining the button as grey is superfluous and may be safely removed. This technique allows for entries to be removed from a resource file even though the source code references the entries.

Determining when to perform and performing runtime binary slimming

Multiple execution traces of an application are accessed. The multiple execution traces have been collected at a basic block level. Basic blocks in the multiple execution traces are scored. Scores for the basic blocks represent benefits of performing binary slimming at the corresponding basic blocks. Runtime binary slimming is performed of the application based on the scores of the basic blocks.

RESHAPE AND BROADCAST OPTIMIZATIONS TO AVOID UNNECESSARY DATA MOVEMENT
20230206126 · 2023-06-29 ·

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for transforming patterns of operations on tensors in a computational graph to reduce the memory burden incurred when reshape operations are performed, in particular when deployed to hardware platforms that have vector instructions or vector memory requiring alignment of operands.

AUTOMATED USE OF COMPUTATIONAL MOTIFS VIA DEEP LEARNING DETECTION
20230205517 · 2023-06-29 ·

A system and method are described for efficiently utilizing optimized implementations of computational patterns in an application. In various implementations, a computing system includes at least one or more processors, and these one or more processors and other hardware resources of the computing system process a variety of applications. Sampled, dynamic values of hardware performance counters are sent to a trained data model. The data model provides characterization of the computational patterns being used and the types of workloads being processed. The data model also indicates whether the identified computational patterns already use an optimized version. Later, a selected processor determines a given unoptimized computational pattern is no longer running and replaces this computational pattern with an optimized version. Although the application is still running, the processor performs a static replacement. On a next iteration of the computational pattern, the optimized version is run.

Method and system for software enhancement and management

A software enhancement and management system (E&M System) can include two ways to decompose existing software such that new functionality can be added: functional decomposition and time-affecting linear pathway (TALP) decomposition. Functional decomposition captures the inputs and outputs of the existing software's functions and attaches the new algorithmic constructs presented as other functions that receive the outputs of the existing software's functions. TALP decomposition allows for the generation of time-prediction polynomials that approximate time-complexity functions, speedup, and automatic dynamic loop-unrolling-based parallelization for each TALP.

Supporting dynamic behavior in statically compiled programs

Support for dynamic behavior is provided during static compilation while reducing reliance on JIT compilation and large runtimes. A mapping is created between metadata and native code runtime artifacts, such as between type definition metadata and a runtime type description, or between method definition metadata, a runtime type description, and a native code method location, or field definition metadata, a runtime type description, and a field location. A mapping between runtime artifacts may also be created. Some compilation results include trampoline code to support a reflection invocation of an artifact in the reduced runtime support environment, for virtual method calls, call-time bounds checking, calling convention conversion, or compiler-intrinsic methods. Some results support runtime diagnostics by including certain metadata even when full dynamic behavior is not supported.

Framework for user-directed profile-driven optimizations
11675574 · 2023-06-13 · ·

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.

Methods and apparatus for profile-guided optimization of integrated circuits
11675948 · 2023-06-13 · ·

Methods and apparatus for performing profile-guided optimization of integrated circuit hardware are provided. Circuit design tools may receive a source code and compile the source code to generate a hardware description. The hardware description may include profiling blocks configured to measure useful information required for optimization. The hardware description may then be simulated to gather profiling data. The circuit design tools may then analyze the gathered profiling data to identify additional opportunities for hardware optimization. The source code may then be modified based on the analysis of the profiling data to produce a smaller and faster hardware that is better suited to the application.