ParJava

Implementation of parallel programs interpreter in the development environment ParJava The implementation of the ParJava development environment is considered that enables one to develop parallel applications in the modern programming language Java within the industrial standard MPI. The internal representation of the SPMD program model is described, which is constructed so as to place as much of the interpretation work of a parallel Java program on JavaVM. Features of the model generation and its preparation to the interpretation are described. The model generator transforms the abstract syntax tree of each method of the program being simulated into a model of the control flow, forms a computation model that will be executed on JavaVM, and forms a module for evaluating the execution times of the basic blocks. The interpretation of the model executed on p nodes of a parallel computing system (cluster) is performed in p logical processes of which each is executed in an individual thread. The interpretation of a logical process assumes that all its methods beginning from the main method are interpreted. The interpretation of each method consists in executing the computation model of this method on JavaVM. The order of interpretation of the method’s basic blocks is determined by the system interpreter of the method’s model. The system makes it possible to reduce parts of the model and interpret the model by parts. Problems of the simulation and interpretation of communication functions are discussed. The communication functions are described using nine basic exchange operations. To evaluate the time needed to transfer data between processes, an empirical dependence between the amount of the transferred data and the transfer time is used, which is obtained using tests. A short description of the ParJava graphical interface is presented. Applications developed using the proposed implementation of the system are platform independent; and the development, tuning, and maintenance overheads for those applications are considerably reduced. This is a contribution to the development of high-productive parallel applications