|
| ||||||||||||||||||||
|
|
Legion High Performance
Parallelism and resource selection Legion achieves high-performance computing by selecting resources based on load and job affinity and through parallel processing.
Legion supports parallel processing in four ways:
![]() Support of parallel libraries The vast majority of parallel applications today are written in MPI and PVM. Legion supports both libraries, via emulation libraries that use the underlying Legion run-time library. Existing applications only need to be recompiled and relinked in order to run on Legion. MPI and PVM users can thus reap the benefits of Legion with existing applications. In the future, libraries such as Scalapak will also be supported. Parallel language support Legion supports MPL (Mentat Programming Language) and BFS (Basic Fortran Support). MPL is a parallel C++ language in which the user specifies those classes that are computationally complex enough to warrent parallel execution. Class instances are then used like C++ class instances: the compiler and run-time system take over and construct parallel computation graphs of the program and then execute the methods in parallel on different processors. Legion is written in MPL: BFS is a set of pseudo-comments for Fortran and a preprocessor that gives the Fortran programmer access to Legion objects. It also allows parallel execution via remote asynchronous procedure calls and the construction of program graphs. HPF may also be supported in the future. Wrap parallel components Object wrapping is a time-honored traditiion in the object-oriented world. We have extended the notion of encapsulating existing legacy codes into objects by encapsulating parallel components into objects. To other Legion objects the encapsulated object appears sequential but it executes faster. PVM, HPF, and shared memory threaded applications can thus be encapsulated into a Legion object. ![]() Export the run-time library We do not expect to provide the full range of languages and tools that users require: instead of developing everything here at the University of Virginia, we anticipate Legion becoming an open, community, artifact, to which other tools and languages are ported. To support these third party developments, the complete run-time library is available. User libraries can directly manipulate the run-time library. The library is completely reconfigurable. It supports basic communication, encryption/decryption, authentication, and exception detection and propagation, as well as parallel program graphs. Program graphs represent functions and are first class and recursive. Graph nodes are member function invocations on Legino objects or sub-graphs. Arcs model data dependencies. Graphs may be annotated with arbitrary information, such as resource requirements, architecture affinities, etc. The annotations may be used by schedulers, fault-tolerance protocols, and other user-defined services.
| |||||||||||||||||||
|
[Testbeds] [Et Cetera] [Map/Search]
This work partially supported by DOE grant DE-FG02-96ER25290, Logicon (for the DoD HPCMOD/PET program) DAHC 94-96-C-0008, DOE D459000-16-3C, DARPA (GA) SC H607305A, NSF-NGS EIA-9974968, NSF-NPACI ASC-96-10920, and a grant from NASA-IPG.
legion@Virginia.edu
|