Beste mensen,
Ik heb dit topic hier geplaatst, dit leek me het best passend.
Voor een project ben ik bezig met zogenaamde 'sequence alignment'. Dit is een vorm van dynamisch programmeren dat ik in mijn geval gebruik voor DNA-alignment. Hierbij worden twee files met DNA-sequenties (dus A,T,C,G) met elkaar vergeleken. Opzich is dit geen probleem en kan dit heel erg snel. Zo is het percentage overeenkomst tussen twee databestanden ook simpel te berekenen.
Het wordt echter ingewikkelder als je ook addities en deleties wilt meenemen in de DNA-analyse. Een additie in een DNA-streng is het tussenvoegen van een base, een deletie is het verwijderen ervan. Zonder een speciaal algorithme zou na 1 additie of deletie het percentage overeenkomstige basen sterk dalen. Dit is natuurlijk niet de bedoeling.
Met DNA-alignment kun je door middel van het Needleman–Wunsch algoritme deze addities of deleties kan opsporen. Hiervoor bestaat ook speciale software zoals BLAST.
Deze taken zijn bij grote DNA-strengs zeer CPU en RAM intensief. Op mijn systeem (specs, zie verder) kon ik nog wel twee soorten bacteriën (4,7 miljoen baseparen elk) vergelijken, maar ingewikkeldere sequenties (twee chromosomen van bijv. de mens en de kip) duurt zeer lang. Zo lang dat ik de run niet heb afgemaakt.
Nu las ik over verschillende technieken om voor deze intensieve bewerkingen één of meerdere videokaarten te gebruiken. Hiervoor bestaat oa nVidia CUDA maar ook ATi Stream. Na een aantal benchmarks gezien te hebben bleek in sommige gevallen CUDA beter te presteren, en in sommige gevallen Stream.
Bij de specificaties van de kaarten viel me nog meer op. Zo zitten ze high-end kaarten van nVidia rond de 200 CUDA-cores per videokaart, terwijl ATi vaak honderden of zelfs duizenden cores op een plaatje krijgt. Zo heeft het topmodel, de ATI Radeon HD 5970, al 3200 streamprocessors. Recente benchmarks zijn vrij schaars, en al helemaal met dit soort wetenschappelijke taken.
Natuurlijk speelt het kostenplaatje ook een rol. De nVidia GTS250 vind ik best aardig geprijsd, maar de Radeon HD5770 (50 euro duurder) bevat wel 4 maal zoveel verwerkingseenheden.
Tenslotte is BLAST volgensmij alleen herschreven voor CUDA. Ik zou moeten kijken naar andere applicaties voor Stream support vermoed ik, tenzij BLAST (public domain) aan te passen is voor ATi Stream.
Kunnen jullie hier eens je licht over laten schijnen? Laat maar weten als het één of ander niet duidelijk is, dan zal ik het proberen verder uit te werken.
Specificaties systeem:
- AMD Phenom 9500
- 4 GB RAM
- 80 GB Intel SSD X-25
- (op dit moment) ATi Radeon HD 2600 Pro
Ik heb dit topic hier geplaatst, dit leek me het best passend.
Voor een project ben ik bezig met zogenaamde 'sequence alignment'. Dit is een vorm van dynamisch programmeren dat ik in mijn geval gebruik voor DNA-alignment. Hierbij worden twee files met DNA-sequenties (dus A,T,C,G) met elkaar vergeleken. Opzich is dit geen probleem en kan dit heel erg snel. Zo is het percentage overeenkomst tussen twee databestanden ook simpel te berekenen.
Het wordt echter ingewikkelder als je ook addities en deleties wilt meenemen in de DNA-analyse. Een additie in een DNA-streng is het tussenvoegen van een base, een deletie is het verwijderen ervan. Zonder een speciaal algorithme zou na 1 additie of deletie het percentage overeenkomstige basen sterk dalen. Dit is natuurlijk niet de bedoeling.
Met DNA-alignment kun je door middel van het Needleman–Wunsch algoritme deze addities of deleties kan opsporen. Hiervoor bestaat ook speciale software zoals BLAST.
Deze taken zijn bij grote DNA-strengs zeer CPU en RAM intensief. Op mijn systeem (specs, zie verder) kon ik nog wel twee soorten bacteriën (4,7 miljoen baseparen elk) vergelijken, maar ingewikkeldere sequenties (twee chromosomen van bijv. de mens en de kip) duurt zeer lang. Zo lang dat ik de run niet heb afgemaakt.
Nu las ik over verschillende technieken om voor deze intensieve bewerkingen één of meerdere videokaarten te gebruiken. Hiervoor bestaat oa nVidia CUDA maar ook ATi Stream. Na een aantal benchmarks gezien te hebben bleek in sommige gevallen CUDA beter te presteren, en in sommige gevallen Stream.
Bij de specificaties van de kaarten viel me nog meer op. Zo zitten ze high-end kaarten van nVidia rond de 200 CUDA-cores per videokaart, terwijl ATi vaak honderden of zelfs duizenden cores op een plaatje krijgt. Zo heeft het topmodel, de ATI Radeon HD 5970, al 3200 streamprocessors. Recente benchmarks zijn vrij schaars, en al helemaal met dit soort wetenschappelijke taken.
Natuurlijk speelt het kostenplaatje ook een rol. De nVidia GTS250 vind ik best aardig geprijsd, maar de Radeon HD5770 (50 euro duurder) bevat wel 4 maal zoveel verwerkingseenheden.
Tenslotte is BLAST volgensmij alleen herschreven voor CUDA. Ik zou moeten kijken naar andere applicaties voor Stream support vermoed ik, tenzij BLAST (public domain) aan te passen is voor ATi Stream.
Kunnen jullie hier eens je licht over laten schijnen? Laat maar weten als het één of ander niet duidelijk is, dan zal ik het proberen verder uit te werken.
Specificaties systeem:
- AMD Phenom 9500
- 4 GB RAM
- 80 GB Intel SSD X-25
- (op dit moment) ATi Radeon HD 2600 Pro