Abstract:
A system and associated method for automatically pipeline parallelizing a nested loop in sequential code over a predefined number of threads. Pursuant to task dependencies of the nested loop, each subloop of the nested loop are allocated to a respective thread. Combinations of stage partitions executing the nested loop are configured for parallel execution of a subloop where permitted. For each combination of stage partitions, a respective bottleneck is calculated and a combination with a minimum bottleneck is selected for parallelization.
Abstract:
An analysis and source-to-source transformation framework covers dialects of programming languages that lack formal definition for all individual dialects. Multiple instantiations of the same compiler front-end tools can be used with different settings to create distinct intermediate forms and maps. Intermediate forms and maps are used in an individual analysis and source-to-source transformation context, and performing the analysis and source-to-source transformation thereupon. A unified tool set is desirably provided, including standard compiler front-end tools and code transformation/generation tools, wherein source code edits are carried out in order to make the source code more amenable to translation to intermediate forms. The analysis results or intermediate forms created by individual tools are used by other tools as well as further analyzed to create a map of the regions of validity and invalidity of the intermediate forms, and tracking the source-code edits performed in order to obtain the same. Among other benefits, this provides a choice of the best tools combination for maximum code analysis coverage.
Abstract:
Embodiments of the invention provide a table-free technique for detecting all temporal and spatial memory access errors in programs supporting general pointers. Embodiments of the invention provide such error checking using constant-time operations. Embodiments of the invention rely on fat pointers, whose size is contained within standard scalar sizes (up to two words) so that atomic hardware support for operations upon the pointers is obtained along with meaningful casts in-between pointers and other scalars. Optimized compilation of code becomes possible since the scalarized-for-free encoded pointers get register allocated and manipulated. Backward compatibility is enabled by the scalar pointer sizes, with automatic support provided for encoding and decoding of fat pointers in place for interaction with unprotected code.
Abstract:
A method, apparatus and computer program product for comparing two computer program codes is disclosed. For each code, a stream of lexemes is generated for the program text of each code. The streams are concatenated in the same order as the program text. The two concatenated streams of lexemes are compared on a language-type by language-type basis to identify lexemes present only in one stream. The comparison derives a set of edit operations including minimal text block moves needed to convert one program code into the other program code.
Abstract:
A system (and method, and method for deploying computing infrastructure) for facilitating fixing program development errors found during different phases of program development using different programming tools, such as compilers, linkers, library managers, and debuggers, and can be integrated into a program development environment encompassing all tools. The exemplary aspects of the present invention can detect a qualified set of problems from which to recover with sufficient information, as typically provided by a user or other intelligent or artificial intelligent means, and upon error detection, can initiate a communication with the user (or other support software), to acquire information that could remedy the problem.
Abstract:
An embodiment of the invention provides a method of managing a cluster of networked resources and resource groups using rule-based constraints. This method includes the step of building a globally optimal cluster configuration of the resources in accordance with the rule-based constraints and a current state of the resources, including identifying for each of the resources and resource groups an availability and quality of service, which are determined by dependencies among the resources and resource groups, resource equivalency, constraints on the resources and network policies. The method comprises the further steps of bringing the cluster of resources on-line in a systematic manner, given the current state of each of the resources and resource groups; and with the cluster of networked resources on-line, determining dynamic dependencies of and configuration infomration about the cluster of resources (i) statically at defined times and (ii) dynamically during cluster operation.
Abstract:
A method of computing effort requirements of porting issues in source code includes estimating the minimal number of code text characters needed to be read by a user when the user is searching for porting issues, estimating the minimal number of context switches needed to be made by the user when shifting from one reading region to another reading region during the searching for the porting issues, and estimating the minimal number of keystrokes needed to be made by the user during searching for the porting issues. In a similar manner, the method involves estimating the minimal number of code text characters, the minimal number of context switches, and the minimal number of keystrokes needed to be made by the user for found porting issues. With this information the method establishes an effort model based on a weighted sum of the minimal number of code text characters, the minimal number of context switches, and the minimal number of keystrokes, for individual porting issues. The weights in the model are identified by porting issue type and user capabilities in handling each porting issue.
Abstract:
There is disclosed transforming an electronic plain text to an electronic anchored text, comprising inserting anchors located between characters in said plain text. Each character has a unique association with a nearest preceding or succeeding anchor. Each anchor serves as a join point and specifies a predetermined state and a predetermined operation. There is also disclosed the weaving and merging of two or more electronic plain texts.
Abstract:
A method for building a locking, migration, dynamic clients, and dynamic partitions capable distributed server for a real-time collaboration session supports the synchronous creation and deletion of partitions by clients as well as the addition and withdrawal of clients during a current collaboration session. The method is based on history servers for providing a history of modifications so that a newly-added client can compute the current state of a shared workspace. The history servers cache and granularize intermediate modification sequences so that computation space and time are reduced. The method supports migrating partition server(s), history server(s), a creation/deletion server, and a collaboration server to different machines. Partition(s) can be dynamically locked and unlocked and, in an extension of this procedure, creation and deletion of partition(s) can be pre-announced and supported. Advanced dynamic-partitioning activities like splitting a partition, merging partitions, shifting data from partition to partition are carried out naturally by locking the concerned partitions during the process of execution.
Abstract:
Efficient support of synchronization in parallel processing is supported by methods for building two data structures that are optimal in that they permit simultaneous access to multiple readers and one writer without using any synchronization constructs such as locks and/or any special instructions. The structures rely on atomic read and/or write of some simple integral values to an underlying, actual or emulated, shared memory. No copying is required of any reader or writer. Each structure comprises a first-in-first-out (FIFO), constant-space, circular queue in which each reader and writer tracks shared bookkeeping data such as queue pointers. Readers are impure since they too write bookkeeping data. If a position of interest for access is beyond a boundary defining legitimate access, say trying to read an empty queue or write to a full queue, then access to the position is prevented until legitimization occurs. One of the structures can use the space in its queue to full capacity. The other structure can use its queue space only to part capacity. However, it has the advantage that it is simple. It keeps only queue pointers as bookkeeping data. Each constant-space queue can be generalized straightforwardly to a lock-optimal, variable-space queue.