Transit Note #105

Global Cooperative Computing

Andre DeHon

Jeremy Brown

Ian Eslick

Original Issue: April, 1994

Last Updated: Tue May 10 22:06:44 EDT 1994

Abstract:

Global cooperative computing exploits the National Information Infrastructure / World-Wide Web to deploy new software and hardware technology, leverage scarce human expertise, and acquire feedback information on deployed software use. Global cooperative computing links deployed software back to standard, home repositories on the NII/WWW. Throughout each program's lifetime, the computing system uses this rendezvous point to communicate usage experience, program improvements, and program variations.

Cooperative Sharing

The rich interconnection between machines fostered by the Internet has allowed programs to be distributed easily and used widely. More recently, the network resources have provided an environment which allowed free software ( e.g. Free Software Foundation) to develop and thrive. The availability of free software in source form has been beneficial to many research and commercial efforts.

Nonetheless, the current support for program sharing is primitive and ad hoc.

Further, current techniques primarily support coarse-grained sharing at the program level. With current techniques and limited software tools it is impractical to share common solutions and building blocks at sub-program levels.

We envision a framework which supports cooperative code optimization and sharing over the NII, built on top of the WWW. The key elements of our approach are to:

Our vision of cooperative computing is closely tied to exploiting the World-Wide Web and providing programmers with a flexible and powerful code management environment -- HyperCode. HyperCode brings HyperText technology to program source code. Program source code is richly annotated with direct links to relevant information including definition sites, program genealogy, quality annotations, and documentation. The base functionality HyperCode provides is explicit function Call Callee-source links. These links provide a number of key benefits. They allow programs to precisely indicate their dependencies making it easier for people to share code. Further, the links identify a canonical home site for each piece of code. This home site serves as a rendezvous location for information about the code, including performance, functional quality, usage statistics, and version information. The canonical HyperCode version of a piece of code collects this information in an automated manner. New versions are linked to the original, making innovations or fixes rapidly and automatically available to all users. The support structure we envision automates the tedious aspects of shared code maintenance, usage reporting, verification, and updates. Human expertise is still vital, but the effort required on the part of the programmers and user is drastically reduced by sophisticated support tools.

We envision this sharing paradigm eventually applying to all programming and scripting languages and hardware description languages. Global cooperative sharing provides an opportunity for programs to rapidly and automatically ride the software technology curve. As soon as a new version of a routine is posted, a cooperative-computing sensitive quasistatic compiler ([DE94] [DEMK93]) locates and evaluates the new version. If the new routine allows an existing program to run faster, the compiler replaces the older routine with the new and faster one.

We can take this software technology curve one step further by sharing basic compiler transforms. As new transforms are shared, the quasistatic compiler experiments with the new transforms on existing code. In this way, programs rapidly and automatically take advantage of new compilation techniques.

To date, the WWW has been used primarily to publish information. Cooperative sharing represents a new class of applications for the WWW and NII wherein distributed computers globally cooperate on common computing problems. In the cooperative-sharing paradigm, the computers cooperate towards the common goals of achieving highly optimized application code and collecting broad-based quality feedback information.

Hardware Design Library

As hardware designs rely more and more heavily on CAD tools, hardware design language descriptions, and common interchange formats, basic hardware designs have come to exhibit many of the same properties as software. Publicly known circuits and architectures can be transferred in electronic description form at no cost. Consequently, non-proprietary hardware designs could be shared as widely as free software. The community would benefit from the free availability of stock hardware design solutions. Rather than replicating the work of describing standard hardware elements in electronic form and testing the results, designers could acquire the electronic description free, or at nominal costs, from publicly maintained libraries.

We envision the WWW/NII providing a framework for such a public hardware design library. Hardware designs at all levels from VLSI masks to high-level architectural descriptions are collected. Hardware designers pick parameterized cells from stock library solutions and specialize them to their needs. Such a library builds on the same technology used for the global cooperative sharing of software code. Automatic annotation maintenance allows distributed feedback on the utility of publicly available designs. Automated submissions and genealogy allow distributed maintenance of design alternatives. In a similar manner to quasistatic-code sharing, CAD tools notify designers of potentially superior alternatives to stock solutions as they are made publicly known.

The analogy with software is especially relevant when considering architectures suitable for reconfigurable logic ( e.g. (tn100)). The selection among alternative implementations of a specialized, configurable logic design is identical to selection among alternative implementations of a software subroutine. In fact, we can combine these technologies to make innovations in hardware architecture immediately accessible to applications running on configurable computing machines. We often accelerate programs by replacing a software subroutine with a specialized, configurable logic implementation. In this case, the quasistatic compiler evaluates the feasibility and merit of such a migration of functionality from fixed processing resources to configurable resources. In the short-term, this technique of providing configurable hardware implementation alternatives for key subroutines is likely to be quite popular. In a quasistatic, global cooperative computing scenario, such alternatives will allow any program using such routines to automatically adapt to exploit the newly provided alternative whenever suitable configurable hardware is available.

Current State-of-the-Art

The state-of-the-art in software and hardware design sharing is poor and ad hoc. Contributors make whole programs available via FTP. When potential consumers find the code, they can manually pick it up and install it. Such programs often implicitly depend on other programs and the consumer is burdened with understanding this relationship and making sure all the implicit dependencies are supported. Consequently, a huge cognitive burden is placed on potential consumers to properly install the software and prepare it for use. At the same time, complicated dependencies within the code make it impractical to reuse portions of contributed software without undertaking significant effort to understand the context required for the code to operate. Coordinating bugs and improvements is also a huge logistical problem. Consequently, maintaining and evolving shared code is an enormous undertaking. Despite the cognitive undertaking, many programmers do come to understand the shared code and can provide improvements. Nonetheless, most of their improvements are not available for public use due to the enormous human effort currently required to verify and coordinate the evolution of shared code. Global cooperative computing will automate much of the coordination and dependency tracking, lowering the transaction cost of using shared code while simultaneously lowering the effort required to evolve shared code.

Impact of Cooperative Sharing

Our research efforts to establish a global cooperative computing framework and Hardware Design Libraries will provide novel mechanisms for rapid technology transfer. Both efforts facilitate dissemination of new developments on drastically shorter time scales than current technologies. Further these technologies dramatically reduce the amount of effort required to effectively transfer new results both on the part of the developers and on the part of the consumers.

Rapid Dissemination and Incorporation

The technologies suggested here will allow new software technologies to be distributed and incorporated into existing code in days. Thus, end-users can benefit from technology developments far faster than possible with today's ad hoc techniques for technology transfer. In contrast, many software and compilation techniques take years to get from academia to industry. Even then, the techniques often end up only in large volume applications. Smaller or older applications may never benefit from the new technologies.

Quasistatic and global cooperative computing make possible this unprecedented, rapid deployment of new technology. Quasistatic computing allows new software technologies to be evaluated and applied to existing applications. This incorporation occurs without intervention by the end users, with the exception of routine safety checks. Global cooperative computing exploits the NII to distribute the new technology and provide a substrate for computational cooperation.

Reduced Effort: Contributors

The tools proposed to support cooperative computing take a large burden off of potential contributors, thereby encouraging more people to contribute, encouraging people to contribute often, and encouraging contribution at a finer granularity than is currently practical. Notably, the automatic collection of computer generated feedback information and the automatic maintenance of consumer supplied feedback information frees the contributor from manual collection and maintenance of this information. Further, the automatic support for cooperative submission of alternatives removes the burden of coordinating low-level improvements. Individuals who wish to augment a work need only link their contribution as an alternative to the original without involving the original author.

Reduced Effort: Consumers

Consumers can benefit from the new technology with almost no effort and often without needing to understand the nature of the development. For security reasons, one or more people at each consuming site will need to make a final inspection of any new software. Beyond this safety check, no human intervention is required to benefit from new technology. The combination of quasistatic feedback and explicit code links to designated repositories allow cooperative computing software to automatically locate results which are relevant to the user. Once identified, the quasistatic compiler can experiment with the new software routines or transforms. In this process the compiler will weed out developments which do not accelerate the end-user's application or do not function properly. Only when the new software is found to be beneficial and functional is any user even bothered for inspection. Incorporation of software proceeds automatically once accepted.

Routine Safety Checks

We are not proposing to automatically recognize software which may have undesirable side effects ( e.g. hidden viruses), in this formulation. Nonetheless, we expect any such side effects will be noticed by some human reviewer and quickly reported. Automatic maintenance of such human feedback information will quickly notify all other potential consumers to the dangers. All software will thus have a pedigree of adoption, use, and complaints. For many users, a pedigree showing widespread use and no complaints may be sufficient.

In some cases a consumer may employ a vendor or remote maintenance site to provide pre-approved code. The consumer may then give the system blanket authority to automatically incorporate any code or transforms provided by these select sites. Cryptographic authentication and checksums can serve to guarantee the uncorrupted and unforged delivery of code and its associated approval.

Increased Scope

This reduced effort, in turn, leads to a tremendous increase in the potential scope of adoption for each new development. Each program, or hardware design, provides explicit links to the home locations of its shared, constituent parts. This allows every program to identify relevant new developments as soon as they are made available. Further, since the recognition, trial, and incorporation of new developments is automatic, every program which benefits from a new development can be updated with minimal human effort. The aforementioned routine safety checks are the only point where humans may need to be involved in this process. This kind of sweeping update is possible with our global cooperative computing model and is not even conceivable with current computing practices.

See Also...

References

BDE +94
Jeremy Brown, Andre DeHon, Ian Eslick, Jake Harris, Lara Karbiner, and Massimiliano Poletto. Pragmatics and Starting Points for Global Cooperative Computing. Transit Note 109, MIT Artificial Intelligence Laboratory, May 1994. [tn109 HTML link] [tn109 FTP link].

DE94
Andre DeHon and Ian Eslick. Computational Quasistatics. Transit Note 103, MIT Artificial Intelligence Laboratory, March 1994. [tn103 HTML link] [tn103 FTP link].

DeH93
Andre DeHon. Smart Compiler Advantages. Transit Note 99, MIT Artificial Intelligence Laboratory, December 1993. [tn99 HTML link] [tn99 FTP link].

DeH94
Andre DeHon. DPGA-Coupled Microprocessors: Commodity ICs for the Early 21st Century. Transit Note 100, MIT Artificial Intelligence Laboratory, January 1994. [tn100 HTML link] [tn100 FTP link].

DEMK93
Andre DeHon, Ian Eslick, John Mallery, and Thomas F. Knight Jr. Prospects for a Smart Compiler. Transit Note 87, MIT Artificial Intelligence Laboratory, June 1993. [tn87 HTML link] [tn87 FTP link].

MIT Transit Project