Patent classifications
G06F9/45
SEMANTICALLY SENSITIVE CODE REGION HASH CALCULATION FOR PROGRAMMING LANGUAGES
Herein disclosed is an optimization for a compiler, the optimization configured to assign numeric values, or semantic fingerprints, to portions of code, and to combine these fingerprints to arrive at fingerprints for larger and larger portions of code. The fingerprints can be provided to various consumers such as code redundancy optimization modules and copyright violation and malware/virus identification modules. The fingerprints can also be used to cluster similar code, and then code within each cluster can be merged. Merger can include creating a single merged portion of code including identical portions of code from the original portions of code and control flow and new arguments to account for differences between the original portions of code. The original portions of code can be replaced with wrappers that use new arguments to call to the merged portion of code.
CODE-SIZE AWARE FUNCTION SPECIALIZATION
A method for compiling software code comprises scanning call sites within the code to identify a function that is called with at least one constant argument and creating a list of each call site associated with the function and sets of constant arguments passed to the function. If any common subsets of the constant arguments are shared across a plurality of call sites, a size of the function is estimated. selecting any sets of constant arguments that are used only in one call site. The sizes of specialized functions covering sets of constant arguments that are used in only one call site is estimated. The method comprises creating a first set of specialized versions of the function covering one or more sets of constant arguments that are used in only one call site, and if any common subsets of the constant arguments exist, creating a second set of specialized versions of the function.
HETEROGENEOUS COMPUTER SYSTEM OPTIMIZATION
Method and system are provided for identifying a processing element for executing a computer program code module. The method includes: calculating a cyclomatic complexity score for the module; selecting one of a first or second processing element based on the calculated complexity score, the first processing element having a first architecture and the second processing element having a second architecture different from the first architecture, the first and second processing elements forming part of a heterogeneous computer system; running the module on the selected processing element to determine a first run time, and subsequently running the module on the non-selected processing element to determine a second run time; comparing the first and second run time to identify a shortest run time; and identifying a processing element producing a shortest run time as the processing element for executing the computer program code module.
METHODS AND SYSTEMS OF GENERATING EASE OF USE INTERFACES FOR LEGACY SYSTEM MANAGEMENT FACILITIES
Embodiments include methods, and computer system, and computer program products for generating ease of use interfaces for legacy system management facilities (SMF). Aspects include: retrieving an SMF record from an SMF data source through an SMF data interface from a file, over a network or via a real-time API, SMF record having a data control section (DSECT) with code comments for storing a mapping of SMF record defining data structure of SMF record with one or more fields, converting mapping of SMF record into an intermediate format representing mapping of SMF record and corresponding information extracted from the code comments among the one or more fields of SMF record, generating at least one application programming interface (API) in a different computer language using intermediate format, and accessing SMF record using API generated. Different computer language may include Java and intermediate format may include Extensible Markup Language (XML).
Method for checkpointing and restoring program state
Techniques are described that enable restoring interrupted program execution from a checkpoint without the need for cooperation from the computer's operating system. These techniques can be implemented by modifying existing code using an automated tool that adds instructions for enabling restoring interrupted program execution.
Resource access safety through immutable object types
A language extension that advances safety in system programming in that an entire type may be declared to be immutable in the case in which all instances of that type are immutable. The immutable type declaration automatically causes any instances of that type to be treated as immutable, and automatically causes all directly or indirectly reachable members (e.g., fields, methods, properties) of the instance to also be treated as immutable. Furthermore, any construction time reference that allows for field assignment of the instance is not permitted to survive beyond the point at which the instance becomes accessible to its creator. Accordingly, this instance, and any other instance of that same type, will be immutable from the very time of construction. The ability to classify all such instances as immutable is beneficial as the immutable characteristic permits actions that normally would not be allowed due to resource access safety.
Optimizing parallel build of application
Optimizing a parallel build of an application includes, in parallel execution of commands, recording command sequence numbers and access information of the commands and detecting an execution conflict based on the command sequence numbers and the access information of the commands using a processor. Commands involved in the execution conflict are re-executed serially.
System and method of loop vectorization by compressing indexes and data elements from iterations based on a control mask
Loop vectorization methods and apparatus are disclosed. An example method includes generating a first control mask for a set of iterations of a loop by evaluating a condition of the loop, wherein generating the first control mask includes setting a bit of the control mask to a first value when the condition indicates that an operation of the loop is to be executed, and setting the bit of the first control mask to a second value when the condition indicates that the operation of the loop is to be bypassed. The example method also includes compressing indexes corresponding to the first set of iterations of the loop according to the first control mask.
Unified intermediate representation
A system decouples the source code language from the eventual execution environment by compiling the source code language into a unified intermediate representation that conforms to a language model allowing both parallel graphical operations and parallel general-purpose computational operations. The intermediate representation may then be distributed to end-user computers, where an embedded compiler can compile the intermediate representation into an executable binary targeted for the CPUs and GPUs available in that end-user device. The intermediate representation is sufficient to define both graphics and non-graphics compute kernels and shaders. At install-time or later, the intermediate representation file may be compiled for the specific target hardware of the given end-user computing system. The CPU or other host device in the given computing system may compile the intermediate representation file to generate an instruction set architecture binary for the hardware target, such as a GPU, within the system.
Entity wide software tracking and maintenance reporting tool
Embodiments of the invention are directed to a system, method, or computer program product for providing an entity wide software tracking and maintenance tool for monitoring maintenance and software updates across an entity. As such, the invention provides a uniform and stable method of monitoring software updates and software installation across an entity's information technology infrastructure. The invention receives software updates or new programs for installation across the entity. The invention then creates a tracking module to link to the maintenance update. The tracking module is a self-contained, self-describing module that contains static information related to the maintenance. Subsequently, the tracking module allows users to monitor the progress of maintenance levels. In some embodiments, the user may query the system to determine the progress of a specific maintenance. In some embodiments, the system may automatically notify a user of the success or failure of maintenance at one or more stages.