Download doc-engl - Institute for System Programing

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
The User Manual Of ParJava Environment.
I.
INTRODUCTION.
The ParJava environment allows to edit, debug and execute parallel programs on
homogenous and heterogeneous shared-memory computing resources (a supercomputer, a
cluster or a LAN). This environment also enables to model homogenous computing resources on
heterogeneous ones. The main advantage of the ParJava environment is the opportunity to
execute a parallel program without any modification or transformation on a scalable computing
system.
A user interface of ParJava environment can be lunched on one of nodes of a parallel
computing system.
II.
INSTALLATION.
In spite of the fact that the ParJava environment has been implemented by the Java there is a
platform depended part of libraries, which deal with MPI. The implementation of a massage
passing layer by pure Java is actual problem for us, and a solution of it will allow to get full
portability of ParJava libraries.
At the current moment there are two types of the ParJava distributions:

The first one is an archive file included source codes of native-libraries;

The second one is an archive file included precompiled native-libraries intended for
Solaris and Linux OS.
In the first case compilation of native-libraries is needed. In the last case it is enough to
unpack the archive file and set environment variables.
Installation of the ParJava distribution included source codes of native-libraries:
1. The first, please make sure that following software is installed:

ND LAM – It is the implementation of message passing interface (MPI). The
ParJava environment has been implemented with using the 6.3.1. version of the
LAM.

JDK 1.2. (or later) – The Java Development Kit is the Java run time system, the Java
compiler, the Java API, and other.

GCC 2.95 – It is the C/C++ compiler by GNU, which needed to create nativelibraries.
2. To compile native-libraries it is necessary to make sure that the JAVA_HOME, LAMHOME
environment variables are presented and point to directories contained the JDK and LAM. If
these variables are not presented, please set its manually into your configuration files
NOTE:

Moreover, to avoid conflicts concerned with the LAM tools execution we
recommend to set path to the JavaVM place as the first entry in the PATH
environment variable. (for example, PATH=$JAVA_HOME/bin:<…>).
3. Extract the ParJava.tar.gz archive file
#gunzip ParJava.tar.gz
#tar xvf ParJava.tar
4. The ParJava directory will be created. This directory contains libraries of the ParJava
environment. To install (to compile native-libraries, to prepare the .PJ configure directory and
etc.) you have to execute setup inside of it.
#./setup
5. Please, add the ParJava/classes path to the CLASSPATH and the ParJava/lib to the
LIBRARY_PATH.
6. To lunch the ParJava environment you should execute the dev command inside ParJava
directory. #dev&
Installation of the ParJava distribution included precompiled native-libraries for the
Solaris and the Linux OS:
1. The first, please make sure that following software is installed:

ND LAM – It is the implementation of message passing interface (MPI). The
ParJava environment has been implemented with using the 6.3.1. version of the
LAM.

JDK 1.2. (or later) – The Java Development Kit is the Java run time system, the Java
compiler, the Java API, and other.
2. Extract the ParJava-Linux-i386 archive file if you have the Linux or ParJavaSolaris-sparc in the Solaris case.
#gunzip <the archive file name>.tar.gz
#tar xvf < the archive file name>.tar
3. The ParJava directory will be created. This directory contains libraries of the ParJava
environment. To install (to compile native-libraries, to prepare the .PJ configure directory and
etc.) you have to execute setup inside of it.
#./setup
5. Please, add the ParJava/classes path to the CLASSPATH and the ParJava/lib to the
LIBRARY_PATH.
NOTE:

Moreover, to avoid conflicts concerned with the LAM tools execution we
recommend to set path to the JavaVM place as the first entry in the PATH
environment variable. (for example, PATH=$JAVA_HOME/bin:<…>).
6. To lunch the ParJava environment you should execute the dev command inside ParJava
directory. #dev&
NOTE: If you have any problems caused by installation, please send your questions to
[email protected]
III.
EXECUTION OF PARALLEL PROGRAMS.
TOOLS: The access to facilities allowed executing of parallel programs on a parallel computing
system is provided by the “Tools” menu item of the main window of the environment GUI.
New Net – Using the «New Net» menu item of ParJava GUI a user can chose nodes
which form a computing network The parallel program will be performed on this network.
When this item was clicked a dialog box is appeared. The dialog box contains two lists. The first
one is a list of accessible nodes of a parallel computing system. The second one is a list of nodes
included to computing network. With the help of the «add», «add all» and «remove» buttons a
user can make computing network, to add or remove nodes from the appropriate list.
NOTE:

A user MUST form a computing network before the first lunching of parallel
program.

The ParJava environment is lunched on one node of a parallel system. This node is
inserted to the computing network automatically. The “root” identifier in the
brackets add to name of the node.

The list of accessible nodes of parallel system is formed by the .rhosts configure
file. If this file is lack, you have to create it manually make use of UNIX
documentations.

Then working of ParJava is finished, a current state of environment is stored
including the list of nodes of computing network.
Hosts Performance – To determine the relative performance of nodes of computing
network. Then this item is chosen, benchmarks are made. This benchmarks allow to determine
relative performances of JavaVM running on each node of a computing network. The most
powerful node we assign equal 100 percents and performances all others nodes of computing
network are calculated relative this node.
Compile – Using the «Compile» item of main window of ParJava environment a user can
compile a Java program. If this item was involved, a dialog box where you can set a mode of
compile process is showed. The default mode is
javac <full path><class name>
Messages of compilation process (warning, errors and etc.) are taken out to a separate
window.
NOTE:

The JDK compiler is used by default.

The JDK must be installed before. For more information make use JDK
documentation.
Run – Using «Run» item of main window a user can execute sequential Java program. If
this item was involved, a dialog box where you can set a mode of execution is showed. The
default mode is
java <class name>
Run on Homogeneous Net - Using this item of main window a user can execute a
SPMD Java programs on a HOMOGENIOUS network of the Java virtual machines. The
homogeneous network is modeled on the current computing one with optimal quantity of nodes.
If this item was involved, a dialog box where you can set a mode of execution is showed. For
more details you can get the documentations and articles described the ParJava on the
www.ispras.ru/~JavaP.
Run on Heterogeneous Net - Using this item of main window a user can execute a
SPMD Java programs on a HOMOGENIOUS network of the Java virtual machines. For more
details you can get the documentations and articles described the ParJava on the
www.ispras.ru/~JavaP.
NOTE:

It is necessary to note that a node is excluded from computing network if its
relative performance is less them 10 percent
ANALYZERS: When a sequential program is tested and debugged, it is necessary to
provide its correctness, efficiency and stability. In the case of a parallel program, it is necessary
to provide scalability too. For this purpose it is useful for a developer to know some properties of
the program. In particular, it is profiles of the program. An effective distribution of SPMDprogram on nodes of a heterogeneous network demands the knowledge of the program
parameters, which define actual speed of the program execution on each node of the network.
The ParJava environment has tools to determine these parameters. It is the “Analyzers” item of
the menu. The “Instrument” and the “Profile” tools allow to estimate costs of execution time of a
sequential program part. It enables to take into account a weight of the sequential part, when a
performance of nodes is calculated.
Trace Visualization – When a parallel program is executing a user can get a trace
information. (see the Test_mode item). To visualize the trace you should involve the
«TraceVisualization» item of the main menu.
The “TraceVisualization” tool displays an each parallel branch of SPMD-program as a
horizontal line. Calls to the communication library are marked on this line by small squares. A
temporal bar is displayed on the top of the image. A time of communication function call can be
defined in milliseconds by using this bar. Numbers presents the communication functions on the
image for convenience of representation. For example, one number presents the Init() function,
but two number represents the Finalize() function. The full legend you can see on appendix “A”.
If the small square with number of function was covered by cursor, a hint appears. It contains a
name of a communication function and a relative time of execution. A green line bridges some
small squares to show that a branch of parallel program invokes a communication function and
an expectation for external event is started to complete this function. A length of the green line is
proportional a time of expectation for external event of function (the expectation for a data, for
example). If a button on the left side of the image was clicked by the cursor, the idle time of each
processor will be calculated and showed on a diagram in the milliseconds. To get the diagram of
all processors it is necessary to click the “All” button. The result of program profiling is stored
automatically into system files. These files are accessible to users by the “TraceVisualization”
tool. The names of system files consist two parts. The first part is number of executing program.
The second part is number of process. When visualization of scheme has started up, the scale of
viewed time segment is defined automatically by size of image. Further, user can change the
scale. A user can select a lot of trace by two red borders and click the “Zoom In” or “Zoom out”
buttons to change a scale of viewed time segment.
Instrumentate – A program is instrumented. The tool inserts debugging calls to a timer.
It is implementing.
Profile – The tool makes a dynamic profile of a parallel program. It is implementing.
Normal_mode – It is default mode.
Test_mode – It is the mode to translate a parallel program on the test one. A debugging
library will be used in this mode. If the “Test_mode” mode is established, an each branch of
parallel program collects a history of parallel execution in the special file. All events bounded
with parallel execution are written in this file. An absolute time of a branch whole execution and
a time between parallel events are presented. For example, an all calls of communication
functions are these events. The special file contains also an additional information about the
events (a size of the event, a source and a target of the event, a number of a Java code sting, etc.)
The file is created automatically by a debugging library. A user can visualize the stored history
of parallel program execution by the “TraceVizualization” item of the menu.
APPENDIX «А». Conformity of codes numbers to MPI function names.
0 Init
1 Finalize
2 Wtime
3 Wtick
4 Get_processor_name
5 Initialized
6 Buffer_attach
7 Buffer_detach
8 clone
9 Size
10 Rank
11 Compare
12 Free
13 Is_null
14 Group
15 Test_inter
16 Create_intercomm
17 GetIntercomm
18 Object_Serialize
19 Object_Deserialize
20 Send
21 Recv
22 Sendrecv
23 Sendrecv_replace
24 Bsend
25 Ssend
26 Rsend
27 Isend
28 Ibsend
29 Issend
30 Irsend
31 Irecv
32 Send_init
33 Bsend_init
34 Ssend_init
35 Rsend_init
36 Recv_init
37 Pack
38 Unpack
39 Pack_size
40 Iprobe
41 Probe
42 Attr_get
43 Topo_test
44 Abort
45 Errhandler_set
46 Errorhandler_get
47 Disconnect
48 Get_parent
49 Join
50 clone
51 Remote_size
52 Remote_group
53 Merge
54 clone
55 Split
56 Creat
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Barrier
copyBuffer
newBuffer
Bcast
Gather
Gatherv
Scatter
Scatterv
Allgather
Allgatherv
Alltoall
Alltoallv
Reduce
Allreduce
Reduce_scatter
Scan
Create_cart
Create_graph
Spawn
Spawn( ... , int[] array_of_errcodes)
Spawn_multiple
Spawn_multiple( ... , int[] array_of_errcodes)