Basic Tasks

Starting DOGMA

From the directory in which your configuration file resides use startDOGMA to start the system.

Starting a Node Manually

On the node you wish to start, go to the DOGMA_HOME\bin directory use startNode to start a node.

Starting a Browser-Based Node Manually

In order to use a browser-based node you must be using a JDK 1.1 compliant browser that allows applets to connect to any host.

The usual way to do this is to use appletviewer.  First you must view an applet (just to bring up appletviewer) and edit properties to allow network connections to any host.  Next type: appletviewer http://myhost.foo.bar/DOGMA/NodeCon.html (assuming you have
your dmaster\html directory on your master node served as http://myhost.foo.bar/DOGMA/).

Note that Java Plug-In should enable any browser to participate in DOGMA as long as you have used the Plug-In html converter on NodeCon.html.  So far, Plug-In seems to work, but not entirely cleanly for DOGMA.

Compiling an MPIJ application

In the directory in which the application resides type:  makeall
Or type: makeone SimpleMPI (Do NOT include package names).

Compiling a Dynamic Object Group Application

In the directory in which the application resides type:  makeall
Or type: makeone SimpleMPI (Do NOT include package names).

Compiling a Distributed Object Group Application

As an example consider the following application named SampleApp consisting of the files: SampleAppMaster.java, SampleAppSlave.java, SampleAppSlaveImpl.java.

Step 1
Create the Group file: dogc SkelElement
(Do NOT include package names)

Step 2
Compile the application: makeall
Or for each file you wish to compile type: makeone <file to compile>(Do NOT include package names).
(If you have multiple DOG applications in a directory they must ALL have had dogc run on the group interface file before they will compile using makeall.)

Step 3
Create and compile the remote stubs and skeletons.  makermi dogma.examples.SkelElementImpl
(Be sure to INCLUDE package names)

Running an MPIJ application

To let DOGMA choose which nodes it will use:

From the DOGMA system prompt type: runMPI <MPI application> <numNodes> <args...>

or

To specify nodes in a process file:

From the DOGMA system prompt type: runMPIP <proc file name>

See the process file example.

Running a DOG application

From the DOGMA system prompt type: run <DOG application>

Editing the System Configuration File

Developing an Application

Currently, the major hindrance in developing an application is the fact that class unloading is not a standard Java feature (it is possible to kludge around this with multiple instances of class loaders, but this is very messy in a distributed setting).  The consequence of this is that DOGMA nodes that have run an application will need to be restarted in order to make them "forget" the old version.  The simplest way to do this is to reboot the entire DOGMA system every time you change your code.  A more sophisticated method is to make the master node not accept remote objects, and then simply restart remote nodes whenever your code changes (this assumes you have a fast connection to your remote nodes). For systems in which the master node is slow to boot, the second approach is highly recommended.

DOGMA now redirects stdout and stderr from nodes to the SysCon.  Screen-saver and browser based nodes, however, do not have stdout and stderr redirected. For this reason, the use of System.out is discouraged in DOGMA applications.  Instead, MPIApplication.out and ElementImpl.out should be used. (So applications may simply use out.println() instead of System.out.println().)

Also, development should rarely take place on screen-saver or browser based nodes.  This is for two reasons: 1) the class unloading limitation of the JVM means that nodes must be restarted every time application code is revised, and starting these nodes is usually less convenient than starting regular nodes.  2) stdout and stderr are not redirected for these nodes (due to security limitations).  Note that the "out" member of both ElementImpl and MPIApplication will redirect output, but Exception.printStackTrace() and its relatives will not on browser-based nodes.