Distributed Numerical Computing on Networked PCs and
Workstations
Synopsis
Perhaps the most economical way to do multiprocessing is through distributed
networked PC computers using packages such as pvm or mpi. This be implemented
on both small clusters of PCs, but the principle scales well to even the
largest parallel processor installations currently in use (so called Beowulf
systems).
This project is similar to project one, but instead of a shared memory
implementation you will need to write a parallel program using message passing.
It
involves the parallel implementation of one (required) or more (suggested)
common matrix subroutines in pvm, and the linking of this
routine using the matlab dynamically linked "mex" function prototype.
Suggestions for routines to implement are:
- Matrix multiplication (easy)
- Equations system solution
- Eigen value, vector decomposition
- SVD factorization
- Your suggestion
Suggested steps and deliverables
- Write a pvm slave routine to receive communication. Write a matlab
mex function interface to start and call the slave routine.
- Write parallel routine using pvm and message passing.
It may be easiest to first
test the routine independent of matlab, then convert it to a mex call.
- Write a linux and pvm version (required) and compile it also for sunos (suggested).
- integrate seamlessly in matlab, e.g. so that your [v,d] = peig(A)
runs your parallel code and is called exactly as matlabs built in
[v,d] = eig(A), and same for the similar calls, e.g. matlab's "eigs"...
- Consider how to optimize the computation both w.r.t. each pvm
process as well as minimizing the need for communication between the
pvm routines.
- Benchmark your routine against matlab built ins for varying size
matrices.
References