|
SSP Project Summary
|
|
Java MPI Simulator
Student
Derrick Pisani, University of Malta
Supervisors
Mario Antonioletti, EPCC
Gordon Darling, EPCC
Neil Chue Hong, EPCC
About 3 years ago SELLIC, in a previous incarnation, wrote an applet
for EPCC. This demonstrated MPI blocking point-to-point
communications. A simple user interface would allow three processes to
be programmed and then the resulting program would be animated. This
could and was used in a didactic environment. As a follow-up to this,
in a 1998 SSP project, Tom Doel extended the existing applet to include
a subset of MPI collective communications. He also simplified the
process programming, see [1] for the details. However there are still
some difficulties.
In this project proposal we hope to remedy some of the perceived
problems with the existing applet and go on, if time allows, to come
up with a new more general formulation of the problem. The extension
to the existing applet should give an initial familiarisation with the
Java application. As all the components are constructed as Java Beans
it should be possible to extend this framework without too much
difficulty.
To start with the following will be modified within the existing
applet:
- The SELLIC applet visualises message exchanges in point-to-point
communications by using an envelope representation that travels from
the sending to the receiving process. Tom added collective communications.
He added a buffer to the process bean and used this to visualise the
collective operation process. Thus the collective operation is represented
by a data exchange (without any envelope). In the original SELLIC
representation there is no data exchange so exchanging messages does not
modify the buffers. This to say the least is confusing. The first task
would be to modify both mechanisms to be consistent.
- The visual design of the GUI could be used. At present AWE classes are
used - incorporating the Java foundation classes may clean the GUI and
enable generalisation of it.
- Find some way of making the programming easier - it is not intuitive what
has to be done. Also coming up with a `work' representation to establish
the fact that the processor is doing work would make it clearer to establish
non-blocking communications. A gear wheel moving round might do this job.
Also adding a collective operation on one process has to be repeated
across all processes. This is potentially misleading not to mention tedious.
This should be enough to give us a better applet to use in the future. It
should also hopefully give the student a good idea of how the underlying
applet works. All of the components in this applet are based on Java beans
so there is no reason why this should not be generalisable. The
possibilities are the following:
- create a drag and drop interface using the Java foundation classes.
- on the left frame MPI programming elements will be found. These
can be picked up and dragged to the canvas on the right. The
first component you would pick up would be an MPI_Init block.
When this is dropped on the canvas a pop up will ask how many
processors. The user will select an appropriate number and then
these will be set up on the canvas.
- subsequent programming will take place by grabbing other MPI blocks
from the left pane and dropping these on top of each of the
processes (a representation for viewing the programming flow
would have to be found). Work blocks could also be added. Each
time a block is dropped an appropriate dialogue will ask the
student for the appropriate information.
- The number of MPI blocks produced will depend on the time
remaining.
As the existing applets have been constructed using Java beans it should not
be overly difficult to implement this framework using the existing beans.
It is felt that this might present a much more intuitive (and easier)
programming.
The final report for this project is available here.
[1] Tom's project summary can be found at:
1998/ProjectSummary/doel.html.