COLLECTED BY
Organization:
Alexa Crawls
Starting in 1996,
Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the
Wayback Machine after an embargo period.
this data is currently not publicly accessible.
The Wayback Machine - https://web.archive.org/web/20070703035731/http://www.cs.mu.oz.au:80/498/notes/node30.html
Next: Sorting
Up: Matrix multiplication
Previous: Recursive subdivision
There are many more matrix multiplications, and some that are slightly more efficient than those presented here. We now consider (last but not least) the implementation of Cannon's algorithm (1969).
Cannon's algorithm uses a mesh of
processes that are connected as a torus. Process
at location
initially begins with submatrices
and
. As the algorithm progresses, the submatrices are passed left and upwards.
- Initially
begins with
and
.
- Elements are moved from their initial positions to align them so that the correct submatrices are multiplied with one another. Note that submatrices on the diagonal don't actually require alignment. Alignment is done by shifting the
-th row of
positions left and the
-th column of
positions up.
- Each process,
multiplies its current submatrices and adds to a cumulative sum.
- The submatrices are shifted left and upwards.
- The above two steps are repeated through the remaining submatrices.
The total information received by a process is
bytes to receive the starting submatrix, at most
bytes during the alignment phase, and then another
bytes during the computation. The root process must gather
bytes from each process to complete the result. This is a total of
Cannon's algorithm is suitable when the inputs/outputs of a matrix operation are generated/used locally. In this case, the scatter and gather operations are not required.
New matrix multiplications algorithms have continued to be published into the mid 1990's.
Next: Sorting
Up: Matrix multiplication
Previous: Recursive subdivision
Aaron HARWOOD
2003-10-22