From Earlham Cluster Department
Folding, but not your laundry
This problem is based on the processes and chemistry used by chains of amino acids to "fold" into proteins. The structure of the problem is from Project Euler Problem 300, you should become familiar with their description before proceeding.
1) Design a parallel algorithm which, given an arbitrary string of H and P elements, finds the conformation with the maximum number of H+H bonds.
Note that the algorithm can, although doesn't have to be, embarrisingly parallel; that is it can use LittleFe to examine each potential arrangement individually in a parameter space search approach rather than using an algorithm that is parallel for each particular conformation.
2) You will likely want to use MPI, OpenMP, or CUDA to solve your problem. Hybrid approaches which combine two or more of these are also permitted.
3) Test and refine your implementation using user supplied data sets that conform to the input specifications found in the Project Euler problem.
4) Run your program using the test string provided below, your software's output should closely resemble this format (note, this is an example only):
Input string: HHPPHHHPHHPH Number of H+H bonds in best conformation: 9 Grapical representation (ASCII) of the best conformation: PHH HHHP HHH PP
Turn-in a write-up which describes your approach in detail and your complete source code. Partial credit will be given for partial solutions, that is a reasonable description of an approach/algorithm with a partial implementation of the solution. Source code without a detailed explanation will not earn any credit.
5) Test data: HHHPHHPPHHPHH