Your project consists of implementing and executing a parallel MPI spelling checker that seeks to achieve load balancing through dynamic data(work) distribution. That is, there is no fixed static data distribution scheme, but tasks are distributed at runtime as a worker completes a task and needs more work to do.
Basic Spelling Checker Operation:
The spelling checker that you are to implement will also be very simple.
Your spelling checker will ask the user for a word to check, read
in a dictionary of words from a dictionary file,
and then dispatch searching tasks to the
processors. The program should report if the word is spelled correctly.
If the word is incorrect, then words in the dictionary that
are within one mismatch of the word or within one gap of the word
should be reported.
For example:
TOOO = word to check TOOL = word within one match TOO = word within one gap AOOO = word within one match
A serial version of the spelling checker is located on porsche in pollock/public/seqdict.c. A dictionary file of over 25K words is there also, called dictionary. Look at the sequential code, and compile and execute it to see how it works.
A Parallel Version:
For your parallel version:
You should perform several experiments with your code. Be sure not to include the input and output as part of your timings. Be sure to take several timings for the same data point, but you only need to present the average of them after you are convinced you have a stable number for that data point, in your graphs below.
Your experimental report should consist of the following sections in this order. It is strongly recommended that you type your report using a word processor rather than handing in a hand-written report.
You should have a graph for each experimental comparison study performed, thus, 2 graphs.
SPECIAL NOTE: This assignment requires a dictionary file of considerable length. For this, create a link to pollock/public/dictionary by ln -s pollock/public/dictionary dictionary. This dictionary has over 20,000 words, one per line. In order to avoid excess network traffic (and getting me in trouble by slowing down the system!), be sure to have only the master process reading from the dictionary. Do not have the workers all reading from the dictionary file.
ALSO A NOTE ON INDIVIDUAL VERSUS GROUP ASSIGNMENTS: This is an individual assignment, not a group assignment. You should not be collaborating with other students. You may talk to each other to clarify the specification of the assignment, but your solution should be your own.
This document was generated using the LaTeX2HTML translator Version 98.1p1 release (March 2nd, 1998)
Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
The command line arguments were:
latex2html -split 0 lab3.tex.
The translation was initiated by Lori Pollock on 2000-04-12