Einstieg in das Thema Multicore-Programmierung ?
-
Hallo,
das Thema Multocore-Programmierung ist komplettes Neuland für mich, daher zunächst gefragt:
Ist Mehrkernprogrammierung zur hohen Kunst der C++ Softwareentwicklung zuzurechnen oder ist es auch für Einsteiger möglich, ein simples Kommandozeilenprogramm für die parallele Bearbeitung in mehreren CPU-Kernen zu erweitern/anzupassen ?
Inwieweit bedeutet Mehrkern-Programmierung eine Änderung des Sourcecodes, inwieweit wird dem Programmierer die Arbeit von den Entwicklungsumgebungen (wie. z.B. Visual Studio 2008 Express Edition) angenommen?
Gib es dazu Infos, die einen Schritt für Schritt in dieses Gebiet einführen?
Danke für jede Info!
Gruß
Sergeant
-
das hat nichts mit c++ zu tun, sondern geht mit jeder sprache in der es threads gibt. Google: programming threads
-
hohoho schrieb:
das hat nichts mit c++ zu tun, sondern geht mit jeder sprache in der es threads gibt. Google: programming threads
Bla bla. Natürlich kann man da eine C++-bezogene Antwort geben!
Man kann sehr wohl darauf verweisen, das man Multithreading oder MPI dafür nutzen kann. Und das man als C++-Programmierer nicht direkt wissen muß, das es sowas wie Multicores gibt. Da dies den Programmierer nicht interessieren sollte, weil diese Aufgabe das Betriebssystem und die Bibliothek versteckt. Und das man doch dafür entsprechende Libraries nutzen sollte.
Für Threads gibt es genug Bibliotheken, wie z.B. Boost.thread [1]. Auch viele Frameworks, wie MFC, Qt u.a., bieten Thread-Klassen an. Und auch der nächste C++-Standard wird endlich offiziell C++ mit Concurrent Programming befähigen.
In Multithreading sollte man sich noch allgemein einlesen, da die Bibliotheken-Dokus nicht sehr tief in das Thema eingehen.
Mit Boost.MPI [2] kann man das nochmal auf die Spitze treiben! Sicherlich für sehr spezielle Fälle, sollte aber nicht unerwähnt bleiben.
[1] http://www.boost.org/doc/libs/1_40_0/doc/html/thread.html
[2] http://www.boost.org/doc/libs/1_40_0/doc/html/mpi.html
-
Gute Auflistung/ Doku für alles mit POSIX:
http://www.qnx.com/developers/docs/6.3.2/neutrino/lib_ref/lib-p.html
-
Artchi schrieb:
hohoho schrieb:
das hat nichts mit c++ zu tun, sondern geht mit jeder sprache in der es threads gibt. Google: programming threads
Bla bla. Natürlich kann man da eine C++-bezogene Antwort geben!
Mehrkernprogrammierung ist aber nicht der "hohen Kunst der C++ Softwareentwicklung zuzurechnen"
Aber zu
Sergeant schrieb:
oder ist es auch für Einsteiger möglich
Möglich ja, aber lern erst mal richtig sauber einfach programme zu entwicklen. Mit Multithreading haben sogar viele erfahrende Programmierer Probleme.
-
hohoho schrieb:
Artchi schrieb:
hohoho schrieb:
das hat nichts mit c++ zu tun, sondern geht mit jeder sprache in der es threads gibt. Google: programming threads
Bla bla. Natürlich kann man da eine C++-bezogene Antwort geben!
Mehrkernprogrammierung ist aber nicht der "hohen Kunst der C++ Softwareentwicklung zuzurechnen"
Was hat das damit zu tun? Nur weil man C++-Quellen angibt, heißt das nicht, das C++ irgendwas "erfunden" hat. Wenn jemand eine C++-bezogene Frage hat, kann man ihm eine C++-bezogene Antwort geben! Weil wenn er allgemein etwas über Threads weiß, kann er noch lange nicht etwas damit praktisch anfangen. Er brauch definitiv einen C++-Hinweis, wenn er es in C++ machen will. Und das geht in seiner Frage eindeutig hervor!
-
Ist HansiHinterseher tatsächlich Artchi...
-
Sergeant schrieb:
Inwieweit bedeutet Mehrkern-Programmierung eine Änderung des Sourcecodes, inwieweit wird dem Programmierer die Arbeit von den Entwicklungsumgebungen (wie. z.B. Visual Studio 2008 Express Edition) angenommen?
naja, der trick ist halt, die arbeit auf alle kerne gut zu verteilen, so dass man 'nen zeitgewinn hat. dazu müssen aufgaben parallelisierbar sein, sonst bringt es nicht viel. bezüglich VS, schau mal hier: http://openmp.org
(die vollversion unterstützt openMP, ob's mit express auch geht, weiss ich aber nicht).hohoho schrieb:
Ist HansiHinterseher tatsächlich Artchi...
klar isser derselbe. merkt doch ein blinder mit krückstock.