Solving CryptoQuotes with PVM:

Timing Data


Return to Contents Return to Project Reports

Some Notes on Timing

Timing for this project was often erratic, yielding a relatively wide spread of data points. Apparently, the changing the variable which determined the number of iterations each slave computed before checking for messages had little effect on overall performance. Results were distinct, however, for the timing results where the number of machines were changed and when the number of words in the quote was changed. Also, the size of the dictionary seemed to play a significant role. The following data represents average values for iteration/checks values of 1000, 500, and 300.

23,680 word dictionary, average values (in seconds)
Number of Words
# Machines 25 50 75 100 150
3 3.588 6.015 9.759 17.736 30.201
2 4.953 9.595 18.467 37.314 62.636
1 4.380 9.676 17.785 30.582 no test

Speedup for 2 machines, #words = 100 : 0.8196, Efficiency = 41.0%
Speedup for 3 machines, #words = 100 : 1.7424, Efficiency = 57.5%

Clearly, the amount of overhead from message passing is greatly reducing efficiency. Also, the efficiency appears to increase with the number of words, at least with three processors.



Reduction of Message Passing

Previously, the program was passing the entire "cannotbe" list from one task to another, a practice which led to awful bottlenecks and lag time while processors labored at unpacking update files. This was improved in two ways: first the number size of each message was reduced by sending only that which a task itself learned during a pass, not what it learned through updates from other tasks. Secondly, each machine would reduce the need to send updates by first deciding if it discovered anything new one that pass. These two improvements in tandem produced superior results.

23,680 word dictionary, average values (in seconds)
Number of Words
# Machines 25 50 75 100 150
3 2.733 4.797 7.733 10.946 19.523
2 3.939 7.254 11.50 18.328 32.332
1 3.873 7.605 11.460 15.7997 no test

Speedup for 2 machines, #words = 100 : 0.8196, Efficiency = 41.0%
Speedup for 3 machines, #words = 100 : 1.7424, Efficiency = 57.5%


  • Go back to Implementation
  • Go on to Using the Programs


  • Written by:

    Ko-Ming Chang
    Computer Science 397
    Parallel Computing
    Dr. Thomas Whaley
    Washington and Lee University
    Lexington, VA 24450

    Questions? Mail me at kchang@liberty.uc.wlu.edu