PARUS
PARUS Project PageEngRussian
Hint
Current state of project may be recieved from Subversion repository.vIn the future we will provide source file release. Binary release will not be available because multiprocessors are very inconstant in software installed on it. If you need in latest version of sources from subversion repository you may type text
«svn co https://parus.svn.sourceforge.net/svnroot/parus/trunk/parus parus»
in command line.

Links
The project is located in MSU and supervised by this seminar.
The SourceForge project information.
Project admin: Alexey Salnikov.
PARUS is a parallel programming language that allows you to build parallel programs in data flow graph notation. Developer or program written by developer creates data flow graph then converts it to C++/MPI source code and links it with PARUS runtime system. The next step is parallel program execution on cluster or multiprocessor system. PARUS implements some approaches for load balancing on heterogenous multiprocessor. There are some MPI tests that allow developer to get information about communications in multiprocessor or cluster.

Most commonly, parallel programs are created with the libraries which generate parallel executable code, such as MPI for cluster and distributed memory architectures, and OpenMP for shared memory systems. The tendency to make parallel coding more convenient led to the creation of software front-ends for MPI and OpenMP. These packages are intended to liberate the user of part of the problems related to parallel programming. Several examples of such front-ends are DVM, Cilk, PETSc, and PARUS, the latter of which is being written by the group of developers headed by the author.

PARUS is intended for writing the program as a data-dependency graph. Writing the program as a data-dependency graph gives the programmer several advantages. In case of splitting the program into very large parallelly executed blocks it can often be convenient to declare the connections between the block and then execute each block on its own group of processors in the multiprocessor system. The algorithm of the problem being solved is represented as a directed graph where vertices are marked up with series of instructions, and edges correspond to data dependencies. Each edge is directed from the vertex where the data are sent from to the vertex which receives the data. It is supposed that the vertex which has received the data will process it some way and then it will send them over to other vertices of the graph. So, the program can be described as a network which has source vertices (which usually serve for reading input files), internal vertices (where the data are processed), and drain vertices, where the data are saved to the output files and the execution terminates. Then the graph is translated into a C++ program which uses the MPI library. The resulting program will automatically try to minimize data trasmission overhead as well as the time of its execution by choosing the processor to execute each vertex of the graph.

Support This Project

Project admin: Alexey Salnikov