mpiSpecTcl.

Ron Fox


Table of Contents
1. Quick Start
1.1. What is mpiSpecTcl
1.2. Checking for support of MPI parallelism.
1.3. Environment variables you will need
1.4. Running mpiSpecTcl in parallel mode
1.5. Debugging mpiSpecTcl
2. Porting custom commands
2.1. The command wrapper classes
2.2. Knowing the execution evironment
2.3. Wrapping old argc, argv commands.
3. How mpiSpecTcl works in parallel mode.
3.1. The MPI Process environment
3.2. mpiSpecTcl process roles
3.2.1. World communicator rank 0 (MPI_ROOT_RANK)- the Root process
3.2.2. World communicator rank 1 (MPI_EVENT_SINK_RANK) - the event sink pipeline process
3.2.3. World communicator rank > 1 (MPI_FIRST_WORKER_RANK) - the event processing pipelines
3.3. MPI Pumps
3.3.1. The Tcl command pump
3.3.2. The ring item pump
3.3.3. The parameter pump
3.3.4. The Xamine gate pump
3.3.5. The gate trace pump
3.4. mpiSpecTcl initialization
3.4.1. Root process (MPI_ROOT_RANK)
3.4.2. The event sink pipeline process (MPI_EVENT_SINK_RANK)
3.4.3. Worker processes (ranks at least MPI_FIRST_WORKER_RANK)
3.5. mipSpecTcl shutdown
A. mpiSpecTcl reference material
A.1. Utilities (3u)
Globals.h -- Describe MPI specific definitions in Globals.h
TclPump.h -- Utility definitions in TclPump.h
A.2. Command jackets (3tcl)
CMPITclCommandAll -- Jacket a command that runs in all ranks
CMPITclCommand -- Jacket a command that runs in other ranks
CMPITclPackagedCommandAll -- Wrap a packaged command that will execute in all processes
CMPITclPackagedCommand -- Jacket packagted commands to run in all but he root.
B. SpecTcl commands in the mpiSpecTcl environment
applygate -- Apply a gate to one or more spectra
attach -- Attach a data source to SpecTcl
channel -- Describe mpiSpecTcl implementation of the channel command.
clear -- MPI SpecTcl clear command
evbunpack -- mpiSpecTcl implementation of evbunpack
filter -- MPISpectcl Implementation of the filter command
fit -- Operation of fit command in mpiSpecTcl
fold -- THe fold command on mpiSpecTcl
gate -- Behavior of the gate command in mpiSpecTcl
integrate -- Integrate an area of interest
mirror -- List sthe mirrors being run
parameter -- Manipulate parametes.
pman -- Manipulate data analysis piplines
project -- Create projection spectra
pseudo -- Create and manipulate pseudo parameters
remote -- Allow scripts to know if they are operating remot of SpecTcl
ringformat -- Set the ring buffer fallback format version
sbind -- Bind spectra into the shared display memory
shmemkey -- Provide display shared memory identification
shmemsize -- Get the size of the spectrum pool of display shared memory
specstats -- Fetch spectrum over/underlow statistics
version -- Provide the SpecTcl version
spectrum -- Create and manipulate spectrum definitions
sread -- Read spectra from file
start -- start analysis from the current data source
stop -- Stop analyzing data from the data source
swrite -- Write spectra to file
treeparameter -- Manipulate the metadatak of tree parameters
treevariable -- Manipulate Tree variables
unbind -- Unbind spectra from display shared memory
ungate -- Remove gate conditions from spectra
C. The MPI Tcl package
mpi::send -- Allow rank 0 to execute scripts in other ranks.
D. XXUSB SpecTcl with MPI parallelism
D.1. VMUSBSpecTcl
List of Examples
1-1. VERSION file for SpecTcls with MPI support
1-2. mpirun exmaple
1-3. Xterm per process and gdb per process
2-1. Wrapping a command in CMPITclCommand
2-2. Transparently wrapping commands by renaming the actual processor
2-3. Implementing the replacement class
2-4. Running commands only in workers
2-5. Porting CTCLProcessor to CTCLObjectProcessor SpectrumCommand.h
2-6. Porting CTCLProcessor to CTCLObjectProcessor Marshalling arguments.
2-7. Porting CTCLProcessor to CTCLObjectProcessor substituting std::string for the result
3-1. Worker top level pseudo code
3-2. Sample Pump and API pseudo code
C-1. Loading the mpi Tcl package
C-1. Output the rank in each worker
C-2. Have workers output their roles and ranks
C-3. A send command that clears all spectra
D-1. VMUSB configuration