
% Template for a simple journal or conference style article

\documentstyle{article}
\begin{document}

\title{\bf CIS 631: Project Description\\ \ \\ Implementation of Farming Under PVM}
\author{Sameer S. Shende}

\maketitle

\begin{description}
\begin{enumerate}
\item Introduction.

The project would focus on implementation of process farms under the parallel virtual machine environment. PVM uses a cluster of workstations to form a heterogenous network based MIMD computing environment. The problems associated with 
such an environment are that to form a parallel application, typically point 
to point communication constructs are provided to distribute data in a data parallel approach. Most parallel applications need some form of load balancing 
technique to equitably distribute work packets and keep all processors busy.
This is usually a static off line mechanism in which a particular application
is evaluated for a particular problem and the log is examined to place the
tasks on the nodes. The application has to explicitly distribute the data so as to have equal load on all processors.
The applications where identical data packets require different 
processing times, it is difficult for the application writer to estimate the
computation times apriori to balance the load. 

\item Farming.

The above concerns are effectively addressed by the farming. In the farming 
approach, the operating environment provides the distribution of work 
packets and routes these to idle worker tasks and balances the load 
on the worker tasks optimally at runtime. In this approach to data parallel
programming, the application task is split up in the form of one or more farms
of processes. Groups of tasks which perform an identical 
function come together to form a worker class. A farmer may be associated with
multiple worker classes (consisting of many worker tasks each). However, a
worker task can be associated with one and only one farmer task.

In a hierarchical process farm, a task assumes the role of a farmer and it divides the work into many small data packets. These packets  are independent of each
other. The farmer then sends these packets to the environment without addressing
these to individual tasks. The environment then determines which worker task
is idle or has the least amount of load in terms of packets in the queue and
sends the data packets to the worker. The onus of keeping the worker tasks busy
is on the environment. This way, a farmer task can address a packet 
collectively to a process farm and be assured that some worker task will
receive the work packet, process it, formulate the reply packet and
send it to the farmer task. This is done in a user transparent manner.

So, this project will aim at making the environment (farmer router daemon) which
will be responsible for the effective routing of these work packets to the
destination. 

\item Implementation
Providing the farming constructs will involve 
\begin{itemize}
\item
Making the daemon which will run on top of pvm and have a pvm connection 
with the farmer task and the worker tasks. This shall be responsible for
enrolling tasks in the process farm, maintaining data on the different worker
classes, and the current distribution of work packets. It shall receive reply
packets and forward these to the respective farmer tasks. This will be responsible for dynamic load balancing which should lead to better data distribution
among worker tasks.
\item
Defining and implementing the parallel constructs used for farming and constructing the user
callable library which will be integrated with other pvm functions. Defining 
the functionality of the constructs will be included in this too.
\item
Defining the protocol for inter process communication and other handshaking
protocols for use between the farmer task and the router daemon, and the router
daemon and the worker tasks.
\end{itemize}

 
In this manner, it is proposed to implement farming under the pvm environment.
\end{enumerate}
\end{description}
\end{document}

% ------------ end of document ----------------------

% here are some templates of different environments you can cut and paste:

\begin{figure}
\vspace{3in}
\caption{}
\end{figure}

\begin{itemize}
\item
...
\end{itemize}

\begin{enumerate}
\item
...
\end{enumerate}

