online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon MasterOfDisaster vom 08.05.2020, 17:19 Options

Multicore-Programmieren, aber wie?

Hallo,

ich hab ein Programm geschrieben, das eine Flugbahn eines Teilchens (physikalische Simulation) berechnet. Dies macht es zur statistischen Auswertbarkeit, mehrer 10 000mal hintereinander. Es funktioniert wie folgt:

1) Flugbahn ausrechnen
2) Flugbahn wird kurz gezeichnet (optional und nur zur besseren Darstellung)
3) Zähler wird um eins erhöht

diese Schleife wird so lange wiederholt bis der Benutzer eben abbricht.

Lass ich das Programm jetzt laufen, so belastet es nur einen Kern(bei Mehrkern-CPUs) bzw. die Auslastung der Kerne beträgt nur 50 %.

Jetzt meine Frage:

Wie kann ich das Programm oben multicorefähig machen?

Kann mir das jetzt nicht wirklich vorstellen wie das klappen soll, weil es ja nicht zB. zwei Teile gibt die ich gesondert behandeln kann.

Danke schon mal für die Antwort.


Antwort schreiben

Antwort 1 von Jaja vom 09.05.2020, 15:44 Options

da es sich und schleifen handelt und die zu bearbeiteten daten innherhalb dieser schleife scheinbar nicht voneinander (also von ergebnissen vorhergehender iterationen) abhängen, lässt sich das perfekt multithreaded lösen.

wenn es sich so darstellt wie du es beschreibst und ich es verstanden habe sollte sich ein nahezu linearer leistungszuwachs pro recheneinheit einstellen.

schau dir folgende pakete mal an:

POSIX thread lib (pthreads) - wenn du linux nutzt am besten diese (NTPL) implementierung nutzen,

openMP (sollte die simpelste lösung bieten - halbautomatisch sozusagen)



das sind C bibliotheken / erweiterungen um multithread anwendungen zu basteln.
es kostet ein wenig zeit das verständnis/handhabung dafür zu erlernen, aber es lohnt sicher.

nutzt du eine andere sprache als c/c++ so gibts dafür auch lösungen..

Antwort 2 von Jaja vom 09.05.2020, 16:10 Options

aso:

hier ein schöner vergleich zwischen pthreads und openMP.

der vergleich geht kurz gesagt zugunsten von openMP in den allermeisten anwendungsfällen aus.
openMP ist auch viel einfacher anzuwenden..

Antwort 3 von MasterOfDisaster vom 09.05.2020, 16:28 Options

Vielen Dank genau was ich gesucht habe

Ähnliche Themen

MMO(RP)G programmieren
tobi_master2000  22.06.2007 - 229 Hits - 3 Antworten

Stimmgerät programmieren...
credo  15.07.2007 - 45 Hits - 2 Antworten

Spiele Programmieren
simon_365  30.01.2008 - 254 Hits - 5 Antworten

Programmieren lernen!
Bodomchild  13.05.2009 - 295 Hits - 8 Antworten

Compiler programmieren in Delphi
tobsa  10.05.2008 - 115 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026