AgWorld
AgWorld is a library of C++ classes implementing mainly agent-based evolutionary computation systems,
according to EMAS and flock-based MAS models based on PVM.
Informations according to the project
can be found on Source Forge.
PVM
PVM (Parallel Virtual Machine) arose in 1989 at Oak Ridge National
Laboratory as a result of research on heterogeneous networks. This
approach aroused so much interest of wide range of users (mainly
of course researchers and scientists) that PVM has become in fact
the standard solution which - beside Message Passing Interface
(MPI) and High Performance Fortran (HPF) - is widely used in
parallel and distributed computing. The main task of this software
package is to change a set of networked, heterogeneous computers
into one virtual machine which is perceived by users as a one
powerful computing center. Possibility of using a heterogeneous
collection of computers means - on the one hand - that we can
forget about differences between serial, parallel and vector
architectures of contemporary computers, but on the other hand
that we can also omit differences between operating systems
installed on our machines. In other words the key feature of
Parallel Virtual Machine is hardware and software independence
even at a price of lower efficiency.
PVM has also others very useful features which are especially
important in the aspect of distributed systems. First
of all PVM ensures that we can freely start and stop processes and
easily check which processes are working and alternatively where
these processes are working within our virtual computer.
Furthermore this environment makes possible to obtain information,
how many processes can we still start taking advantage of
accessible resources. The next very interesting characteristic of
the Parallel Virtual Machine is a support for many programming
languages what means that within virtual machine processes written
in different programming language (for example in C/C++ or
Fortran) can interact and exchange communicates. It is possible
because PVM ensures correct interpretation of these messages and
data conversion if necessary. In aspects of load balancing, task
migration and reliability it is not of no significance that
applications which are running on Parallel Virtual Machine can
dynamically change parameters of the computational environment
what means that environment is able to increase the computational
power when additional resources are needed because workstations
can be freely added to or removed from our virtual computer. PVM
delivers also - in the form of communicates - error diagnosis
mechanism. These messages depend on error code and can be
delivered to every process running on virtual machine. Thanks to
this feature our systems are getting more reliable and the risk
that our long-lasting simulations will be interrupted because of
problems with - for example - workstations within virtual computer
is getting lower. Finally it is necessary to mention that PVM is
commonly considered as a standard of parallel computing - although
it has never become an official standard. The very important
consequence of the ,,standardisation'' of this package is, that any
software developed on any Parallel Virtual Machine can be easily
started on any other installation of PVM.
Design issues
PVM implements full process control, i.e. it makes possible to start and stop
processes in system
and as well checking which processes are working and alternatively
where these processes are working. Environment makes possible to obtain
information how many processes can we still start taking advantage
of accessible resources. Although user has control over all processes,
often checking of process states results in slowing down the whole system.
That is why the whole system should contain only several processes.
PVM is good to implement systems that should not be parallelised to a great extent.
E.g. coarse-grained parallel applications, EMAS systems, flock-based multi-agent systems,
so the application which are able to perform relatively complex processes of computation.
PVM is definitely not a good choice for implementing fine-grained systems. The communication
features of the platform would critically affect the performance of the whole system.
Communication between the entities was done using message passing feature
of PVM. It is to notify that these functions should not be called to often,
in order to maintain acceptable performance.
Migration was implemented along with communication, but the entity before migrating
has to be properly encoded (there is no serialisation feature) and sent using
message passing.
Reproduction was based only on programming language features, and selection
basing on existing shared resources was implemented using barrier synchronisation.
Individuals were implemented as objects.
Management of individuals and environments was fulfilled taking advantage of standard
functions accessible in used programming language.
|