Allerdings haben sich auch die Computer stark weiterentwickelt. Heutzutage besitzen normale PCs mehrere Rechenkerne die es ermöglichen Befehle parallel auszuführen. In diesem Projekt soll der Needleman-Wunsch Algorithmus mittels OpenMP parallelisiert werden. Der typische Ansatz um die DP-Matrix zu parallelisieren ist es die Antidiagonalen zu berechnen (siehe Bild), da hier zwischen den Zellen keine Datenabhängigkeiten existieren.
Im Rahmen dieses Softwareprojektes soll der Needleman-Wunsch Algorithmus mit OpenMP parallelisiert werden. Es soll ein Programm geschrieben werden, das 2 Sequenzen einliest und zwischen diesen ein Alignment berechnet. Des Weiteren wird dem Programm die Werte für die Scoringmatrix sowie die Anzahl der Threads übergeben. Das Programm berechnet das Alignment und schreibt das Ergebnis (Score und Alignment) in eine Datei, die von dem Nutzer übergeben wurde.
Anschließend soll die Laufzeit des parallelisierten Needleman-Wunsch mit dem seriellen aus der SeqAn-Bibliothek verglichen werden. Dabei sollen verschiedene Testdatensätze evaluiert und grafisch Dargestellt werden.Das Programm soll affine Gapkosten unterstützen.
In der Erweiterung soll dem Program ein weiterer Parameter für die Blockgröße übergeben werden. Die Matrix soll dann iterative in die Blöcke geteilt und anschließend die Blöcke in Antidiagonalen parallel berechnet werden.
Die folgenden Teile von SeqAn sind relevant:
[1] Needleman, Saul B., and Christian D. Wunsch. "A general method applicable to the search for similarities in the amino acid sequence of two proteins." Journal of molecular biology 48.3 (1970): 443-453.
[2] Chowdhury, Rezaul Alan, Hai-Son Le, and Vijaya Ramachandran. "Cache-oblivious dynamic programming for bioinformatics." IEEE/ACM Transactions on Computational Biology and Bioinformatics (TCBB) 7.3 (2010): 495-510.