Forum: Mikrocontroller und Digitale Elektronik paralleles programmieren in c++?


von Messheini (Gast)


Lesenswert?

Kann man in c++ nicht auch irgendein klassen-framework basteln, dass 
paralleles programmieren vereinfacht. bzw. es dann so einfach macht wie 
das hier:

http://concurrency.cc/

ftp://ftp.cs.kent.ac.uk/people/staff/phw/.1011-old/cpa-2011-pdfs/10-jaco 
bsen.pdf

http://christian.lyderjacobsen.org/publications/pdfs/concurrent-event-driven-programming-in-occam-pi-for-the-arduino-slides.pdf

von Noch einer (Gast)


Lesenswert?

Problem ist eher, dass es 1000 inkompatible Klassen-Framework gibt, die 
auch noch inkompatibel zur Stl sind. Jedes Framwork für sich alleine 
währe je einfach zu benutzen.

P.S. Die C++ Programmieren konnen sich ja nicht mal auf 
Groß/Kleinschreibung der Substantive einigen. Wie wollt ihr euch auf ein 
einfach zu benutzendes Framework einigen?

von asdfasd (Gast)


Lesenswert?

> Kann man in c++ nicht auch irgendein klassen-framework basteln, dass
> paralleles programmieren vereinfacht.

Ja, geht.  Fang an ;-)

von Hannes J. (pnuebergang)


Lesenswert?

Messheini schrieb:
> Kann man in c++ nicht auch irgendein klassen-framework basteln,

Das System (mehr als ein Framework) heißt OpenMP und gibt es für C, C++ 
und Fortran.

Es ist allerdings, sagen wir mal, zur Lösung echter Probleme gedacht, 
nicht für irgendein Arduino-Kindergarten rumgemache.

> paralleles programmieren vereinfacht. bzw. es dann so einfach macht wie
> das hier:

Ach je. Also das übliche "Wasch mich, aber mach mich nicht nass.".

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Hannes Jaeger schrieb:
> Das System (mehr als ein Framework) heißt OpenMP und gibt es für C, C++
> und Fortran.

OpenMP ist eine ausgeklügelte Sache; es ist in erster Linie dazu da, 
seriell geschriebene Programme zu "parallelifizieren", fast ohne am Code 
etwas zu ändern.

Gewinnbringender ist es aber wahrscheinlich, gleich vom Algorithmus her 
einen parallelen Ansatz zu wählen. Für C/C++ kommen dazu außerdem in 
Frage: pthread und MPI.
https://de.wikipedia.org/wiki/Native_POSIX_Thread_Library
https://de.wikipedia.org/wiki/Message_Passing_Interface

von Klaus W. (mfgkw)


Lesenswert?

pthreads kann man bereits für alle alten C++-Versionen nehmen.
Außerdem lohnt sich da wie immer ein Blick zu boost.

Wenn man sich auf C++ 11 einlässt, geht es auch schon im Standard:
http://en.wikipedia.org/wiki/C%2B%2B11#Threading_facilities

von Noch einer (Gast)


Lesenswert?

Man muss sich halt auf das einlassen, was die verwendeten Frameworks 
benutzen.

War schon nerfig genug, QMutexLocker und pthread_mutex unter einen Hut 
zu bringen. Dazu dann noch die selbstgebastelten Lösungen der Libraries. 
Jetzt kommt auch noch std::mutex dazu.

Es gibt einfach zu viel.

von Rüdiger K. (sleipnir)


Lesenswert?

Wie von Herrn Wachtler schon angesprochen, bringt der aktuelle 
Sprachstandard C++11 eine brauchbare Unterstützung für die klassische 
Parallelprogrammierung mit:
http://de.cppreference.com/w/cpp/thread
http://baptiste-wicht.com/posts/2012/03/cpp11-concurrency-part1-start-threads.html
http://en.cppreference.com/w/cpp/thread/lock_guard
http://de.cppreference.com/w/cpp/thread/condition_variable

Aber auch Futures/Promises und sonstige Unterstützungen für "mach mal 
eben nebenbei" ist enthalten:
http://de.cppreference.com/w/cpp/thread/future
https://solarianprogrammer.com/2012/10/17/cpp-11-async-tutorial/


Wenn man sich eher für das ebenfalls schon angesprochene OpenMP 
interessiert, dann kann ich das folgende Buch nur wärmstens empfehlen:
http://www.amazon.de/OpenMP-Informatik-Fokus-Simon-Hoffmann/dp/3540731229/ref=sr_1_1?s=books&ie=UTF8&qid=1423128532&sr=1-1&keywords=OpenMP

Aber auch der Netzauftritt von OpenMP bietet schon gute Einstiegshilfen:
http://openmp.org/wp/resources/

Ansonsten gibt es da auch ganz neu OpenACC, welches die 
Parallelprogrammierung für GPU's und Mehrkern-CPU's unter einem Hut 
bringen will:
http://www.openacc-standard.org/

von Der Archivar (Gast)


Lesenswert?

"The nice thing about standards is that you have so many to choose from; 
furthermore, if you do not like any of them, you can just wait for next 
year's model."

-- Andrew S. Tanenbaum 1981

von Rüdiger K. (sleipnir)


Lesenswert?

Leider trifft das vor allem auf AMD zu. Die können vor lauter 
Ankündigungen nicht entscheiden, welche Sache sie für ihre an sich tolle 
Hardware endlich auch einmal richtig umsetzen wollen....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.