Due by 11:59 pm on Tuesday 11/22

Objectives

  1. Practice designing an efficient parallel algorithm
  2. Analyze a parallel algorithm in terms of work and span
  3. Implement a parallel algorithm using OpenMP

Assignment

As many of you have realized, the problem from Project 1 is better known as tthe RNA Secondary Structure problem, an important problem in biology and genetics. The only difference is that rather than sequences of COMIC-CON fans (G, H, W, T), you work with sequences of RNA bases (A, C, G, U; C pairs with G, A pairs with U). Your task is to design, analyze, and implement a multithreaded algorithm to solve the RNA Secondary Structure problem. You may use a memoized or bottom-up approach, but in either case, your goal is to design an algorithm that makes efficient use of multiple processors.

Once you have designed your multithreaded algorithm, you will need to analyze it. First compute the work T1(n) and the span T(n) where n is the size of the input set X. You should prove your expressions for T1 and T as rigorously as possible. Finally, compute the parallelism and estimate a range of parameters (n and P) for which linear or near-linear speed-up may be expected.

The last part of the project is to implement your RNA Secondary Structure algorithm in C or C++ using OpenMP on UMBC's maya cluster and measure it's performance empirically using 1, 2, 4, and 8 processors (optionally, you may test on 16 processors; most maya nodes have eight cores, but some have 16). You will need to generate test data with variety of different sized input sets and subsets to demonstrate the performance characteristics of your algorithm.

Submission

Your project submission consists of the following:

  1. A written report describing the design, analysis, and empirical performance of your algorithm.
  2. Multithreaded RNA Secondary Structure code and test data.

The written report must be turned-in on Blackboard as either a DOC, DOCX, or PDF file. Code and test data should be archived in a single zip file and submitted on Blackboard.

Grading

Points will be distributed among design, analysis, and implementation as follows:

Hints and Resources