Legion 1.6 Developer Manual
Before you start
1.0 Introduction
- 1.1 About this manual
- 1.2 Style conventions
- 1.3 About Legion
2.0 The Legion vision
- 2.1 Objectives
2.1.1 Site autonomy
2.1.2 Multiple languages, interoperability
2.1.3 High performance via parallelism
2.1.4 Single persistent object space
- 2.2 Philosophy
- 2.3 Design constraints
- 2.4 A brief history
- 2.5 Other metacomputing software
2.5.1 DCE
2.5.2 CORBA
2.5.3 Globus
2.5.4 Globe
2.5.5 Other projects
2.5.6 Java
- 2.6 Support for multiple languages
2.6.1 PVM and MPI
2.6.2 Object wrappers
Languages
3.0 Mentat
- 3.1 The language
- 3.2 Philosophy
- 3.3 Classes
- 3.4 Objects
4.0 Fortran
- 4.1 Programming interface
4.1.1 Server-side programming
4.1.1.1 Class styles
4.1.1.2 Mechanics
4.1.1.3 Compilation
4.1.2 Client-side programming
4.1.2.1 Include Files
4.1.2.2 Method invocation
4.1.2.3 Compilation
- 4.2 Example program: stateful objects
- 4.3 Example program: stateless objects
- 4.4 Current limitations
- 4.5 BFS syntax
5.0 Object interface
- 5.1 Options
- 5.2 CORBA IDL compiler
- 5.3 Using the Legion-CORBA IDL
The Legion Libraries
High-level libraries: Traditional file interface
6.0 File library interface
- 6.1 Public methods
- 6.2 Library functions
6.2.1 Raw I/O library
6.2.2 Buffered I/O library, C and C++ interface
6.2.3 Buffered I/O library, Fortran interface
6.2.4 Buffered I/O library, low impact interface
6.2.5 The LegionBuffer I/O interface
6.2.6 Two-dimensional FileObject interfaces
6.2.6.1 Examples
6.2.6.2 Synchronous interface
6.2.6.3 Asynchronous interface
- 6.3 Terminal I/O
6.3.1 Library interface
6.3.2 Command-line tools
Low-level library: The Legion runtime library
7.0 Legion programming
- 7.1 LegionLOID
- 7.2 Basic module and data container: the Legion buffer
7.2.1 Storage
7.2.2 Packer
7.2.3 Encryptor
7.2.4 Compressor
7.2.5 MetaData
7.2.6 Packability
- 7.3 Legion invocations and messages
7.3.1 Contents of a message
7.3.2 Legion message database
7.3.3 Basic Legion event kinds & handlers
7.3.4 Invocation execution and result return
7.3.5 Legion program graphs
- 7.4 Reference counting
7.4.1 LRef rule of thumb
7.4.2 Exceptions to the rule of thumb
- 7.5 Exception propagation model
7.5.1 Standard exception propagation policy
7.5.2 Catching exceptions
- 7.6 How to use the run-time library
- 7.7 Modifying the Library
7.7.1 Implementing the configurable protocol stack: events
7.7.2 Interfaces
7.7.3 LegionEventManager
7.7.4 Default protocol stack
7.7.5 Adding new functionality to the Legion protocol stack
7.7.6 Active messages
7.7.7 Path expressions
7.7.8 Message passing
Resource management
8.0 Resource management
- 8.1 Philosophy: the need for negotiation and customization
- 8.2 Legion's approach to resource management
8.2.1 Determining what resources are available
8.2.2 Reserving desired resources
8.2.3 Veto power
8.2.4 More about the Scheduler
8.2.5 More about the Enactor
8.2.6 More about the Collection
Legion object model
9.0 Naming conventions
- 9.1 More about the LOID
- 9.2 More about context names
- 9.3 More about object addresses
- 9.4 Bindings
10.0 Object attributes
11.0 Object states
Binding Process
12.0 An example
- 12.1 Determining LOIDs
- 12.2 The binding mechanism
12.2.1 Binding caches
12.2.2 Binding agents
- 12.3 The class-of mechanism
- 12.4 The rebinding mechanism
- 12.5 Object activation
12.5.1 Implementation objects
12.5.2 Implementation caches
12.5.3 Running objects
Core objects
13.0 About the Legion core object model
- 13.1 About core objects
- 13.2 Classes and metaclasses
- 13.3 Host objects
- 13.4 Vault objects
- 13.5 Implementation objects and caches
- 13.6 Binding agents
- 13.7 Context objects and context spaces
- 13.8 Core object replacement
Getting help
References
Index
The Legion Group
Department of Computer Science
University of Virginia
Charlottesville, VA 22903
legion@virginia.edu
http://legion.virginia.edu/
Copyright © 1993-1999 by the Rector and Visitors of the University of Virginia.
All rights reserved.
Permission is granted to copy and distribute this manual so long as this copyright page accompanies any copies. The Legion system software herein described is intended for research and is available free-of-charge for that purpose. Permission is not granted for distributing the Legion system software outside of your site.
In no event shall the University of Virginia be liable to any party for direct, indirect, special, incidental, or consequential damages arising out of the use of the Legion system software and its documentation.
The University of Virginia specifically disclaims any warranties, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. The software provided hereunder is on an "as is" basis, and the University of Virginia has no obligation to provide maintenance, support, updates, enhancements, or modifications.
This work partially supported by DARPA (Navy) contract # N66001-96-C-8527, DOE grant DE-FD02-96ER25290, DOE contract Sandia LD-9391, Northrup-Grumman (for the DoD HPCMOD/PET program), DOE D459000-16-3C and DARPA (GA) SC H607305A