Parallel Numerical Computing on Shared Memory Machines
Synopsis
Small shared memory machines with 2, 4 or 8 processors are becoming
increasingly common, and parallel processing can be done with p-threads
under the free operating system linux. Matlab does not currently support
multiprocessors on PCs, suns, etc. (But it does on SGIs). This project
involves the parallel implementation of one (required) or more (suggested)
common matrix subroutines in p-threads in linux, 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
- Figure out how to compile and call p-threads from within matlab
under linux.
- Write parallel routine using p-threads. It may be easiest to first
test the routine independent of matlab, then convert it to a mex call.
- 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 memory layout and locality to make good use of cache and
minimize virtual memory paging for large matrices.
- Benchmark your routine against matlab built ins for varying size
matrices.
References