Cannon's Algorithm

    This implementation computes the product of two nxn matrices. Those
matrices are stored in the file "initmatrix.c". The variables n and nproc
in the graph are the dimensions of the matrix and the processor array,
repectively. If the dimension of the matrix in initmatrix.c is changed,
n must be changed accordingly, and nproc may also need to be changed so
it divides n evenly.
    Key files:
	mmu.c --- a simple matrix multiplication program to test the results
		of Cannon's.
	cannon.c --- a sequential implementation of the algorithm.
	mm.gr --- the HeNCE graph.
	cost.mat --- the cost matrix.
    The algorithm: ("Parallel Numerical Algorithms", Freeman & Phillips.)
	o Step 1
	  (a) Shift my block of "A" i places to the West.
	  (b) Shift my block of "B" j places to the North.
	  (c) Update my block of "C" by adding to it the product of my
		new blocks of "A" and "B".
	o Step k, for k = 2,3,...,p
	  (a) Shift my block of "A" one place to the East.
	  (b) Shift my block of "B" one place to the South.
	  (c) Update my block of "C" by adding to it the product of my
		new blocks of "A" and "B".


Weicheng Jiang
