Figure1: Division of labor on the start-up and bootstrap hosts
In either case, Legion binary executable files must be installed on any hosts used for Legion procedures. The host that you select during legion_setup_state and that contains the basic Legion classes is the start-up host. The start-up host must always be used to run legion_startup. The bootstrap host is used to boot the system and is the first host object added to the system. It will contain the first pieces of the new system (the first contexts and instances of the classes). You do not have to run legion_initialize on the same host on which you run legion_setup_state and legion_startup.
The legion_setup_state program will prompt for the host name and a port number for the LegionClass object. If you wish to use your current host as the start-up host, a random port, and the current time, which should be acceptable, hit the return key.
The script creates a directory called OPR along with several sub-directories, and populates them with initial states for core system objects. The OPR directory will be created in the Legion root directory. The timestamp sets the starting time for the system: Legion objects use a timestamp to guarantee each object's unique identity. The current time is measured in seconds since Jan. 1, 1970.
Creating host object BootstrapHostObject on "your.current.host.name" Continue (y=yes, Y=yes to all, n=no, N=no to all, v=verbose, V=verbose all)? Y Configuring wellknown binaries for host "1.01.07.0100..."
Next, a bootstrap vault object is automatically created on your current host. This object will represent and manage your bootstrap vault, which is essentially a storage space used to store the state of inactive Legion objects.
Creating vault object BootstrapVaultObject on "your.bootstrap.host.name" Setting BootstrapHost and BootstrapVault restrictions Added 1 host(s) to vault's compatibility set Added 1 vault(s) to host's compatibility set
The system then creates objects which will represent and manage the implementation cache (used by host objects to execute copies of Legion programs in different architectures) and context space.
Creating an ImplementationCache Creating an implementation (ContextObject) for ContextClass Creating the root context object
Be sure to source /home/xxxx/OPR/legion_context_env.csh or . /home/xxxx/OPR/legion_context_env.sh before starting anything else from the command line.
The remainder of the output shows various key objects being created and the basic elements of the system's context space being set up. This space is similar to a Unix directory and file system: the three initial contexts, class, hosts, and vaults are akin to directories, and contain context names (similar to file names in Unix) that refer to Legion objects. Figure 2, below shows the contents of a typical newly created Legion system. For more information on Legion context space, please see "Legion Context Space".
Figure 2: Context space of a newly initialized Legion system