Abstract:
A decision support system called Mounties that is designed for managing applications and resources using rule-based constraints in scalable mission-critical clustering environments. Mounties consists of four active service components: (1) a repository of resource proxy objects for modeling and manipulating the cluster configuration; (2) an event notification mechanism for monitoring and controlling interdependent and distributed resources; (3) a rule evaluation and decision processing mechanism; and (4) a global optimization service for providing decision making capabilities. The focus of this paper is on the design of the first three services that together connect and coordinate the distributed resources with the decision making component.
Abstract:
Methods, compiler apparatus and a computer program product for compiling UPC source code are disclosed. UPC-unique constructs are converted into C-level form. The C-level constructs are inserted into the source code to form a combined code. The combined code is translated into an intermediate form, wherein any surviving UPC-unique components are discarded. All UPC-unique data or statements are converted to a form that can be handled by general compiler architectures, yet retain UPC properties. The resultant intermediate form is converted to compiled machine code. The generation of C-level constructs occurs at a compiler front end module, avoiding difficulties in intermediate code handling.
Abstract:
Techniques for generating concurrent static single assignment (CSSA) are provided. The techniques include generating a clocked control flow graph of a program, for each thread of the program created through async instruction, determining each part of the program that can execute concurrently with each thread to create a pair comprising a thread and a parallel program part, for each pair that can execute concurrently, using one or more flow equations to perform node-by-node matching, and using the node-by-node matching to generate CSSA form for the program.
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:
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:
The provision of methods and apparatus to determine package identity for an application build. The idea is based on providing a mapping of package with affiliated attributes such as paths used for include or linking, along with reverse mappings. This mapping could be provided through any number of conventional environments such as program development environments or operating system registries: Tools would access this information through a programmatic interface, and use that information to identify packages affiliated with some information. For example, a symbol in a program would be defined in some file. That file would be in a path, which maps to the package identity. Thus, the symbol definition can be conceptually affiliated with a package.
Abstract:
A procedure for migrating large code-bases is described. An initial migration plan is generated for a given porting project between a source platform and a target platform, which have respective dialect settings. The migration plan specifies a set of migration stages between the source dialect settings and the target dialect settings via intermediate dialects settings. The relative order between migration stages is specified where necessary to account for dependencies between the intermediate dialects. Migration stages of the migration plan are executed in a sequence consistent with the partial ordering specified by the migration plan. Each migration stage is executed as a transition between preceding dialect settings and succeeding dialect settings, from the source platform to the target platform. Migration issues between the two dialect settings are identified, and the software code is modified accordingly to operate under the succeeding dialect settings rather than the preceding dialect settings. The modified software code is built according to the succeeding dialect settings. Migration stages are executed in turn, from the dialect settings of the source platform to the dialect settings of the target platform, at which stage migration is complete.
Abstract:
Methods and arrangements for managing error messages from a set of programming tools within a program development environment, such as compilers, linkers, library builders, etc. The error messages are arranged as a directed acyclic graph, with the nodes as error messages, and edges as dependency relationships. In accordance with at least one presently preferred embodiment of the present invention, there are broadly contemplated the following: allowing one or more programming tool to report errors to an error manager component; deducing dependencies amongst error messages, based on error dependency definition provided to the error manager; and delivering messages and dependencies to client components. Although framed within the context of program development tools, this solution could be applied to many other tools outside this domain, under suitable and specified requirements.
Abstract:
The provision of methods and apparatus to determine package identity for an application build. The idea is based on providing a mapping of package with affiliated attributes such as paths used for include or linking, along with reverse mappings. This mapping could be provided through any number of conventional environments such as program development environments or operating system registries: Tools would access this information through a programmatic interface, and use that information to identify packages affiliated with some information. For example, a symbol in a program would be defined in some file. That file would be in a path, which maps to the package identity. Thus, the symbol definition can be conceptually affiliated with a package.
Abstract:
A method for resolving race conflicts in a loop circuit having a forward path and a feedback path includes enabling and disabling the feedback path in accordance with a phase waveform. The phase waveform may be a system clock, in which case one of two approaches may be used to ensure that data from the feedback loop arrives later in time than data from an input signal line. During the first approach, only the rising edge of a clock signal used to control data flow in the feedback loop is delayed relative to the rising edge of a clock signal that controls data flow in the forward path. During the second approach, both the rising and falling edges of the clock signal are delayed. Through these approaches, the method of the present invention achieves improved performance in terms of power consumption, frequency response, area, and switching capacitance.