Home
Theory
Research
Papers
Software

AgWorld
Ant.NET

Contact
Links

 
 

 


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.

 


Copyright © Intelligent Information Systems Group