Legion 1.8
Developer Manual

Before you start

1.0Introduction
1.1About this manual
1.2Style conventions
1.3About Legion
2.0The Legion vision
2.1Objectives
2.1.1Site autonomy
2.1.2Multiple languages, interoperability
2.1.3High performance via parallelism
2.1.4Single persistent object space
2.2Philosophy
2.3Design constraints
2.4A brief history
2.5Other metacomputing software
2.5.1DCE
2.5.2CORBA
2.5.3Globus
2.5.4Globe
2.5.5Java
2.5.6Other projects
2.6Support for multiple languages
2.6.1PVM and MPI
2.6.2Object wrappers

Languages

3.0Mentat
3.1The language
3.2Philosophy
3.3Classes
3.4Objects
4.0Fortran
4.1Programming interface
4.1.1Server-side programming
4.1.1.1Class styles
4.1.1.2Mechanics
4.1.1.3Compilation
4.1.2Client-side programming
4.1.2.1Include Files
4.1.2.2Method invocation
4.1.2.3Compilation
4.2Example program: stateful objects
4.3Example program: stateless objects
4.4Current limitations
4.5BFS syntax
5.0Object interface
5.1Stub generator
5.2Options
5.3CORBA IDL compiler

The Legion Libraries

High-level libraries: Traditional file interface

6.0File library interface
6.1Public methods
6.2Library functions
6.2.1Raw I/O library
6.2.2Buffered I/O library, C and C++ interface
6.2.3Buffered I/O library, Fortran interface
6.2.4Buffered I/O library, low impact interface
6.2.5The LegionBuffer I/O interface
6.2.6Two-dimensional FileObject interfaces
6.2.6.1Examples
6.2.6.2Synchronous interface
6.2.6.3Asynchronous interface
6.3Terminal I/O
6.3.1Library interface
6.3.1.1Explicit terminal I/O
6.3.1.2Implicit terminal I/O
6.3.1.3Fortran interface
6.3.2Command-line tools

 

Low-level library: The Legion runtime library

7.0Legion programming
7.1LegionLOID
7.2Basic module and data container: the Legion buffer
7.2.1LegionStorage
7.2.2LegionPacker
7.2.3LegionEncryptor
7.2.4LegionCompressor
7.2.5MetaData
7.2.6Packability
7.3Legion invocations and messages
7.3.1Contents of a message
7.3.2Legion message database
7.3.2.1Legion Work Unit
7.3.2.2Method invocation
7.3.3Basic Legion event kinds & handlers
7.3.4Invocation execution and result return
7.3.5Legion program graphs
7.4Reference counting
7.4.1LRef rule of thumb
7.4.2Exceptions to the rule of thumb
7.5Exception propagation model
7.5.1Standard exception propagation policy
7.5.2Catching exceptions
7.6How to use the run-time library
7.7Modifying the Library
7.7.1Implementing the configurable protocol stack: events
7.7.2Interfaces
7.7.3LegionEventManager
7.7.4Default protocol stack
7.7.5Adding new functionality to the Legion protocol stack
7.7.6Active messages
7.7.7Path expressions
7.7.8Message passing

Resource management

8.0Resource management
8.1Philosophy: negotiation and customization
8.2Legion's approach to resource management
8.2.1Determining what resources are available
8.2.2Reserving desired resources
8.2.3Veto power
8.2.4More about the scheduler
8.2.5More about the enactor
8.2.6More about the collection

Legion object model

9.0Naming conventions
9.1More about the LOID
9.2More about context names
9.3More about object addresses
9.4Bindings
10.0Object attributes
11.0Object states

Binding Process

12.0Core objects in action
12.1 Determining LOIDs
12.2 The binding mechanism
12.2.1Binding caches
12.2.2Binding agents
12.3 The class-of mechanism
12.4 The rebinding mechanism
12.5 Object activation
12.5.1Implementation objects
12.5.2Implementation caches
12.5.3Running objects

Core objects

13.0About 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
School of Engineering & Applied Science
University of Virginia
151 Engineer's Way, P.O. Box 400740
Charlottesville, VA 22904-4740
legion@virginia.edu
http://legion.virginia.edu/

Directory of Legion 1.8 Manuals
[Home] [General] [Documentation] [Software]
[Testbeds] [Et Cetera] [Map/Search]

legion@Virginia.edu
http://legion.virginia.edu/