C-Programm um Threading erweitern?

08/02/2008 - 12:07 von Chris | Report spam
Moin,
ich habe hier ein kleines OpenSource C++-Programm, welches man zu Berechnungen im
Bereich der genetischen Epidemiologie nutzen kann.
Das ganze kompiliere ich unter Mac OSX auf der Konsole.
Steuern laesst sich das Programm ueber ein Java-Frontend.
Nun habe ich hier schoen einen Doppel-Processor-Quadcore Macpro, den ich gerne
auslasten wuerde.
Leider kann das Programm aber nicht threaden, daher wird immer nur ein Core
genutzt, die anderen sieben sind idle und das Programm rechnet schonmal 20h:-/
Da kann ich auch mein singlecore Macbook nehmen... :-(
Ich habe nun zwei Probleme:
Einmal bin ich bei C++ nicht sooo bewandert (C schon), und zweitens habe ich
noch nie mit Threads gearbeitet.
Daher also zwei Fragen:
Wie erweitere ich das Programm um Threading-Funktionalitaet?
Ist das schwierig/aufwendig?
Ein partieller Threading Support wuerde eventuell schon reichen, am laengsten
dauert das Berechnen der Haplotypen.
Den Quellcode gibts uebrigens hier:
http://www.mrc-bsu.cam.ac.uk/person....12.tar.gz
Vielen Dank im Voraus,
Chris
 

Lesen sie die antworten

#1 Rainer Weikusat
08/02/2008 - 12:55 | Warnen spam
Chris writes:
ich habe hier ein kleines OpenSource C++-Programm, welches man zu Berechnungen im
Bereich der genetischen Epidemiologie nutzen kann.
Das ganze kompiliere ich unter Mac OSX auf der Konsole.
Steuern laesst sich das Programm ueber ein Java-Frontend.
Nun habe ich hier schoen einen Doppel-Processor-Quadcore Macpro, den ich gerne
auslasten wuerde.
Leider kann das Programm aber nicht threaden, daher wird immer nur ein Core
genutzt, die anderen sieben sind idle und das Programm rechnet schonmal 20h:-/
Da kann ich auch mein singlecore Macbook nehmen... :-(
Ich habe nun zwei Probleme:
Einmal bin ich bei C++ nicht sooo bewandert (C schon), und zweitens habe ich
noch nie mit Threads gearbeitet.
Daher also zwei Fragen:
Wie erweitere ich das Programm um Threading-Funktionalitaet?
Ist das schwierig/aufwendig?



Nicht grundsaetzlich, ausser insofern fehlende Kenntnisse (zB der
einzelnen Funktionen) erst erworben werden muessen.

Ein partieller Threading Support wuerde eventuell schon reichen, am laengsten
dauert das Berechnen der Haplotypen.



Grundsaetzlich, in dem Du die Berechnung in voneinander unabhaengige
Einzelberechnungen, die jeweils nur einen Teil des Eingabedatenraums
bearbeiten, aufteilst, diese in mehreren threads ausfuehren laesst und
'am Ende' mit Hilfe eines 'geeigneten Synchronisations-primitives'
(barrier) die einzelnen Teilergebnisse zusammenfuegst.

Ähnliche fragen